J'ai un point à 0,0,0 Je fais pivoter le point 30 deg autour de l'axe Y, puis 30 deg autour de l'axe X. Je veux ensuite déplacer le point 10 unités vers l'avant.déplacer un point dans l'espace 3D
Je sais comment travailler sur la nouvelle position X et Y
MovementX = cos(angle) * MoveDistance;
MovementY = sin(angle) * MoveDistance;
Mais je compris que ces valeurs changent à cause de Z, sera-ce pas?
Comment puis-je calculer Z et ai-je correctement calculé X et Y?
Merci!
Utiliser des matrices de rotation. :) Ils prennent un investissement considérable d'efforts pour apprendre, mais une fois que vous savez comment les utiliser, tout devient beaucoup moins de travail. – Artelius
Eh bien, un point à (0,0,0) tourné à n'importe quel angle sur l'axe x, y ou z restera a (0,0,0). En supposant que «vers l'avant» signifie la direction pointant le long de l'axe z, les composantes du vecteur de mouvement deviennent: MovementX = 0; MovementY = 0; MouvementZ = 10. Sérieusement, essayez de demander exactement ce que vous voulez savoir. – hirschhornsalz
Ok, je suppose que l'équivalent en OpenGL serait ... glRotatef (30.0f, 0.0f, 1.0f, 0.0f); glRotatef (30,0f, 1,0f, 0,0f, 0,0f); GlTranslate (0,0f, 0,0f, 10,0f); Mais je veux le faire manuellement afin que je connaisse les coordonnées du monde du point (pour que je puisse le comparer à d'autres coordonnées) – michael