
2004/2005 Licence Informatique L3 – F. Mallet A-1
Algorithme de Bresenham
♦Tracer un segment entre deux points (x1,y1) et (x2,y2)
Tracer un segment depuis (x1,y1) de largeur dx=x2-x1 et de
hauteur dy=y2-y1
♦On ne peut afficher que des points de coordonnée entière
L’écran est une matrice de pixels
♦L’algorithme de Bresenham affiche seulement les points
les plus proches de la droite.
2004/2005 Licence Informatique L3 – F. Mallet A-2
Idée de l’algorithme
♦On ne traite que les segments dont la pente est
inférieur à 45°
♦Dans les autres cas, on fait une symétrie
♦2 cas possibles:
Déplacement horizontal : pente < 1/2
Déplacement diagonal : pente >= 1/2
2004/2005 Licence Informatique L3 – F. Mallet A-3
Idée de l’algorithme
♦Déplacement horizontal
La pente est inférieure à 1/2 : dy/dx < 1/2
2*dy-dx < 0 (multiplication par 2 = décalage de bits)
♦Déplacement diagonal
La pente est supérieure à 1/2 : 2*dy – dx ≥0
♦Var = 2*dy-dx
Le retard par rapport à la droite de pente 1/2
Calcul du nouveau retard une fois le déplacement effectué
•Algorithme incrémental dichotomique
2004/2005 Licence Informatique L3 – F. Mallet A-4
La pente est inférieure à 1/2
♦Déplacement horizontal : pente < 1/2
La pente est-elle inférieure ou supérieure à 1/4 ?
dy / dx < 1/4 ?
4*dy – dx < 0 ?
♦Si la pente est inférieure à 1/4,
On continue à l’horizontale
Sinon, on fait un déplacement en diagonale
♦Le calcul de var est incrémental
var = var + 2*dy