Partage
  • Partager sur Facebook
  • Partager sur Twitter

[OpenGL]Dessiner un pentagone

Avec GL_LINE_LOOP

Sujet résolu
    30 mai 2007 à 14:27:31

    Bonjour.

    Depuis hier j'essaye de dessiner un pentagone avec OpenGL.

    Je sais que l'angle formé de toute les diagonales du pentagone est de 72°.
    Donc j'ai placé mon premier point après fait une rotation avec glRotated(72,0,0,1);
    Le seul problème c'est que si j'utilise glBegin(GL_LINE_LOOP); (ou GL_LINE_STRIP plutôt) les lignes ne se dessinent pas.
    C'est assez compréhensible regarder mon code :

    for (int i=0; i <5; i++)
    {
         
          glBegin(GL_TRIANGLES);
          glVertex2d(1,1);
          glEnd();
          glRotated(72,0,0,1);
    }


    C'est normal je ne place qu'un seul point dans un même glBegin/glEnd (la boucle en refait chaque fois) or pour former une ligne je dois en placer 2. Je ne peux pas mettre un seul glVertex et un glRotated à l'intérieur puisqu'on ne peut pas mettre de transformation dans un glBegin/glEnd.

    Alors j'ai aussi essayer ça :
    for (int i=0; i <5; i++)
    {
        glBegin(GL_TRIANGLES);
        glVertex2d(0,0);
        glVertex2d(2.75,2);
        glVertex2d(2.75,-2);
        glEnd();
        glRotated(72,0,0,1);
    }

    Je trace un triangle et je tourne de 72° pour former un pentagone.
    La bingo ça marche ! mais ce n'est pas précis ! mon 2.75 je l'ai trouvé en essayant plusieurs valeurs jusqu'à trouver la bonne donc ce n'est pas très rigoureux.
    Si quelqu'un aurait une solution ça m'aiderais bien. :)
    Dommage que les points ne continuent pas à se relier avec GL_LINE_LOOP ou STRIP en plaçant qu'un seul point pour faire une rotation de 72°...

    Sinon il n'existerait pas une équation du pentagone comme le cercle : (x-a)² + (y-a)² = r²... ??
    En placant tous le spoints un par un ?

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      30 mai 2007 à 15:30:26

      Salut.
      Tu te prend trop la tête. ^^

      Pour n'importe quel polygone en 2D, tu peux utiliser facilement les coordonnées polaires pour en venir à bout.

      Tu prend une variable qui contient le rayon de ton pentagone, et une autre qui sert à stocker un angle.
      Sachant qu'un pentagone à 5 sommets, tu calcule que l'angle entre chaque sommet est de 360/5 = 72°

      Et maintenant tu calcul la position absolue des sommets à partir des coordonnées polaires que tu vient de choisir.

      Toutes les formules sont dans une annexe du tuto de Kayl sur OpenGL.
      • Partager sur Facebook
      • Partager sur Twitter
        30 mai 2007 à 15:56:08


        Raaa en fait je viens de trouver une autre solution et qui peut aussi marcher pour x polygone :

        for (int i = 0; i<10; i++)
        {       
        glBegin(GL_LINES);
        glVertex3d(0,0,0.1);
        glVertex3d(0,0.5,0.1);
        glEnd();
        glTranslated(0,0.5,0);
        glRotated(36,0,0,1);
        }


        Mais merci je vais préféré l'utilisation des coordonnées polaires voilà ce que j'ai fait avec :

        for (int i = 0; i<5; i++)
        {   
        glBegin(GL_LINES);
        glVertex3d(1,0,0.1);
        glVertex3d(cos(72*M_PI/180),sin(72*M_PI/180),0.1);
        glEnd();
        glRotated(72,0,0,1);
        }


        Enfin cette méthode oblige d'inclure math.h et oblige l'utilisation de sin et de cos contrairement à ma méthode où l'on a pas besoin d'include math.h et même pas besoin de cos et de sin :p.

        Sauf qu'avec ma méthode je n'arrive pas a me placer au centre de la figure dommage...

        Bref merci a+ et résolu
        • Partager sur Facebook
        • Partager sur Twitter
          19 juin 2007 à 14:47:47

          moi j'utilise une autre formule

          180(x-2)/x = 180(5-2)/5 =180*3/5 =108°
          l'angle que forme les cotés d'un pentagone =108° ^^
          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2007 à 14:01:39

            Peut-être xD.. mais le sujet a été clot il y a bien des semaines... enfin de toute façon, je m'interesse aux dodécaèdres maintenant alors...
            • Partager sur Facebook
            • Partager sur Twitter
              21 juin 2007 à 10:15:04


              (quand j'ai vu que ce suget etait resolu depui un certain temps c'etait trop tard :heu: )
              • Partager sur Facebook
              • Partager sur Twitter

              [OpenGL]Dessiner un pentagone

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown