Bonsoir, je doit gérer une lasse caméra dans un projet en openGL . Je susi entrain de mettre au point plusieurs fonctions et l'une me pose problème. J'ai reprit le code d'un tutorial sur le web (qui semble très correct), le résultat escompté est là, mais au bout de quelques itératins des imprécisions apparaissent et les calculs sont faussé ( mes valeurs en X et Z finissent pas tendre vers zéro )

Voila la fonction qui fait une rotation selon un angle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
void Camera::RotationY(float Angle)
{
	// Set Angle in Rad.
	Angle = static_cast<float>( (Angle/180)*M_PI );
 
	m_Position.x = (m_Position.x - m_Focalisation->x)*cosf(Angle) - (m_Position.z - m_Focalisation->z)*sinf(Angle) + m_Focalisation->x  ;
	//m_Position.y = 0 ;
	m_Position.z = (m_Position.x - m_Focalisation->x)*sinf(Angle) + (m_Position.z - m_Focalisation->z)*cosf(Angle) + m_Focalisation->z ;
 
}
Je lui passe la valeur 10 par exemple, suffsament de fois pour faire un tour, puis2.... à chaque tour je constate que je me rapproche de mes axes ( X et Z diminue eet tendent vers zéro ). Au bout d'a peine 5 tour je suis deja tres proche de mes axes ....

Je pense que cea vient soit de mon approximation de PI, soit des fonction cos et sin ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
#define M_PI     3.14159265358979323846
cos et sin proviennent de math.h .... enfin <cmath> .

edit : mes vecteurs de positions , focalisations sont des floats .