Université de Strasbourg Master mention informatique, spécialité ISI 1e année, semestre 1 Année 2009-2010 Fondements et algorithmes de l’imagerie numérique TD2 Remplissage Exercice 1 Ecrire en pseudo-C un algorithme traçant un disque (donc constitué par les pixels à l’intérieur d’un cercle). On supposera que l’on dispose d’une fonction SegHori(x1,x2,y) traçant un segment horizontal. L’algorithme ne devra utiliser que des opérations sur les entiers. Exercice 2 Soit un polygone P sans aucune propriété particulière. Il n’est ni régulier, ni convexe, ni simple etc. On se propose de le remplir avec l’algorithme par balayage (scan-line). 1. Proposer des structures de données minimales initiales pour le sommet, pour l’arête et pour le polygone. Ces structures pourront être modifiées au fur et à mesure des besoins des algorithmes. 2. On suppose qu’une ligne horizontale d’équation y = Y0 coupe les arêtes du polygone en n points d’abscisse xj . Proposez une structure de données pour contenir ces intersections. Puis donner un algorithme pour colorier les points de la droite horizontale qui appartiennent à l’intérieur du polygone. 3. Soit un intervalle ]Yi , Yi+1[ dans lequel il n’y a aucun sommet de P . L’intersection du polygone avec une ligne horizontale (scan-line) (appartenant à cet intervalle) appartient toujours à un même sous-ensemble d’arêtes appelé ensemble des arêtes actives. On suppose que pour l’intervalle ]Yi , Yi+1[ cet ensemble des arêtes actives est connu, ainsi que les abscisses xj des intersections de la ligne horizontale d’équation y = Yi avec les arêtes actives. (cf figure ??). – Dans un premier temps, l’objectif est de calculer la valeur des xj sur une ligne à partir des valeurs des xj sur les lignes précédentes. – Dans un deuxième temps on tentera de faire cela sans recourir à des calculs entre nombres flottants. A chaque fois, donner la structure de données utilisée pour les arêtes actives et donner les algorithmes de remplissage de la partie du polygone appartenant à l’intervalle [Yi Yi+1 ]. 4. A présent on cherche à colorier tout le polygone. Proposer une structure de données pour le polygone qui soit adaptée à cette tâche, et en déduire l’algorithme complet pour le coloriage de tout le polygone. 1 Ymax Yi+1 Yi Ymin Xmin x0 x1 x2 = x3 Xmax Fig. 1 – Un intervalle [Yi , Yi+1 ] sur lequel les scan-lines intersectent le même ensemble d’arêtes. Cet ensemble d’arêtes sera appelé l’ensemble des arêtes actives. Dans le cas de cette figure il y a quatre arêtes actives représentés par des traits épais. Au départ du calcul on dispose donc des valeurs de x0 , x1 , x2 et x3 (avec x2 = x3 ). Dans tout cet exercice, vous avez droit à tous les outils de manipulation des listes, (Insertion, Elimination, Parcours Triage, PremierElement, DernierElement, ProchainElement etc.) ainsi que la fonction SegHori(x1,x2,y). 2