[Trigonométrie] Disposition d'éléments
Bonjour
Je poste de préférence dans ce forum plutôt que dans celui de Java.
Voici mon problème car mes souvenirs de trigonométrie se montrent fort lointains.
J'ai programmé une application de visualisation de réseaux moléculaires codé en Java. Chaque molécule est un rectangle avec une liaison qui est une ligne. Je souhaite pouvoir disposer mes éléments sous forme d'un cercle. Voici comment je procède :
Code:
1 2 3 4 5 6 7 8 9
|
for (int i=0; i<nodes.length; i++) {
nodes[i].animateToPositionScaleRotation(x0, y0, 1, 0, 1000);
double angle = ((i*Math.PI)/nodes.length);
x = (x0+=110) * Math.cos(angle);
y = (y0+=110) * Math.sin(angle);
nodes[i].animateToPositionScaleRotation(x, y, 1, angle, 1000);
System.out.println("Element "+i+" en position x="+x+" y="+y);
} |
Pour chacun de mes éléments, je calcule l'angle qui doit lui être associé sur un cercle trigonométrique. Puis, normalement, la position en x et en y est calculé en fonction de cet angle. Enfin, chaque élément (ou noeud) est placé.
L'ennui, c'est que j'obtiens une superbe diagonale !
Où me suis-je planté ?
@++
Re: [Trigonométrie] Disposition d'éléments
Citation:
Envoyé par GLDavid
Code:
1 2 3
| double angle = ((i*Math.PI)/nodes.length);
x = (x0+=110) * Math.cos(angle);
y = (y0+=110) * Math.sin(angle); |
Un cercle complet c'est 2*pi. De plus x0+=110 ajoute 110 à x0 à chaque itération.
Code:
1 2 3
| double angle = ((i*2*Math.PI)/nodes.length);
x = x0 + 110 * Math.cos(angle);
y = y0 + 110 * Math.sin(angle); |
J'ai pas vérifié (pas de compilo java sous la main), mais ça devrait déjà être mieux.