Partage
  • Partager sur Facebook
  • Partager sur Twitter

cercle en openGL avec glut

Sujet résolu
    24 janvier 2007 à 23:44:18

    salut tout le monde je viens de commencer a faire de l'infographie et j'essaye de creer un cercle en 2D avec openGL et glut
    voici mon code mais il foire:
    void dessiner(void)
     {     
             int i,mycos,mysin;
             double Pi=3.14;
     /* effacement de l'image avec la couleur de fond */
     glClear(GL_COLOR_BUFFER_BIT);
     /*caracteristiques de la figure*/
     glPolygonMode(GL_FRONT,GL_FILL);
      /* Dessin du polygone */

    glBegin(GL_POLYGON);
    for (i=0 ; i<100 ; i++) { // COUTEUX !
    mycos = cos(i*2*Pi/100); // COUTEUX !
    mysin = sin(i*2*Pi/100);
    glVertex2f(mycos, mysin);
    }
    glEnd();


     /* on force l'affichage du resultat */
     glFlush();

     return;
     }

    si vous avez une autre idee pour faire, merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2007 à 23:48:25

      tu veux dessiner un cercle pixel à pixel c'est ça ?
      regarde du côté de l'algo de Bresenham. A l'origine c'est pour tracer des droites de manière optimale, mais ça peut s'adapter à un cercle. Gaffe, c'est pas forcément trivial.

      De toute manière, tu n'auras jamais un cercle parfait, on va tout gérer en segments et en polygones.
      • Partager sur Facebook
      • Partager sur Twitter
        25 janvier 2007 à 0:04:52

        Citation : khayyam

        regarde du côté de l'algo de Bresenham. A l'origine c'est pour tracer des droites de manière optimale, mais ça peut s'adapter à un cercle. Gaffe, c'est pas forcément trivial.



        Tu parles de ça :
        http://anomaly.developpez.com/tutoriel/sdl/partie2/

        ?

        C'est effectivement pas très trivial :-° (perso j'ai absolument rien compris)

        Sinon en OpenGL, tu peux dessiner facilement un fond, ou un cercle, comme ceci :

        glBegin(GL_POLYGON);
        for(i=0; i<nb_faces; i++)
        {
            angle = 2*M_PI*i/nb_faces;
            glVertex2f( cos(angle)*rayon, sin(angle)*rayon );
        }
        glEnd();


        Remplaces GL_POLYGON par GL_LINE_LOOP pour dessiner un cercle.
        • Partager sur Facebook
        • Partager sur Twitter
          25 janvier 2007 à 18:30:33

          enfaite comme je debute je progresse pas a pas je connais pas encore toutes les fonctions neanmoins j'ai trouver la solution a mon probleme: ca donne ca
          glBegin(GL_POLYGON);
           for (i=0 ; i<100 ; i++) {
           mycos = 0.9*cos(i*2* pi /100);
           mysin = 0.9*sin(i*2* pi /100);
           glColor3f(0.0,1.0,0.0);
           glVertex2f(mycos, mysin);
           }
           glEnd();

          merci pour le coup de main
          j'avais un probleme de variable et de taille...
          • Partager sur Facebook
          • Partager sur Twitter
            25 janvier 2007 à 18:46:21

            Fais gaffe avec pi=3.14, tu vas avoir des cercles carrés.
            Utilise M_PI, comme ça, si jamais pi change de valeur :lol: , en modifiant la macro dans math.h, pour tout les programmes, ça sera bon. :-°
            Le glColor3f, mieux vaut le mettre en dehors de la boucle ça fait moins d'appels (c'est donc plus rapide).
            • Partager sur Facebook
            • Partager sur Twitter
              25 janvier 2007 à 20:07:17

              Citation : Pole

              Fais gaffe avec pi=3.14, tu vas avoir des cercles carrés.
              Utilise M_PI, comme ça, si jamais pi change de valeur :lol: , en modifiant la macro dans math.h, pour tout les programmes, ça sera bon. :-°
              Le glColor3f, mieux vaut le mettre en dehors de la boucle ça fait moins d'appels (c'est donc plus rapide).



              Quoi ???

              1- Comment ça des cercles "carrés" ? 3.14 n'est pas très précis, mais peut quand même fournir de bons résultats.
              2- M_PI n'est pas "standard", la bonne façon de le définir est la suivate:

              #ifndef M_PI
               #define M_PI 3.14 /* a completer... */
              #endif


              3- Si on ne met pas les glVertex* dans la boucle, on obtient pas la forme souhaitée... Logique.
              • Partager sur Facebook
              • Partager sur Twitter
                25 janvier 2007 à 20:47:23

                1->Je suis de Marseille, j'exagère un peu (beaucoup même). On ne se retrouvera pas avec des carrés mais pour des gros cercles, ils seront grossiers.
                Edit: Finalement,ils ne le sont pas beaucoup. Mais un peu quand même et ça ne coûte rien.
                http://perso.orange.fr/polek/cercle.PNG
                le rouge->3
                le vert->3.1
                puis le jaune le bleu, et le violet.
                2->Je ne connais pas la définition de standard mais je sais que (en tout cas chez moi) M_PI est défini dans math.h. Inutile de le redéfinir.
                3->Logique. Mais j'ai mis les glColor. Inutile de le rappeler 100 fois alors qu'une fois suffit (parce qu'on garde la même couleur,sinon, il faut le réappeler).
                • Partager sur Facebook
                • Partager sur Twitter
                  25 janvier 2007 à 21:12:14

                  Je ne connais pas la 'norme' marseillaise :p

                  Citation : Pole

                  3->Logique. Mais j'ai mis les glColor. Inutile de le rappeler 100 fois alors qu'une fois suffit (parce qu'on garde la même couleur,sinon, il faut le réappeler).



                  Oups, mal lu.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  cercle en openGL avec glut

                  × 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