IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Dessiner une ellipse en utilisant l'algorithme de Bresenham


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut Dessiner une ellipse en utilisant l'algorithme de Bresenham
    Bonjour je souhaiterai savoir comment on fait pour créer une ellipse en utilisant l'algorithme de bresenham.

    Je sais faire pour les cercle mais je n'arrive pas a trouver des explications claire sur la façon d'élaborer l'algorithme pour créer une ellipse.

    Je pense qu'il faut utiliser le même principe que pour le cercle mais comme sur une ellipse le rayon change tout le temps je ne vois pas comment faire.

    Je pense que je doit utiliser l'équation cartésienne de l'ellipse soit : b²x² + a²y² -b²a²=0 et comparer la distance avec le point du milieu qui est b²(x+1)² + a²(y-0.5)² - b²a² donc on aurait : b²(x+1)² + a²(y-0.5)² - b²a² - [b²x² + a²y² -b²a²] est-ce que c'est comme ça que l'on doit faire si quelqu'un a des cours ou pourrait me donner le cheminement à effectuer pour que je puisses comprendre.

    Merci par avance.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    il existe plein d’implémentation de cette algorithme sur google
    par exemple celui-ci me parait tres clair

    pour l'ellipse tu ne peut pas le faire en une passe comme pour un cercle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    PROCEDURE ellipse(a, b : integer) 
    DECLARATION 
       x,y : integer;
       d1,d2 : Reel;
    DEBUT
      // 2 iere phase  
       x <- 0 ;
       y <- b ;
      d1 <- b<sup>2</sup> - a<sup>2</sup>*b + a<sup>2</sup>/4 ;
      CALL allume_pixel(x,y) ;
      TANSQUE ( a<sup>2</sup>*(y-.5) > b<sup>2</sup>*(x+1) ) FAIRE
      DEBUTTANSQUE
        SI ( d1 >= 0 )  ALORS
        DEBUTSI
          d1 <- d1+ b<sup>2</sup>*(2*x+3) + a<sup>2</sup>*(-2*y+2) ;
          x <- x+1 ;
          y <- y -1  
       SINON 
           d1 <- d1+ b<sup>2</sup>*(2*x+3) ;
           x <- x+1 ;
        FINSI
        CALL allume_pixel(x,y) ; 
      FINTANSQUE
       // 2 ieme phase
       d2 <- b<sup>2</sup>*(x+.5)<sup>2</sup> + a<sup>2</sup>*(y-1)<sup>2</sup> - a<sup>2</sup>*b<sup>2</sup> ;
      TANSQUE ( y > 0 )  FAIRE
      DEBUTTANSQUE
         SI ( d2 < 0 )  ALORS 
         DEBUTSI
           d2 <- d2 +b<sup>2</sup>*(2*x+2) + a<sup>2</sup>*(-2*y+3) ;
           y <- y -1 ;
           x <- x+1 ; 
         SINON 
            d2 <- d2 + a<sup>2</sup>*(-2*y+3) ;
            y <- y -1 
         FINSI
         CALL allume_pixel(x,y) ; 
      FINTANSQUE
    FIN

    PS j'ai trouvé une autre document encore plus intéressant ici

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci anapurna pour ton aide j'ai télécharger pas mal de pdf et je suis aller sur pas mal de site et regarder pas mal de vidéo youtube mais cela reste très obscure je trouve concernant le pourquoi du comment ce que je cherche n'est pas un code mais la démarche qui est utiliser pour dire quelle pixel doit être allumé.

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    salut,

    le problème c'est que nous ne somme pas dans ta tète et que pour savoir ce qui te pose le problème il faut que l'on arrive a déterminer ou tu bloque

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    j'aimerai trouver un cours sur les ellipse en utilisant l'algorithme de bresenham mais tous ce que j'ai trouver ne ma pas semblé claire c'est pour ça que j'ai demandé de l'aide je cherche un cours sur les ellipse du même style que celui là qui parle des droite et des cercles.

    https://www.google.com/url?sa=t&rct=...8sWfXhkpXx9ImA

  6. #6
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Dessiner une ellipse en utilisant l'algorithme de Bresenham
    Citation Envoyé par hbx360 Voir le message
    J'aimerais trouver un cours sur les ellipses en utilisant l'algorithme de Bresenham
    Salut,

    En me documentant un peu sur l'algorithme en cause, je viens de découvrir par hasard un lien qui conduit à ce que tu cherches; il s'agit du site de l'UFR Sciences et Techniques de l'Université de Besançon (département Infographie)

    http://raphaello.univ-fcomte.fr/ig/a...orithmique.htm

    Les explications données paraissent claires, et devraient te permettre de mettre ton programme au point.
    On y trouve d'ailleurs plein d'autres informations détaillées concernant les techniques du dessin 2D.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci pour ton aide.

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    salut

    il fait parti des liens que j'ai fournis ... lis le et dis nous ce qui te bloque

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci pour votre aide j'ai un peux près compris ce qui me bloquait c'était le b²a² de l'équation je pense que cela doit représenter le rayon de l'ellipse.

    Pour le lien merci sa m'a aidé.

    J'ai réussi a faire mon ellipse mais j'ai encore un problème c'est que les rebord sont trop aplatit sur l'axe des y, alors que sur the gimp les rebord a gauche et à droite ne le sont pas voir image : Nom : Ellipse.png
Affichages : 1804
Taille : 15,7 Ko

    Mon code :

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
      int a=50, b=40, a1=a*a, b1=b*b; 
      int cx=50,cy=40,x=0,y=-b;
      int err=y*(2*a1+y)+a1;
     
      while(y<=0)
        {
          put_pixels(display,cx+x,cy+y);
          put_pixels(display,cx-x,cy+y);
          put_pixels(display,cx-x,cy-y);
          put_pixels(display,cx+x,cy-y);
     
          if(x<a)
    	{
    	  x++;
    	  err+=b1*(2*x+1);
    	}
          if(err>=0)
    	{
    	  y++;
    	  err+=a1*(2*y+1);
    	}
        }

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    salut

    tiens je viens de tomber sur cette vidéo super interessante


  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci j'ai déjà vu cette vidéo mais c'est difficilement compréhensible et assez brouillons je trouve

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    salut

    bin non je trouve pas

    il te fait la démonstration mathématique et ensuite il l’implémente en c tu y retrouve très clairement tes deux zone
    dans un quart d'ellipse

    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    procedure PlotEllipse(CX, CY, Rx,Ry : integer);
    begin
     var 
       Rx2,Ry2,
       TwoRx2,TwoRy2,
       X ,Y ,
       P: longint;
     begin
       Rx2 := Rx*Rx;
       Ry2 := Ry*Ry;
       TwoRx2 := 2*Rx2;
       TwoRy2 := 2*Ry2;
       X := 0; 
       Y := Ry;
       P:=0;
       Plot4EllipsePoints(CX,CY,X,Y); // 1 pixel
       //region 1
       P := Ry2-(Rx2*Ry)+(0.25*Rx2) ;//0.25 => (1/4)*
       While ((2*Ry2)*x) <  ((2*Rx2)*y) do 
       begin
         inc(x);
    	 if (p < 0)  Then 
    	   p := p+ ((TwoRy2)*x*Ry2)
    	 else
    	 begin
    	   dec(y);
    	   p := p+ TwoRy2*x+Ry2-TwoRx2*y
    	 end;
    	 Plot4EllipsePoints(CX,CY,X,Y);
       end;
     
       //region 2	 
       P := Ry2*(x+0.5)*(x+0.5)+Rx2*(y-1)*(y-1)-Rx2*Ry2 ;
       While y>0 do 
       begin
         dec(y);
    	 if (p > 0)  Then 
    	   p := p+ Rx2-(TwoRx2)*y
    	 else
    	 begin
    	   inc(x);
    	   p := p+TwoRy2*x+Rx2-TwoRx2*y
    	 end;
    	 Plot4EllipsePoints(CX,CY,X,Y);
       end;
    end;
    depuis le début tu t’entête a faire qu'une boucle ce qui n'est pas possible pour les ellipse
    pour un cercle oui une ellipse non
    l'ellipse n'a que 4 plan de symétrie possible un cercle en a 8


    que trouve tu brouillon ?

  13. #13
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    les rebord sont trop aplatit sur l'axe des y,
    M'étonnerait que le point le plus haut du bord plat vérifie l'équation de l'ellipse avec une erreur minimale.

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci pour vos réponses je pense après pas mal de temps passer sur cette algo je pense avoir saisie la façon de faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dessiner une ellipse en JS
    Par akrogames dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/10/2009, 11h54
  2. [Débutant] Dessiner une ellipse
    Par miss_angel dans le forum MATLAB
    Réponses: 9
    Dernier message: 11/09/2009, 08h33
  3. Dessiner une ellipse et une fléche
    Par Viscapon dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 17/06/2008, 22h55
  4. comment dessiner une etoile en utilisant flash
    Par WhiteTigerZ dans le forum Flash
    Réponses: 5
    Dernier message: 17/10/2007, 09h25
  5. Réponses: 3
    Dernier message: 29/06/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo