Im essayant de faire une simple rotation d'un cube sur l'axe x et y:rotation de la matrice opengl escouades
Je veux tourner toujours le cube sur l'axe x d'un montant x et faites pivoter le cube sur la Yaxis par un organisme indépendant montant y de la rotation de l'axe x
premier i naïvement fait:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
puis
mais que première ov fait pivoter er x tourne alors sur y Je veux tourner sur y indépendamment de l'accès x.
j'ai commencé à regarder dans escouades, j'ai donc essayé:
Quaternion Rotation1;
Rotation1.createFromAxisAngle(0,1, 0, globalRotateY);
Rotation1.normalize();
Quaternion Rotation2;
Rotation2.createFromAxisAngle(1,0, 0, globalRotateX);
Rotation2.normalize();
GLfloat Matrix[16];
Quaternion q=Rotation2 * Rotation1;
q.createMatrix(Matrix);
glMultMatrixf(Matrix);
qui fait juste presque exactement ce qui a été accompli faire 2 glRotates consécutifs ... donc je pense im manque une étape ou 2.
est quaternions le chemin à parcourir ou devrais-je utiliser quelque chose de différent? ET si les quaternions sont le chemin à parcourir, quelles étapes puis-je ajouter pour faire tourner le cube indépendamment de chaque axe? je pense que quelqu'un d'autre a le même problème: Rotating OpenGL scene in 2 axes
ok laissez-moi le dire de cette façon ... ce que je veux faire est de tourner un cube à l'aide de la souris. Je veux à gauche de contrôler la rotation de l'axe des écrans, puis de contrôler les mouvements de rotation de l'axe x. Je veux qu'ils tournent indépendamment de l'autre axe mais ne tournent que sur l'axe global des écrans. Si je fais 2 glRotations je ne suis pas ce comportement parce que la rotation d'un axe mutliplies l'autre. – yeahdixon
Par exemple la rotation d'un cube: aucune opération de rotations ne révèle un seul côté alors je fais glRotatef (90,1,0,0); \t glRotatef (45,0,1,0); \t gives \t me donne un cube incliné (diamant), quand je voulais un cube qui avait son coin face à la caméra qui serait en fait le résultat de l'échange des opérations: \t glRotatef (45,0,1,0); \t glRotatef (90,1,0,0); Je voudrais juste échanger les rotations des commandes, mais qui se jette dans les mêmes problèmes lorsque les valeurs d'angle sont retournées. – yeahdixon