Math et OpenGL

jpc66 Messages postés 3 Date d'inscription jeudi 19 janvier 2006 Statut Membre Dernière intervention 31 janvier 2006 - 31 janv. 2006 à 17:49
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 - 25 juin 2006 à 19:45
jpc66

Voici mon petit problème,

J'ai en vecteur orthonormé VA et un Plan PA defini par deux vecteur orthonormé, quelle formule je doit utiliser pour calculé l'angle de rotation entre PA et VA.

Example OpenGL

// Dessine le vecteur VA
glBegin(GL_LINES)
glVertex3d(0,0,0);
glVertex3d(x,y,z);
glEnd();

// Ammène le vecteur VA perpendiculaire au plan Z d'OpenGL
glRotatef(AngleX,1,0,0) ??????????????????????????????????? Quelle valeur a AngleX
glRotatef(AbgleY,0,1,0) ???????????????????????????????? Quelle valeur a AngleY
glRotatef(AngleZ,0,0,1) ?????????????????????????? Quelle valeur a AngleZ

// Dessine un cylindre autour du vecteur VA
glCylindre(obj,2,2,Sqrt(x*x+y*y+z*z),5,5)


Merci à vous.

1 réponse

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
25 juin 2006 à 19:45
Ta question n'est pas très claire:
<li>Qu'est-ce qu'un vecteur "orthonormé"? Un vecteur unitaire?</li><li>Qu'est-ce que 2 vecteurs "orthonormés"? Une base orthonormée du plan?</li><li>Enfin si le vecteur (x,y,z) est "orthonormé" (unitaire?), pourquoi écris-tu:</li>glCylindre(obj,2,2,Sqrt(x*x+y*y+z*z),5,5)
En effet, si le vecteur est unitaire, Sqrt(x*x+y*y+z*z) devrait être égal à 1...

Donc, si j'ai bien réussi à traduire ta question, tu veux trouver des formules de rotations pour passer d'un vecteur unitaire à un autre. Dans ce cas là, seules 2 rotations suffisent. Je peux te donner les formules des rotations qui font passer de la direction du vecteur u=(1,0,0) à celle du vecteur v=(x,y,z)(pas nécessairement unitaire):
O1:=ArcTan2(z,x); //Angle de rotation selon (Oy) en radians
O2:=ArcTan2(y,Sqrt(x*x+z*z)); //Angle de rotation selon (Oz) en radians
glRotatef(O1*180/Pi,0,1,0);
glRotatef(O2*180/Pi,0,0,1);
//Là tu peux tracer ton cylindre comme s'il était centré sur l'axe (Ox)

Ces formules ne sont rien d'autre que les formules de passage en coordonnées sphériques dans l'espace.
0
Rejoignez-nous