Search in sources :

Example 16 with Vector2D

use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.

the class Aire method ordonnees.

/**
 * Récupère l'ensemble des ordonnées des points dans leur séquence.
 *
 * @return les ordonnées de points.
 */
private static double[] ordonnees(@NotNull final Vector2D[] points) {
    final double[] ordonnees = new double[points.length];
    int i = 0;
    for (final Vector2D point : points) {
        ordonnees[i] = point.getY();
        i++;
    }
    return ordonnees;
}
Also used : Vector2D(org.apache.commons.math3.geometry.euclidean.twod.Vector2D)

Example 17 with Vector2D

use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.

the class Angle method getAngle.

/**
 * Calcule l'angle entre les vecteurs partant du sommet vers les deux
 * points.
 *
 * @return la valeur de l'angle représenté.
 * @throws MathArithmeticException si le sommet est confondu à l'un ou
 * l'autre des points de l'angle.
 * @see Angle#isDefini()
 */
public double getAngle() throws MathArithmeticException {
    final Vector2D vecteur1 = getPoint1().subtract(getSommet());
    final Vector2D vecteur2 = getPoint2().subtract(getSommet());
    return -FastMath.toDegrees(angle(vecteur1, vecteur2));
}
Also used : Vector2D(org.apache.commons.math3.geometry.euclidean.twod.Vector2D)

Example 18 with Vector2D

use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.

the class Angle method dessiner.

/**
 * Dessine l'angle en tant que secteur dont l'ouverture est comprise entre
 * 0º et 180º.
 *
 * @param toile la toile sur laquelle dessiner l'angle.
 * @param repere le repère de l'espace.
 */
@Override
public void dessiner(@NotNull final Canvas toile, @NotNull final Repere repere) {
    if (isDefini()) {
        // Adapter l'angle à la convention du tracé
        double angle = -getAngle();
        double angleInitial = -getAngleInitial();
        // Restreindre l'angle du tracé à [0º, 180º]
        if (angle > 180) {
            angle -= 360;
            angleInitial += 360;
        }
        final int rayon = taille.getValue() * MULTIPLICATEUR_RAYON;
        final Vector2D centreVirtuel = repere.positionVirtuelle(getSommet());
        final GraphicsContext contexteGraphique = toile.getGraphicsContext2D();
        final Color couleurRemplissage = couleurTransparente(getCouleur(), opacite.getValue());
        contexteGraphique.setFill(couleurRemplissage);
        contexteGraphique.fillArc(centreVirtuel.getX() - rayon, centreVirtuel.getY() - rayon, 2 * rayon, 2 * rayon, angleInitial, angle, ArcType.ROUND);
        contexteGraphique.setStroke(getCouleur());
        contexteGraphique.setLineWidth(1);
        contexteGraphique.strokeArc(centreVirtuel.getX() - rayon, centreVirtuel.getY() - rayon, 2 * rayon, 2 * rayon, angleInitial, angle, ArcType.ROUND);
    }
}
Also used : Vector2D(org.apache.commons.math3.geometry.euclidean.twod.Vector2D) GraphicsContext(javafx.scene.canvas.GraphicsContext) Color(javafx.scene.paint.Color)

Example 19 with Vector2D

use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.

the class AxeVertical method dessiner.

@Override
public void dessiner(@NotNull final Canvas toile, @NotNull final Repere repere) {
    final double[] graduationsHorizontales = repere.graduationsHorizontales(toile.getHeight(), getEspacement());
    final double[] ordonneesReelles = repere.ordonneesReellees(graduationsHorizontales);
    actualiserEtiquettes(ordonneesReelles, formatValeurs(repere));
    final double positionReelleAxe = positionReelleAxe(toile, repere);
    fleche.setOrigine(new Vector2D(positionReelleAxe, repere.ordonneeReelle(toile.getHeight())));
    fleche.setArrivee(new Vector2D(positionReelleAxe, repere.ordonneeReelle(0)));
    dessinerGraduations(toile, graduationsHorizontales, positionVirtuelleAxe(toile, repere));
    fleche.dessiner(toile, repere);
    actualiserPositionEtiquettes(toile, repere);
    etiquettes.values().forEach((etiquette) -> {
        etiquette.dessiner(toile, repere);
    });
}
Also used : Vector2D(org.apache.commons.math3.geometry.euclidean.twod.Vector2D)

Example 20 with Vector2D

use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.

the class Droite method calculerOrigineEtArrivee.

/**
 * Calcule la position des points d'origine et d'arrivée de la trace de
 * cette droite aux bornes de la toile.
 *
 * @param toile les contraintes du tracé de la droite.
 * @param repere le repère de l'espace de dessin de la droite.
 */
@Override
protected void calculerOrigineEtArrivee(@NotNull final Canvas toile, @NotNull final Repere repere) {
    final Vector2D point1Virtuel = repere.positionVirtuelle(getPoint1());
    final Vector2D point2Virtuel = repere.positionVirtuelle(getPoint2());
    variationAbscisses = point2Virtuel.getX() - point1Virtuel.getX();
    variationOrdonnees = point2Virtuel.getY() - point1Virtuel.getY();
    if (Math.abs(variationAbscisses) > Math.abs(variationOrdonnees)) {
        // La droite est définie même si {@code variationOrdonnees == 0}
        final double m = variationOrdonnees / variationAbscisses;
        // La droite est d'équation: y = m * x + b
        final double b = point1Virtuel.getY() - m * point1Virtuel.getX();
        // Soient les points P(xmin, yP) et  Q(xmax, yQ)
        final double yP = b;
        final double yQ = m * toile.getWidth() + b;
        // P
        origineTrace = new Vector2D(0, yP);
        // Q
        arriveeTrace = new Vector2D(toile.getWidth(), yQ);
    } else {
        // La droite est définie même si {@code variationAbscisses == 0}
        final double m = variationAbscisses / variationOrdonnees;
        // La droite est d'équation x = m * y + b
        final double b = point1Virtuel.getX() - m * point1Virtuel.getY();
        // Soient les points P(xP, ymin) et Q(xQ, ymax)
        final double xP = b;
        final double xQ = m * toile.getHeight() + b;
        // P
        origineTrace = new Vector2D(xP, 0);
        // Q
        arriveeTrace = new Vector2D(xQ, toile.getHeight());
    }
}
Also used : Vector2D(org.apache.commons.math3.geometry.euclidean.twod.Vector2D)

Aggregations

Vector2D (org.apache.commons.math3.geometry.euclidean.twod.Vector2D)26 Map (java.util.Map)6 ArrayList (java.util.ArrayList)5 HashSet (java.util.HashSet)4 List (java.util.List)4 Set (java.util.Set)4 Collectors (java.util.stream.Collectors)4 Point2d (javax.vecmath.Point2d)4 Point3d (javax.vecmath.Point3d)4 Tweed (org.twak.tweed.Tweed)4 TweedSettings (org.twak.tweed.TweedSettings)4 Line (org.twak.utils.Line)4 Material (com.jme3.material.Material)3 ColorRGBA (com.jme3.math.ColorRGBA)3 Geometry (com.jme3.scene.Geometry)3 Mesh (com.jme3.scene.Mesh)3 Node (com.jme3.scene.Node)3 VertexBuffer (com.jme3.scene.VertexBuffer)3 Collections (java.util.Collections)3 Comparator (java.util.Comparator)3