[débutant] Axe de rotation caméra

Résolu
Bornibus Messages postés 3 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 27 février 2005 - 26 févr. 2005 à 18:44
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.

2 réponses

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
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.
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 févr. 2005 à 19:20
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.
0
Rejoignez-nous