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 |