Bonjour à tous,
Dans un espace OpenGL comment faire pour que les transformations (rotations, zooms, ...) ne se fassent pas toujours par rapport au point 0,0,0 ?
D'avance merci.
Bonjour à tous,
Dans un espace OpenGL comment faire pour que les transformations (rotations, zooms, ...) ne se fassent pas toujours par rapport au point 0,0,0 ?
D'avance merci.
Salut !
Sauf erreur de ma part, il me semble que dans les prototypes des fonctions de transformations tel glRotatef(angle, x, y, z), tu peux préciser tes coordonnées de ton centre de rotation.
Voilà, j'espère t'avoir aidé.
@+++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code :tagcode: ni le tag :resolu:
Je ne répond à aucune question technique par MP.
Dans ma fenêtre OpenGL j'ai un cube que je peux faire pivoter sur l'axe Y et l'axe X lorsque je déplace la souris (et donc selon les coordonnées actuelles du curseur de la souris). J'utlise pour cela 2 fois la fonction glRotated (une pour chaque axe) :
Mais je ne sais pas comment utiliser les paramètres pour spécifier un autre centre de rotation qui pour le moment est toujours 0,0,0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 glRotated(PosX,0.0,1.0,0.0); glRotated(PosY,1.0,0.0,0.0);
Si le centre de mon cube est 0,0,0 et qu'il est un côté de 10 comment spécifier par exemple que le centre de rotation devienne 5,5,-5 (ou le coin droit si tu préfères !)
Merci de ton aide
En openGL tu peux considérer que toutes tes rotations se font par rapport à l'origine (0,0,0). Donc pour tourner autour d'un autre point, il faut translater ton objet pour positionnner en qque sorte ton pivot sur l'origine, faire ta rotation, puis retranslater ton objet, de maniere inverse a la translation precedente. Par exemple pour ton cube :
glTranslate( 5, 5, -5)
glRotate(ma rotation)
flTranslate( -5, -5, 5)
Draw(monCube)
Partager