Olivier Pécheux
 opecheux@multimania.com  | 
| >0) Introduction | 
| >I) Les exigences des tracés informatiques | 
| >II) Le segment de droite défini par deux points | 
| >II.1) Variables de calcul | 
deltaX = x2 - x1 deltaY = y2 - y1  | l | 
| >II.2) Les premières droites | 
| >II.3) Les belles droites | 
| l | Il faut dessiner une belle droite! | 
                               *** < (x2,y2)
                         ******
                   ******
             ******
          ***
          ^ (x1,y1)
 | l | 
| l | Il ne doit pas y avoir de trous | 
                ***
         *** ***    <- il va y avoir un problème!
      ***
 | l | 
| l | Les points de départ et d'arrivé doivent être dessinés | 
| l | Il ne doit pas y avoir 2 points dans un même colonne | 
                       ****
                  *******
             *******
          ****
 | l | 
| l | Les marches doivent être régulières | 
             ****
          ***
 | l | 
| >III) L'algorithme de Bresenham | 
| >III.1) Le départ | 
| >III.2) Points suivants | 
                         ***
                   ******
             ******
          ***
 | l | 
| >III.3) Calcul avec des réels | 
| l | 
Pour dessiner un nouveau point:
 
  | 
| l | L'erreur doit être inférieure à un demi-pixel | 
| l | On ne montera jamais deux fois car justement on a choisi des droites qui montent peu (deltaX>=deltaY). | 
| l | 
Pour dessiner une droite:
 
 
 
 
 
 
  | 
| >III.4) Calcul avec des entiers | 
| l | Ne jamais utiliser des réels! | 
| l | 
Pour dessiner une droite:
 
 
 
 
 
 
  | 
| >III.5) Le test | 
| l | 
Quel est le bon test?
 
  | 
| l | ** ** | 
| >III.6) Le chiffre 2. | 
| l | Si deltaX est impair? | 
          erreur > ou >= deltaX
 | l | 
          erreur > deltaX
 | l | 
          2 n > 2 p +1
 | l | 
          2 n > 2 p
 | l | 
| l | 
Pour dessiner une droite:
 
 
 
 
 
 
 
 
 
 
 
  | 
| >III.7) La comparaison | 
| l | Que peut-on améliorer? | 
| l | 
Pour dessiner une droite:
 
 
 
 
 
 
  | 
| >III.8) Bresenham est mort, vive Martin | 
| >IV) Algorithme de Martin | 
| >IV.1) Première astuce de Martin: une seule addition | 
| l | On va trop loin! On ne peut pas savoir si il faut ajouter deltaY ou deltaY_moins_deltaX que si on fait la comparaison, or pour faire la comparaison, il faut avoir fait l'addition! | 
| l | 
Pour dessiner une droite:
 
 
 
 
 
  | 
| >IV.2) Deuxième astuce de Martin: brûler la chandelle par les deux bouts | 
| l | Que peut-on améliorer? | 
| l | Oui, mais si deltaX est impair? | 
              *** < (6,1)
          ***
          ^(0,0)
 | l | 
| l | 
Pour dessiner une droite:
 
 
 
 
 
  | 
| >V) Martin est mort vive ??? | 
| >VI) Toutes les droites quelconques | 
| l | Et les droites qui descendent? Et celle qui montent beaucoup? Et celles qui vont dans l'autre sens? | 
               ^y
          \  3 | 2  /
           \   |   /
            \  |  /
          4  \ | /  1
              \|/    
          -----*----->x
              /|\    
          5  / | \  8
            /  |  \  
           /   |   \ 
          /  6 | 7  \
 | l | 
| >VI.1) Directions 1 et 2 | 
| >VI.2) Les directions opposées | 
| >VI.3) Directions 1 et 8 | 
| >VI.4) Ma méthode c'est la meilleure! | 
| >VII) Conclusion |