Tout d'abord mon objectif est de faire la rotation de plusieurs points autour de 3 axes : XYZ, alors voilà dans un premier temps j'ai fais des recherches et j'ai 3 méthodes qui me permettent de faire ces rotations les voici (j'utilise le langage Java):
public void rotateX() {
for(int i = 0; i < points.size(); i++) {
Vector vector = points.get(i);
double cosTheta = Math.cos(eulerAngle.getX());
double sinTheta = Math.sin(eulerAngle.getX());
double y = vector.getY();
double z = vector.getZ();
vector.setY(y * cosTheta - z * sinTheta);
vector.setZ(z * cosTheta + y * sinTheta);
}
}
public void rotateY() {
for(int i = 0; i < points.size(); i++) {
Vector vector = points.get(i);
double cosTheta = Math.cos(eulerAngle.getY());
double sinTheta = Math.sin(eulerAngle.getY());
double x = vector.getX();
double z = vector.getZ();
vector.setX(x * cosTheta + z * sinTheta);
vector.setZ(z * cosTheta - x * sinTheta);
}
}
public void rotateZ() {
for(int i = 0; i < points.size(); i++) {
Vector vector = points.get(i);
double cosTheta = Math.cos(eulerAngle.getZ());
double sinTheta = Math.sin(eulerAngle.getZ());
double x = vector.getX();
double y = vector.getY();
vector.setX(x * cosTheta - y * sinTheta);
vector.setY(y * cosTheta + x * sinTheta);
}
}
Alors voilà je me sers aussi de Geogebra comme appui pour voir ce qui se passe, et il semblerait que ces méthodes effectuent les rotations seulement pour un repère ou Z est définit comme la "hauteur":
Alors que dans mon environnement le Z est inversé par le Y comme ceci:
La seule méthode qui marche est celle de la rotation d'axe Y, et j'ai remarqué que quand Z n'est pas inversé par Y, la rotation autour le l'axe Y correspond à celle de l'axe Z dans un repère ou Y serait la "hauteur" en occurrence c'est ce que je recherche. Si quelqu'un pourrait m'éclairer sur le sujet ou me donner les formules pour par rapport à mon environnement, ou juste me dire si je fais fausse route ce serait génial, merci (ps je n'ai jamais utilisé de repère en 3 dimensions avant ce projet).
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script