Bonjour � tous,

Je suis en train d'essayer de cr�er un changement de point de vu dans un projet MFC, l'id�e est qu'avec le mouvement en X et Y de la sourie (quand le clic gauche est actif) on fasse tourner la camera via la fonction GluLookAt autour d'un point central et toujours orient� vers celui ci.

Ma fonction GlutLookAt est utilis�e tel que suit :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
gluLookAt(pDoc->Eyex,pDoc->Eyey,pDoc->Eyez,pDoc->Eyex+pDoc->Directx,pDoc->Eyey+pDoc->Directy,pDoc->Eyez+pDoc->Directz,0,1,0);

La position de la cam�ra est donc donn�e par Eyex, Eyey et Eyez.
Le point autour duquel je voudrai faire cette rotation est donn� par les coordonn�es center_x, center_y et center_z.

Ma fonction pour faire cela est telle que suis :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
if(IsLButtonDown==TRUE)
    {
     // Get a pointer to the document object
     COpenGLViewClassDoc * pDoc = GetDocument();
     double angle_x, angle_z, r;
     r = sqrt((pDoc->Eyex - pDoc->center_x)*(pDoc->Eyex - pDoc->center_x) + (pDoc->Eyey - pDoc->center_y) * (pDoc->Eyey - pDoc->center_y) + (pDoc->Eyez - pDoc->center_z) * (pDoc->Eyez - pDoc->center_z));
     angle_x = atan( (pDoc->center_y - pDoc->Eyey)/(pDoc->center_x - pDoc->Eyex) );
     angle_z = atan( (pDoc->center_z - pDoc->Eyez)/(pDoc->center_y - pDoc->Eyey) );
     angle_x -= (point.x - CurrentPosition.x) / 20.0 ;
     angle_z -= (point.y - CurrentPosition.y) / 20.0 ;
     pDoc->Eyex = r * cos(angle_x);
     pDoc->Eyey = r * sin(angle_x);
     pDoc->Eyez = r * sin(angle_z);
     CurrentPosition = point ;
     InvalidateRect(FALSE);
     }
else
     {
     CView::OnMouseMove(nFlags, point);
     }
}


l'angle_x est l'angle entre le vecteur X et le vecteur [centre, eye] dans le plan X,Y
l'angle_z est l'angle entre le plan X,Y et le vecteur [centre, eye] dans le plan Z, [centre; projection de eye sur plan X,Y]

J'essaye pour l'instant d'avoir la bonne trajectoire pour les coordonn�es X,Y,Z de GluLookAt, je n'ai pas encore cod� la partie d'orientation.
Mes projections me semblent bonne mais au final le script fait un peu n'importe quoi � l'�cran (c'est bien qu'un probl�me de math�matique, car ma fonction OnMouseMove fonctionne correctement quand je fait faire � ma cam�ra que des translations dans un plan).

Avez vous une id�e d'o� cela peux venir ? O� une autre mani�re de faire ?

Merci d'avance pour votre aide.