use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.
the class EspaceInteractif method deplacer.
/**
* Déplace l'espace de la toile selon la variation des positions du curseur.
*
* @param positionCurseur la position virtuelle actuelle du curseur.
* @see EspaceInteractif#positionPrecendenteCurseur
*/
private void deplacer(@NotNull final Vector2D positionCurseur) {
final Vector2D deplacement = positionCurseur.subtract(positionPrecendenteCurseur);
final Vector2D nouvelleOrigine = repere.getOrigineVirtuelle().add(deplacement);
repere.setOrigineVirtuelle(new Vector2D((int) nouvelleOrigine.getX(), (int) nouvelleOrigine.getY()));
positionPrecendenteCurseur = positionCurseur;
}
use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.
the class Aire method abscisses.
/**
* Récupère l'ensemble des abscisses des points dans leur séquence.
*
* @return les abscisses de points.
*/
private static double[] abscisses(@NotNull final Vector2D[] points) {
final double[] abscisses = new double[points.length];
int i = 0;
for (final Vector2D point : points) {
abscisses[i] = point.getX();
i++;
}
return abscisses;
}
use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.
the class Aire method distance.
@Override
public double distance(@NotNull final Vector2D curseur, @NotNull final Repere repere) {
if (positionDansAire(curseur, repere)) {
return 0;
}
Vector2D premierPoint = null;
Vector2D point1 = null;
Vector2D point2;
double distance = Double.MAX_VALUE;
int i = 0;
final Iterator<ObjectProperty<Vector2D>> iteration = points.iterator();
while (i < points.size()) {
if (i == 0) {
point1 = repere.positionVirtuelle(iteration.next().getValue());
premierPoint = point1;
}
i++;
if (i < points.size()) {
point2 = repere.positionVirtuelle(iteration.next().getValue());
} else {
point2 = premierPoint;
}
distance = Math.min(distance, new Segment(point1, point2, null).distance(curseur));
point1 = point2;
}
return distance;
}
use of org.apache.commons.math3.geometry.euclidean.twod.Vector2D in project graphysica by Graphysica.
the class AxeHorizontal method dessiner.
@Override
public void dessiner(@NotNull final Canvas toile, @NotNull final Repere repere) {
final double[] graduationsVerticales = repere.graduationsVerticales(toile.getWidth(), getEspacement());
final double[] abscissesReelles = repere.abscissesReelles(graduationsVerticales);
actualiserEtiquettes(abscissesReelles, formatValeurs(repere));
final double positionReelleAxe = positionReelleAxe(toile, repere);
fleche.setOrigine(new Vector2D(repere.abscisseReelle(0), positionReelleAxe));
fleche.setArrivee(new Vector2D(repere.abscisseReelle(toile.getWidth()), positionReelleAxe));
dessinerGraduations(toile, graduationsVerticales, 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 AxeHorizontal method actualiserPositionEtiquettes.
/**
* Actualise la position des étiquettes de cet axe.
*
* @param toile la toile affichant cet axe.
* @param repere le repère de l'espace à graduer.
*/
private void actualiserPositionEtiquettes(@NotNull final Canvas toile, @NotNull final Repere repere) {
final double ordonneeReelleAxe = positionReelleAxe(toile, repere);
positionVirtuelle = positionVirtuelleAxe(toile, repere);
final Iterator<Map.Entry<Double, Etiquette>> iteration = etiquettes.entrySet().iterator();
while (iteration.hasNext()) {
final Map.Entry<Double, Etiquette> entree = iteration.next();
final double valeur = entree.getKey();
final Etiquette etiquette = entree.getValue();
etiquette.setPositionAncrage(new Vector2D(valeur, ordonneeReelleAxe));
if (positionVirtuelle >= toile.getHeight() - etiquette.getHauteur()) {
etiquette.setPositionRelative(new Vector2D(-etiquette.getLargeur() / 2, toile.getHeight() - positionVirtuelle - etiquette.getHauteur()));
} else {
etiquette.setPositionRelative(new Vector2D(-etiquette.getLargeur() / 2, 0));
}
}
}
Aggregations