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;
}
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));
}
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);
}
}
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);
});
}
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());
}
}
Aggregations