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

Volkan78220 Messages postés 1 Date d'inscription jeudi 7 février 2008 Statut Membre Dernière intervention 6 juin 2008 - 6 juin 2008 à 17:20
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 - 9 juin 2008 à 12:13
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

ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
9 juin 2008 à 12:13
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.
0
Rejoignez-nous