Vous êtes sur la page 1sur 4

FIT 2

Algorithmique et programmation II
Damien Berthet & Vincent Labatut
Universit Galatasaray

TP 06

algorithme de Bresenham

1 Rastrisation dune droite


On veut reprsenter un segment dans la fentre graphique en utilisant la fonction affiche_pixel de notre bibliothque graphique. Pour reprsenter un segment qui joint les centres et de 2 pixels, on allume, sur chaque colonne, le pixel dont le centre est le plus proche du segment . Dans la figure ci-dessous, les carrs reprsentent les pixels de lcran et les ronds les centres de ces pixels. Les pixels allums sont griss. Le segment est donc reprsent par les 7 pixels griss.

Cette mthode n'est valable que pour un segment dont le coefficient directeur est compris entre 0 et 1. En effet, si le coefficient directeur est suprieur 1, il restera des lignes ne contenant aucun pixel allum :

On remdiera ce problme en parcourant les pixels en suivant les lignes plutt que les colonnes.

Algorithmique et programmation II

FIT 2

TP 1/4

algorithme de Bresenham

2 Description de lalgorithme naf


Soient et les coordonnes et des extrmits du segment dessiner. Notations : On note et , on suppose que : o et le point est situ en bas gauche du point (on raisonne dans un repre classique). o le coefficient directeur de la droite est compris entre 0 et 1. On note les coordonnes des pixels reprsentant le segment . Lquation de la droite peut scrire , on lui associe lapplication affine dfinie par .

Algorithme : On parcourt les pixels suivant les colonnes, donc et pour tout k, . Pour tout k : me o si : le pixel de la colonne le plus proche de la droite est le pixel de coordonnes , donc on choisit .

o sinon, cest le pixel de coordonnes

, donc on choisit

Algorithmique et programmation II

FIT 2

TP 2/4

algorithme de Bresenham

Exercice 1
Ecrivez un programme qui trace laide de la mthode dcrite au dessus un segment joignant 2 pixels et . Le pixel A doit tre situ gauche du point B et que le coefficient directeur de la droite doit tre compris entre 0 et 1.

3 Algorithme de Bresenham
Le principe de l'algorithme de Bresenham est le mme que celui expos au-dessus, mais il n'effectue que des oprations daddition et de soustraction sur des entiers il amliore la vitesse d'excution de l'algorithme. Lalgorithme de Bresenham nvalue directement pour chaque valeur de k, lingalit qui ncessite des calculs sur des nombres rels. Il value pour chaque valeur de k, lentier : Le signe de permet de dterminer le choix du pixel de coordonnes allumer daprs lquivalence : (avec Donc : o Si , . o Si , . Le calcul se fait par rcurrence, en utilisant la proprit daffinit de : ).

On a les relations : o o si si : :

Daprs la relation de rcurrence ci dessus, comme les valeurs de et sont entires, les valeurs de sobtiennent en effectuant uniquement des additions et des soustractions sur des entiers.

Algorithmique et programmation II

FIT 2

TP 3/4

algorithme de Bresenham

Exercice 2
crivez un algorithme correspondant au principe dcrit ci dessus, dans le cas dun segment o le point A est situ gauche de B et o le coefficient directeur est compris entre 0 et 1.

Exercice 3
Implmentez cet algorithme dans une fonction void bresenham(int x_A, int y_A, int x_B, int y_B). Testez cette fonction.

3.1 Gnralisation
Nous navons tudi que le cas o le point A se situe gauche du point B et o le coefficient directeur est compris entre 0 et 1. Il existe au total 8 cas possibles rpertoris dans larbre ci dessous :
A est gauche A est dessous A est droite parcours suivant les colonnes A est gauche A est dessus A est droite parcours suivant les lignes

Le cas dtaill prcdemment est le 1er cas : A est au dessous et gauche de B. Pour le 2me cas (A est au dessous et droite de B), on peut remarquer une symtrie par rapport avec le 1er cas :
B B

A
me

A
me

De mme, on peut retrouver les 3 et 4 cas par symtrie par rapport (Ox). Enfin, pour effectuer un parcours suivant les lignes (au lieu des colonnes), il suffit dchanger dans les formule les xk avec les yk ; ainsi que les dx avec les dy.

Exercice 4
Modifiez votre fonction bresenham pour quelle trace le segment les positions des points A et B. quelles que soient

Algorithmique et programmation II

FIT 2

TP 4/4