[débutant] Axe de rotation caméra [Résolu]

Messages postés
3
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005
- - Dernière réponse : Bornibus
Messages postés
3
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005
- 27 févr. 2005 à 16:47
Bonjour,





Actuellement sur un (petit) jeu
de stratégie qui se déroule sur un damier (imaginez-vous un jeu
d'échec), je désirerai changer l'axe de rotation de la caméra :


Je voudrais que ma caméra puisse tourner autour du damier (donc l'axe de
rotation serait le centre du damier). Pour le moment, ma caméra
tourne autour du coin inférieur gauche du damier.





Voici ci-dessous la fonction appelée par le callback gluDisplayFunc :

, 		----
void affichageDamier()

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

// positionnement de la caméra

gluLookAt(opg->posX,opg->posY,opg->posZ,opg->ciblX,opg->ciblY,opg->ciblZ,0,0,1);

glRotatef(-angley, 0.0, 0.0, 1.0);  // PROBLEME DE CENTRE DE GRAVITE MAL PLACE !!!

// affichage du damier et de ses occupants

opg->affichage(deroulement->surfaceDeJeu,deroulement,mouvement);

glutPostRedisplay();

glutSwapBuffers();

}







Merci de votre aide.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005
3
Merci
J'étais en effet parti sur ce principe mais j'avais vu dans un programme qu'il partait sur la notion de rotatef . Enfin, bon bref, je suis donc revenu à la bonne vieille trigonométrie.

Petite précision sur la solution, je pense que celle ci-dessous était plus convenable :


  opg->posX  = CENTRE_DAMIER_X + ( RAYON_DAMIER * sin(angle* PI/180) );

  opg->posY  = CENTRE_DAMIER_Y - ( RAYON_DAMIER * cos(angle* PI/180) );

  opg->posZ  = CENTRE_DAMIER_Z  + 10;

  opg->ciblX  = CENTRE_DAMIER_X;

  opg->ciblY  = CENTRE_DAMIER_Y;

  opg->ciblZ  =  CENTRE_DAMIER_Z;



  gluLookAt(opg->posX, opg->posY, opg->posZ, opg->ciblX, opg->ciblY, opg->ciblZ,0,0,1);





Merci de ton aide.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 220 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Bornibus
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
4
0
Merci
Ben ta juste a changer la position avec gluLookAt.




glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


glLoadIdentity();





// positionnement de la caméra

gluLookAt(centre_plateau_x + rayon * cos(angle_de_rotation) ,
centre_plateau_y + rayon*sin(angle_de_rotation), centre_plateau_z,
centre_plateau_x,
centre_plateau_y
,
centre_plateau_z
,0,0,1);



avec le rayon un peu plus grand que la moitié du coté de ton plateau.

Ta pas besoin d'utiliser de fonction rotatef pour faire tourner ta caméra.
Commenter la réponse de luhtor