Problème rencontré pour un projet de Mini Golf avec C en OpenGl: Rotation

Signaler
Messages postés
1
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
6 juin 2008
-
Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
-
Bonjour,
Je rencontre actuellement quelques problèmes lors de la réalisation de mon projet : un mini golf...

Rotation de la flèche indiquant la direction de la balle: La flèche ne tourne pas correctement autour de la balle. Elle ne revient pas en position initiale lorsque nous déplaçons la balle non plus. Voici mon code:

void display(void)
{
    glClear (GL_COLOR_BUFFER_BIT);
    glPushMatrix();
   
    Parcours1();

    trou(t);
    balle(b);
    glColor4f (1,1,0,0); // couleur de l'écriture
    ecrit(-1,4,"Mini Golf");
   
    curseur();
    glScalef (b.x, b.y, 1.0);
    glEnd();
    glFlush();
    glPopMatrix();

    glPushMatrix();
    //glTranslated(0,0,0);
    glRotated (angl, 0.0, 0.0, 1.0);
    //balle(b);
    fleche(b);
    glPopMatrix();

    balle(b);
   
}

void balle(Balle b) //balle
{
    /*if (b.force==0) // Si la force est nulle on affiche la flèche de direction
        {
            glBegin(GL_POLYGON);
                glColor4f (0,0,1,0);
                glVertex2d(b.x-0.05,b.y+(0));
                glVertex2d(b.x+0.05,b.y+0);
                glVertex2d(b.x,b.y+1);
                glEnd();
                glFlush();
        }*/
    glPushMatrix();
    glRasterPos3f(b.x, b.y, 0.0);        // position du centre de la balle
    glBegin(GL_POLYGON);
        glColor4f (b.R,b.G,b.B,0);             // couleur de la balle
        for(angle=0; angle<12; angle++)
        {
            glVertex3f(b.x+b.rayon*(float)cos(angle*3.14/6),b.y+b.rayon*(float)sin(angle*3.14/6), 0);
        }
    glPopMatrix();                           
    glEnd();
    glFlush();
}
 /* Fleche */
void fleche (Balle b)
{
    if (b.force==0) // Si la force est nulle on affiche la flèche de direction
        {
            glBegin(GL_POLYGON);
                glColor4f (0,0,1,0);
                glVertex2d(b.x-0.05,b.y+(0));
                glVertex2d(b.x+0.05,b.y);
                glVertex2d(b.x,b.y+0.5);
                glEnd();
                glFlush();
        }
glEnd();
glFlush();
}

Merci d'avance pour l'aide que vous pourrez m'apporter...

1 réponse

Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
1
Il me semble que pour faire tourner ta fleche en la laissant sur son axe il faut d'abord la translater en (0,0,0) puis faire les rotation qui t'interresse et enfin faire la translation inverse.


Je suis pas sur que ca repond a votre question.





<hr />

www.e-fitz.com

Encore plus de source et de tutoriels.