fiascototal_2501
Messages postés1Date d'inscriptionmercredi 1 novembre 2006StatutMembreDernière intervention 6 novembre 2006
-
6 nov. 2006 à 23:36
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
8 nov. 2006 à 01:42
Bonjours
Je debute en opengl, mais ai deja quelques notions.
Je voudrai faire un projet simple (pour le moment) en application console: ouvrir une fenetre opengl, et faire se deplacer un rectangle dessus.
Attention pas se deplacer n'importe comment, on tourne dans une direction avec les bouton gauche et droite, et avancer dans la direction choisi par la rotation grace au bouton haut et bas.
//*********************(debut de la def des matrices)*-**************
//*******(premiere matrice)***************
glpushmatrix();
if glfwGetKey(GLFW_KEY_UP) =1 then
y:=y+0.05;
if glfwGetKey(GLFW_KEY_DOWN) =1 then
y:=y-0.05;
if glfwGetKey(GLFW_KEY_LEFT) =1 then
x:=x+0.1 ;
if glfwGetKey(GLFW_KEY_RIGHT) =1 then
x:=x-0.1 ;
//*************(mouvement du rectangle)**********
gltranslatef(y*sin(x),y*cos(x),0);
glrotatef(x,0,0,1);
//**********(action pour quitter le programme)***********
if glfwGetKey(GLFW_KEY_ESC) = 1 Then break;
end;
glfwTerminate();
end.
Seulement voila il y a un probleme, et de taille!!
A chaque tour de boucle il fait une translation et une rotation donc si j'avance un peu (donc translation), et que je veux tourner, il se met à decrire des cercle autour du point de depard.
Je vois d'où vient le probleme: apres avoir avancer un peu, si je veux tourner alors je modifie l'angle de rotation, et donc je modifie les valeur de cosinus et sinus de gltranslatef, ce qui cree alors en meme temps une translation circulaire autour du point de depart.
Comment puis je regler ce probleme??
merci
ps:je n'ai pas trouvé comment mettre mon code d'exemple dans les espaces reservé pour mettre du code sur ce forum.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 8 nov. 2006 à 01:42
Deja je te conseille d'utiliser les commandes GlPush() et GlPop(), qui te permettent d'eviter ce genre de probleme.
En gros, ces fonctions te permettent d'effectuer un calcul matriciel, sans affecter l'ensemble de la scene. C'est pas facile a expliquer: GlPush sauvegarde la matrice et GlPop la restaure.
Le mieux serait que tu parte sur une bonne base, pour cela je te conseille fortement les tutoriels de sulaco, et surtout le debut de moteur 3D (tres tres basiques) qui te permet de commencer ton projet. Tu trouvera tout ca a cette adresse: http://www.sulaco.co.za/ Notemment:
http://www.sulaco.co.za/opengl_project_Basic_3D_engine.htm