Vous êtes sur la page 1sur 106

Monographies de IAFCET-Informatique Un regard de professionnels

PREFACE

. D. Le Verrand, Le langage ADA, manuel d&wluation, Dunod, 1982. Bnluating ADA, North Oxford Academic Publishing Company, 1985. . F. Andr, D. Herman et J.P. V~~US, Synchronisation des programmes partites, Dunod, 1983. Synchronization of parallel programs, North Oxford Academic Publishing Company, 1985. 0 M. Raynal, Algorithmique du paralllisme : le problme de lexclusion mutuelle, Dunod, 1984. Algorithms for mutual exclusion, North Oxford Academic Company, 1985.
l

C. Chrkment, J. k Crampes et G. Zurfluh, Dunod, 1985.

Bases dinformations

g&kasees,

A rheure o tout un chacun peut admirer les images produites par ordinateur. en particulier pour leur degr de ralisme et de finition, on peut se poser la question de savoir sil St r&zment utile de cm~s~rer un ouvrage complet ltude des techmques lmentaires pour la synthse dimage. Et pourtant, Iexplosion de la micro - mformatique conduit des milliers de personnes recrer sur leur ordinateur personnel des algorithmes de base. Et pourtant. les ingnieurs chargs de concevoir et raliser les gnratet!rs $imageS synthtiques souhaitent connatre les meilleurs algorithmes pour pouvoir les mtegrer dans leur machine. Et cest l tout le paradoxe : des images extraordinaires sont produites quotidiennement, & partir dalgorithmes qui ne sont pas forcment matriss. ou tellement nombreux que lon ne sait plus lequel choisir et pourquoi. Le mrite de cet ouvrage est de passer en revue de manire systmatique un certain nombre dalgorithmes plus ou moins clbreS, en mettant en valeur pour chacun ses avantages et ses inconvnients Ce travail mticuleux et trs austre a comme premier r&ultat de rassembler en un mme endroit des techniques habituellement parpilles dans des publications qui ne sont pas toujours facilement accessibles. Le deuxime mrite est de fournir une bibliothque doutils raisonns, dans trois domaines la base de la synthke dimage (mme au del des algorithmes lmentaires), g savoir la gnration de courbes, le remplissage de taches et les traitements de nature gomtrique. Ainsi, le lecteur trouvera rassembls les fondements de tout systme de synthk dimage. Enfin, par del la diversit des algorithmes, lauteur a su faire converger les diffrentes ides, en traitant plus particuliiement de deux techniques, qui relient entre eux quelques algorithmes, et peuvent donc servir de base systmatique un logiciel : les gnrations de courbes avec le mcanisme de Bresenham. et les traitements varis partir du suivi de Contour. Cet aspects synthtique partir de mthodes a priori trs diverses constitue un des apports les plus importants de cet ouvrage. Je crois fermement que ce livre rendra beaucoup de services et que, par suite, il aura bem~oup dnfluence sur la conception des logiciels graphiques. Je lui souhaite longue vie. Michel Lucas Professeur & lUniversit de Nantes

0 G. Hgron, Synthse dimage : algorithmes &mentaires,

Dunod, 1985.

Ouvrage publie avec le ccmcours des minist&es de l%ducation nationale (direction de la recherche) et de la recherche et de la technologie. (MIDIST) Programme mobihsateur : promotion du franais langue scientifique et diffusion de la culture scientifique et technique.

@ BORDAS, PARIS 1985 ISBN 204-016427-8

SOMMAIRE

pREF*CE. SOMM*IRE

........................................................... ......................................................... .................................................... I

INTRODUCTION

, - GENERALITES SUR LES TRAITEMENTS ELEMENTAIRES EN SYNTHESE D'IMAGE ........................................ 1.1. Algorithmes et traitements Mmentaires .............................. 1.2. Lnfortnation image ............................................. I .3. Codilkation de lmage. ........................................... 1.4. Les traitements en synihse dmage ................................. 2 - GENERATION

APOINTILLAGE

DE COURBES SUR UNE SURFACE ................................................ *.,.In,rodctio .................................................... 2.2. Classification gnrale ............................................ 2.2.1. Les mthodes numriques ................................... 2.2.2. Les mthodes incrmentales. ................................. ............................................. 2.2.3.Conclusion., 2.3. Les mthodes incrmentales. ....................................... 2.3.1.Introduction .............................................. 2.3.2. Les mthodes incrmentales gnrales. ......................... ......................................... 2.3.2.1. Gnralits 2.3.2.2.Lamthode&IORDANetal........................... 2.3.2.3.Conclusion ......................................... 2.3.3. Les mthodes incrmentales spcifiques ........................ ....................................... 2.3.3.1.Gnralitb.. 2.3.3.2. Gnralisation du principe de BRESENHAM .............. 2.3.3.3.Conclusion ......................................... 2.4 Gnration des segments de droite, .................................. 2.4.1. Lalgorithme de LUCAS. .................................... .............................. 2.4.2. Valgorithme de BRESENHAM. 2.4.3. Gn&tion dun ensemble de segments de droite. ................. 2.4.3.1. Compression. ....................................... 2.4.3.2.Rptition. .........................................

II II 12 12 13 13 14 14 14 14 15 18 18 18 18 21 21 21 22 23 24 24

2.5.Gnratiandsscerc,es

............................................

2.5.1. Lalgorithme de BRESENHAM ............................... 2.5.2.Gratiodesarcsdecercle.. ............................... 2.5.2.1.Leprohlrne ........................................ 2.5.2.2.Lalg?rithmedeBRESENHAM ......................... 2.6. Gnration des ellipses ........................................... 2.6.1. Ellipses simpls(aJgorithme de ROY). .......................... 2.6.2. Ellipses quelconques (algorithme de ROY). ...................... 2.7. Gnration des paraboles. ......................................... 2.7.l.ArcsdepambolesimpleklgorithmedeROY). ................... 2.7.2.Arcsdepw&,lequelcoque ................................. 2.8. Gnration des hyperboles ......................................... 2.8.1. Gnralisation de Ialgorithme de BRESENHAM aux hyperboles simples .................................................... 2.8.2.Hyperholesavecrotfio. ................................... 2.9. Am~liomtion du dessin au trait ..................................... 2.9.1.In~oduction .............................................. 2.9.2. M6thode BRESENHAM .................................... 2.9.2.1.Leprincipe ......................................... 2.9.2.2.Amliorationdutracdessegmenbdedroite.. ............ 2.9.3.Amliorationdutracdesmniques ............................ 2.9.3.1.LamthodedeROY.. ................................ 2.9.3.2. Amlioration du trac des ellipses ....................... 2.9.3.3. Amlioration du trac des arcs de parabole ................ 2.9.4. Simulation des griss ....................................... 2.9.4.1. Introduction. ....................................... 2.9.4.2. Utilisation des cellules prdfinies ....................... 2.10.Conclusion .................................................... 3 - REMPLISSAGE DE TACHES. .................................... 3.1.ltrodudion .................................................... 3.2. Le coloriage ..................................................... 3.2.l.Leprincipedebase. ........................................ 3.2.2.LalgorithmedeSMITH.. ................................ .. 3.2.3.LalgorithmedePAVLIDlS. ................................. 3.2.4. Conclusion. .............................................. 3.3.Leremplissagedetaches .......................................... 3.3.l.Introduction.. ............................................. 3.3.2.Lebalayageligneparligne.. ................................. 3.3.2.1.ltroduction ........................................ 3.3.2.2. Le remplissage de taches polygonales. .................... 3.3.2.3. Le remplissage de taches on-polygonales ................. 3.3.2.4.Conclusion ......................................... 3.3.3.Lesuividecontour ....................... ~~ ................ 3.3.3.1.Leprincipe ......................................... 3.3.3.2. Le remplissage de taches polygonales. .................... 3.3.3.3. Le remplissage dun ensemble de taches polygonales. ........ 3.3.3.4. Le remplissage de taches on-polygonales. ................ 3.3.3.5. Une application : criture dun texte dans une tache polygonale quelconque ......................................... 3.3.4.Conclusion ...............................................

25 25 27 27 29 31 31 34 37 37 39 39 39 46 47 47 48 48 49 51 51 52 57 60 60 60 64 67 67 68 68 70 72 76 77 77 78 78 79 83 85 85 85 86 93 94 96 107

3.4. Dcomposition des taches polygoraks en l&nents simples ............... 3.4.1.Introduction .............................................. 3.4.2. Nouvel algorithme de dcomposition. .......................... .................. 3.4.2.l.LamthodedeBENTLEYetOT-TMAN 3.4.2.2. Utilisation de la mthode de BENTLEY et OTTMAN ........ ............................................. 3.4.3.Conclusion.. 3.5.Lehachuragedetachespolygoales ................................. 3.5.1.Lehachurageverticalouhorizontal.. .......................... 3.5.2. Hachurage oblique de cotours polygonaux ..................... 3.5.2.1.Introductio ........................................ 3.5.2.2. Le hachurage oblique par (< suivi de contour 4 ............. 3,6,Conclusion................................................~ ....

108 108 109 109 IlO 113 113 113 114 114 1 l4

122

4 - ALGORITHMES DE~ DECOUPAGE ET TRAITEMENTS DE NATURE GEOMETRIQUE

...................

125

4.1.Introdctio..................................................: 4.2. Classification des problmes de dcoupage ............................ .................... 4.3.Comparaisondunpointetduncotourpolygonal.. 4.3.1.Inuoduction .............................................. 4.3.2. Comparaison point - contour convexe ......................... 4.3.2.1.Itroduction ........................................ ................................ 4.3.2.2.MlhodedeSHAMOS 4.3.3. Comparaison point- contour non-convexe. ..................... ...................................... 4.3.3.1.Introdction.. 4.3.3.2.Mlhodedusuividecontour.. ......................... 4.3.4.Conclusion ...............................................

125 126 132 132 132 132 132 135 135 135 137 137 4.4. Dcoupage dun segment de droite par un contour polygonal. ............. 4.4.l.Introduction .............................................. 137 4.4.2. Dcoupage par rapport une fenue rectangulaire ................ 137 ........................................ 4.4.2.l.InUodc,ion 137 .............. 4.4.2.2. Lalgorithme de SUTHERLAND-SPROULL 139 ........................... 4.4.2.3.Lalgo~thmedePAL,D,S., 141 4.4.3. Dcoupage pu rapport a un C~~OT convexe .................... 143 4.4.3.1. lntrcduction ........................................ 143 4.4.3.2. Algorithme de PAVLIDIS ............................. 143 4.4.4. Dcoupage par rapport un contou, quelconque ................. 147 ........................................ 4.4.4.1.ltroduction 147 4.4.4.2. Lalgorithme de suivi de contour ........................ 147 4.4.5.Conclusion ............................................... 150 4.5. Dcoupage dun polygone par une fentre polygonale ................... 15 I ............................................ 4.5.1.Introductian.. 151 4.5.2. Lalgorithme de SUTHERLAND et HODGMAN ................. i 51 ................... 4.5.2.l.D&xwpagedunpolygoneparunedroik 151 4.5.2.2. Gnralisation du decoupage dun polygone par une fentre. .. 153 4.5.3. ttersection de deux polygones covexes. ....................... 153 4.5.3.l.LamthodedeSHAMOS.. ............................ 153 ...................... 4.5.3.2.LamthodedeOROURKEetal... 163 4.5.3.3.Intersection.de deux segments de droite. .................. 166 4.5.3.4.Ccmclusion ......................................... 168

4.5.4.

Intersection de deux polygones 4.5.4.l.Uneapprochep~culire

................... non-convexes. .............................

168 169

454.2. Lalgorithme
4.5.5.Coclusia. 4.6.1.Iuodctio 4.62. Dcoupage 4.6.4. Conclusion.

de ATHERTON

et WEILER

................

17 I
171

.............................................. ..............................................

4.6. Dcoupage dune tache pu une fen&tre polygonale. ..................... explicite ........................................ 4.6.3. Dcoupage implicite ........................................
..............................................

173
173

173 173
,74

INTRODUCTION

4.7.Dcoupagedunetacheparuneautre
4.7.,.,ntro*uction

................................

175
175

..............................................

...................... 4,7,2,Tachedf<nieparunensembledepoints.. 4.7.3. Tache dfinie par un ensemble dintervalles. ..................... 4.7.3 .,., ntroduction ........................................ ................ 4.7.3.2.Algorithmededcoupagededeuxtaches.. 4.8. Gnralisation aux taches non-polygonales. ........................... .................. 4.8.1.Comparaisonpoint-contournon-polygonal.. 4.8.2. Dcoupage dun segment par un crmtour non-polygonal. ........... ........ 4.8.3. Dcoupage dun arc de cercle par un contour non-polygonal
4.8.4. Conclusion. ..............................................

176 179 179 180 183


183

184 187
189

4.9.Conclusion BIBLIOGRAPHIE

..................................................... .................................................... ..........................................

189 191 196 198

Laapparition des terminaux de visualisation du type balayage tlvision a au\rert une nouvelle voie de recherche trs importante en infogradimage. Nous employons ici le terme image phie interactive : la synthse par opposition dessin au trait (prsentation graphique utilisant seulement des lignes comme lment de base). Les images permettent dutiliser toutes les PXESOU~C~S de lexpression graphique en combinant aussi bien les reprsentations base de traits que les reprsentations base de surfaces colories (taches).
Devant la diversit des familles de procds employs pour crer use image et la disparit des solutions disperses travers une littrature abondante, cet ouvrage fait le point sur les problmes de production cest--dire celui des oudimages en sattachant au niveau lmentaire, tils de base ncessaires a la gestion dun cran. Les trais grandes classes de problmes abords 2) 3) traitements sont :

LISTEDESAU;ORITHMES INDEX

...............................................................

- la gnration des courbes, (Chapitre - le remplissage de taches, (Chapitre - les algorithmes de dcoupage et les ture gomtrique (Chapitre 4). Pour chacune rsulte de notre synthse dimage sieurs objectifs delles, tude (voir

lmentaires

de na-

le choix des algorithmes prsents et dvelopps comparative dalgorithmes lmentaires pour la <HEGRON 830) qui nous a permis de rpondre plu-

- rassembler et classifier les publications nombreuses et disperses dans Ce domaine (le volume de la bibliographie savre loquente), - slectionner et prsenter une bibliothque dalgorithmes corrects, - dgager un ensemble de procds mthodalogiques qui nous permettent de rsoudre le plus grand nombre de problmes, du cas particulier au cas 1 Plus gnral possible. Cet ouvrage veut tout dabord mettre la disposition des ralisateurs de ystbs graphiques des lments de ralisation pratique (algorithmes 1mentaires de visualisation) A cet gard, on remarquera que si les algorithmes dvelopps sont defaon gnrale destins la synthse

d'image, la plupart d'entre eux dessins (gnration de courbes, qus aux contours et traitements sont volontairement crits dans lisateur les programme dans le

sont utilisables pour la production de hachurage, problmes de dcoupage applide nature gomtrique). Les algorithmes un langage de description afin que l'utilangage de son choix.

Chapitre

Le second objectif de ce manuscrit se veut plus didactique en offrant une classification des diverses familles de procds utiliss, en prsentant les problmes et les techniques inhrentes chacune d'elles, et en proposant des solutions originales, fruit d'un cheminement mthodologique et unitaire. A cet effet, nous avons exhib deux mkhodes gnrales. La premire est la technique de BRESENHAM pour la gnration incrmentale des segment de droite et des coniques. La seconde permet de traiter la plupart des traitements lmentaires relatifs une tache : il s'agit de la technique gnrale du suivi de contour.

Gnralits sur les traitements lmentaires en synthse dimage


paur mieux cerner ce que recouvre dits l'appellation "algorithmes lmen~US allons prciser dans ce qui suit "lmefitaires" et leur champ d'application

la notion de traitements qu'est l'image.

taires pour la synthsed'inages",

Remerciemente Le contenu de cet CuvrqJe rsulte de nos tranur effectus dmls le cadre de notre Thse de tmisime cycle en infomrrtique (voir <HEGRON 82 sous la direction de Monsieur M. LUCAS, Professeur l'Universit de Nates et Responsable de l'quipe "nwitements gr@,iques et CAO". Sa rdaction a pu &tre ralisde en partie grbce un prolongement de dem mois de notre allocation de recherche DGRST dtiv&e par 1'I.R.I.S.A. (Institut de Recherche en Informatique et Systmes Al&toires, Univereit de Rennes II. Je tiens L?exprimer ici toute ma reconnaissmce Moneiew LUC43 pour m'avoir donn l'opportunit de rdiger ce livre et pmr en moir amimtement composk la prface. Je remercie galement M&e-Anne ROYet Jacques ANDRE qui MU.S ont permis, la lecture de la version initiale d'qporter les corrections et les amlioratione ncessaires. le m&e tout particulirement Maryse FOUCHE pour avoir accompli avec comptence beaucoup de patience la tbche dactylographique.

1.1, Algorithmes et traitements lmentaireS


L= schma le plus gnral de la chane de programmes ncessaires l<laboration d'un logiciel graphique interactif comporte les lments suivants (voir figure 1.1.) : - un logiciel de description qui permet partir des informations fournies par le programme d'application de coder la scne ; - un logiciel de prparation la visualisation qui compose partir de la scne code, une scne bidimensionnelle constituant le fichier graphique ; - un logiciel lmentaire qui pennet d'obtenir le dessin w l'image finale partir des indications fournies par le logiciel de prparation la visualisation. Le logiciel lmentaire a pour rle d'tablir la liste de visualisation et d'assurer la gestion de l'cran.

%We

L-PLYLJ~
1.1.: Schma gnral <LUCAS 772).

dTun

logiciel

graphique

interactif

(tir

de

Lensemble des algorithmes logiciel lkmentaire. La structure une sc&ne bidimensioelle.

et

traitements reprsenter

lmentaires appartient et afficher est

au donc

colories (faches). Le paramtre le plus important cest--dire sa silhouette. tache est SO CO*tOUr, de 1ensernble -points qui constituent la tache la description de sn CO~UT. D~IS ce qui suit lorsque us ese&le de primitives daffichage nous le modlisons de la manire dcrivons (segments suivante le de :

qui caracrrise,une En effet, laffichage est ralis & partir

de

1.2. Linformation
sur Limage lcran est ont

image
structur pour dinformations loeil humai. qui aprs affichag

un ensemble une signification

contour droite,

dune arcs

tache, par de cercle...)

un

De cette dfinition, se dgagent deux espaces distincts auxquels patient limage. Le premier correspond lespace utilisateur dans leq nawfrouvons les structures de lobjet (ou scne) reprsenter. Le se tond demeure lespace cran o se situent la structure graphique umri de la scne et laffichage propremeot dit de limage sur lcran (figur 1.2.).

ap

c~nt~r sera dfini par un ensemble de parois appeles par eXtesio ,cntoursconstitus dune suite continue et ferme de primitives (sr,-,,c~,,re daanea). Dans le cas le plus gr=I, 0s s=pP=ns que les primitives dun mme contour peuvent se couper OU se chev+cher ainsi que les primitives des diffrents contours entre elles. On dira quun ctur esr polygonal sil est form dun ensemble de contours qui sont des polygones. c&que polygone sera dcrit suite ordonne de ses sommets.

par la

~~ w>de de gnration dune .ge r&sultat de la combinaiso fication initiale des contours

tache, ou de faon plus dun ensemble de taches, ou de la surface quils

gnrale dpend dlimitent.

de

dune imala codi-

1.3. Codification de limage


Plusieurs - espace - temps - vitesse - vitesse critres coditioent le choix du code qui dcrira limage: mmoire disponible, de rafraichissement de lcran, de transmission de limage, de gnration de limage. les images est infini. Il faut limage au niveau le plus bas cran), de ceux dcrivant limage (espace utilisateur) (voir fi-

Figure

1.2.:

Espaces

image

et est un

traitements. un cran systme pointillage de coordonnes 1 (voir figure constitu o tout 1.3.). d coup

La surface de visualisation quadrillage rgulier d6finissant (X,Y) dsigne un carreau

En pratique, lunivers des codes pour cependant distinguer les codes dcrivant lorsquelle est dj discrtise (espace indpendamment du support de visualisation gure 1.2.).

Figure

1.3.:

Surface

pour

le

I I X dessin

. Codage de la surface : - matrice binaire : la tache est code point par point (0 teint, 1 allum) dans une matrice binaire, - codage par plages : pour chaque ligne de balayage, on mmorise les Points dintersection du C~OU~ avec la ligne ; les segments ainsi dtermins *olIt des plags. point point. . Codage du C~~OI - code par plages de* Plages dune ligne - code incrmental de dpart *t uns suite dun Point un autre : diffrentiel : an note les variations des extrmits a lautre ; : le C~OUT de la tache est dfini par un point de mouvements lmentaires qui permettent de passer (voir code de Freeman, figure 1.4.).

Chaque point de cette surface de une intensit. Les images sont alors ou de taches formes densembles de (constitus de traits et de points), ment le terme technique dsignant les lvision, technologie dominante pour Limage base de permet courbes de que

visualisation possde une couleur e constitues essentiellement de poin points. Par opposition aux dessins nous parlerons dimages (cest gal dessins obtenus sur u cran de t les surfaces pointillage). de base reprsentati de surfaces

combiner aussi bien les techniques les mthodes de reprsentations

phes

. Les codes de R2 ;

synfimiques

: les

dessins

sont

considr%

came

des gra-

2. Le second mode %'%%t dvelopp type balayage tlvision (ou balayage gne par ligne (voir figure 1.5.). ligne visible r \. '\ -", '\ -c\ \ T# _ --Figure 1.5.: Balayage gnraux -r---y rcurr%nt. du balayage ---.e &----7

avec l'apparition rcurrent) : c'est

des terminaux l'affichage

du li-

. Codage du contour : le contour %%t dcrit par un ensemble de primitive%, telles que le% segments de droite, les arcs de conique ou les spli ne%, mmorise% 8011% forme analytique ; . Codage de 1% structur% : - primitives : la tache est dcrite cormne la juxtaposition de primitives globales (barres, courbes...) sur lesquelles on peut oprer certaines oprations (inclinaisons, symtries,...). - sq"elettes : 1% tache est code par son squelette et par une fonction qui en dfinit l'paisseur en tout point. L'un des critres important pour le choix d'un code est son pouvoir ou sa souplesse d'adaptation au mode de gnration de l'image employ. p% exemple, le codage incrmental du contour peut s'adapter %u prix de quelques amnagements aux terminaux balayage tlvision (voir (MERIAUX 79>) FRANKLIN, <FRANKLIN 79> a compar on%% algorithmes qui permettent d'afficher un dessin ligne par ligne, pour conclure que la mthode optimale est de diviser l'cran en bandes horizontales o chacune d'elles utidise tout la mmoire disponible, de dcouper toutes les droites et les courbes qui trav%r%%nt une frontire, de trier les ~>rce%ux par bandes, et pour chaqu' bande d'engendrer chaque courbe point par point puis de l'afficher. d'une Nous ~OU% %onmw intresss deux modes de gnration image sur des surfaces pointillage : d'un dessin ou

retour retour b--3

ligne trams

suivante

Le% avantages trait

ligne

par

ligne

sont

les

suivants

- il est bien adapt la gnration et la production du dessin au ou de l'image i' - il est galement bien adapt l'affichage et la transmission de l'image pour 1% tlvision parce qu'il n'y a pas de traneformation de codes effectuer contrairement aux techniques de codage incrmental p%r SXSpk.
Nous

1. Le premier mode est apparent aux techniques utilise% sur les %UT faces pour le dessin %u trait (les traceur% de courbes par exemple) : il s'agit de l'affichage point point de manire incrmentale (Code de Freeman : voir figure 1.4.). Cette mthode est bien adapte la gnration d'objets lmentaires cormw les courbes (segments de droite, coniques,...). 3 4 lg 5 6 7 Prmsloe cc&*' d" 2 1 0

cration

v%rron% dans 1% chapitre suivant que les diverses techniques d'une image combinent %ow%nt ces deux modes de gnration.

de

1.4. Les traitements en synthse dimage


pour raliser les diffrents ds existent, li%% 1% structure nous travaillons.
Nous

, plusieurs failles de proctraitement% code de l'image partir de laquelle soit 1.6.):

dans =tique

envisageons plusieurs approches en dfinissant 1% tache, l'espace utilisateur, soit dans l'espace cran (voir figure

- espace utilisateur : 1% tache est dfinie par 1% description mathde son COWOUI ; - espace cran : nous dfinirons la tache par l'ensemble des points qui la constituent (nous manipulons alors des matrices de points), par l'%nsemble des intervalle% horizontaux qui sont les parties des lignes d% balayage intrieures la tache (nous manipulons dans c% C%S un% S~TUCtu=% d'intervalles appels aussi plages), par l'inscription point B point du Contour dans 1% matrice image, ou bien par l'ensemble de ses hachures %i 1% tache est hachure (nous manipulons alors un ensemble de segments de droite). km engendrer un% tache %ur l'cran, NIUS aborderons oPd=%tion% suivantes (vair figure 1.6.): %ucce%%ivem%nt

les Figure 1.4.: Code de Freeman : application.

- inscription du contour d'une tache point point : c'est gnral de la gnration des courbes, - gnration d'une tache monochrome (remplissage proprement loriage) ou hachure (hachura&. Comme nous le remarquons sur la figure 1.6. nous pouvons certaines oprations en passant dun espace l'autre (flches ls).

le prab dit et

d'une tache dans lespace utilisateur et sans avoir besoin de nous ramener 2 une description de la rache,dans l'espace cran : il s'agir du principe &-,ral de la techuque du SULYI de contour. Nous n'explorerons pas les problmes d'acquisition, ni les autres techniques (analyse, reconnaissance) qui sont plutt du ressort de ce que l<on nome le "traitement d'image" par opposition "synthse d'image". les notions de traitement et de synthse d'imge, quoique distinctes dans leur dfinition, demeurent fortement complmentaires dans l'laboration ec la cration d'images par ordinateur.

raliser en pain

:. ::. .. .. . . . . . ::::::Y ensemble points de .w::::. :::* f --1 t co*uriage e--. .* : .* L*** COlOYdfini

l.

0.. l ..*..
l **

puint i point

Figure

1.6.:

Codifications

d'une

tache

et traitements.

Mais la ensemble de entre elles res de nature la structure de points ou

cration d'une image rsulte galement de la combinaison d' taches. NOUS nous intresserons alors au dcoupage des Lach et de leur contour. Nous verrons que les problmes lmenta gomtrique qui en rsultent, sont trs diffrents suivan de la tache sur laquelle nous raisonnons (contour, ensembl d'intervalles horizontaux, etc...). crer une image, l'un de rsoudre la plupart structure du ccmt~u

Parmi l'ensemble des procds employs pour d'entre eux a retenu notre attention. Il permet traitements abords ici partir d'une description

Chapitre 2

Gnration de courbes sur une surface pointillage


2.1, Introduction
EII synthse .d'image, nous faisons trs souvent appel aux algorithmes de gnration de courbes sur une surface pointillage et principalement dans les situations suivantes : - gnration d'un dessin (ensemble de courbes) sur une surface point par point ; - gnration du contour des taches dfinies par un ensemble de primitives d'affichage (segments de droite, arcs de conique,...); ligne par ligne du contour pour - remplissage de taches : gnration la mthode du suivi de contour, ou codage du contour pour la mthode du balayage par ligne (chapitre 3.).
Le pmbGne

Le problme de l'inscription d'une courbe sur une surface A pointillage revient trouver une approximation telle que l'oeil puisse reconstruire la courbe reprsentative. Nous passons d'une reprsentation continue une reprsentation discrte de la courbe (quanfification). Par exemple, un segment de droite sera dfini par la donne des C~OTdonnes de ses extrmits (figure 2.i.a). Le problme consiste engendrer la suite de points situs sur la grille de l'cran approchant le mieux le segment initial (figure 2.1.b). L'tude des techniques rsolvant ce problme nous a permis de dgager deux grandes classes d'algorithmes : - les mthodes "numriques", - les mthodes "incrmentales'~.

- la dispositif logiques

technique de 1'Analyseur Diffrentiel de calcul hybride dans lequel les interviennent simultanment.

Numrique techniques

(ADN) qui numriques

est un et ana-

Les mthodes numriques utilisent viter dans la plupart des cas l'emploi et de division. 2.2.2 Le gendre pas minera -LES METHOVES INCREMENTALES

une arithmtique des oprations

relle sans pouvoir de mltiplication

principe gnral des mthodes incrmentales est le suivant : on enla courbe d'un point origine jusqu' un point final en calculant pas partir d'un point courant le mouvement lmentaire qui dterle point suivant. 4 mouvements (figure 2.2.a) possibles. C'est le principe ou S moudu code

a- La grille segment Figure 2.1.:

et les Gnration

extrmits d'un

du segment

b- Segment de droite.

engendr

En chaque point, on peut dfinir vements (figure 2.2.b) lmentaires de FREE"AN :

Y+1

1
3

Y+1
0 Y y-1

point

2.2. Classification gnrale


Y

courant (X,Y)

Nous dveloppons ici les caractristiques gnrales des deux grandes classes d'algorithmes qui engendrent les courbes ; c'est--dire des mtho des numriques et incrmentales. 2.2.1LES METHODES NUMERIQUES

y-1

x-1

x+1

x-l

x+1

a-

4 mou"ements

b- S mouvements Code de Freeman.

Pour les mthodes numriques, numrique de la courbe en utilisant ses drives partielles.

les

calculs de faon

sont bass sur l'analyse explicite son quation et

Figure

2.2.:

On recherche de faon gnrale les intersections de la courbe avec les lignes horizontales (y=~). On utilise gnralement une structure rptitive qui calcule y(t) pour t=m.At o m = rr+,,%+l,... et pour chaque m tel que y(m. At)$n<y(m.At + At) an enregistre x(m.At). Si l'incrment At est fix, le calcul de y(m.At) et x(m.At) se fera de manire rcurrente. Cette mthode prsente divers handicaps. Premirement, il est souvent impossible de fixer At pour ne pas franchir plus d'une seule ligne horizontale chaque pas. Deuximement, la prcision est affecte par les calculs rcursifs qui engendrent une dgradation de la courbe. Pour pallier ce dernier phnomne MAXWELL et BAKER, <MAXWELL-SAKER 79>, proposent d'exa miner et de tenir compte de toutes les sources potentielles d'erreurs. Deux mises en oeuvre sont principalement utilises sur : la forme paramtrique

A chaque pas, le calcul du muvement lmentaire peut se faire l'aide de mthodes implicites (on utilise la reprsentation non-parmtrique de la courbe dfinie par l'quation f(x,y)=O o x,yGR , arithmtiques (on emploie la fois la reprsentation implicite de la courbe et les proprits gomtriques de la courbe et de la surface de visualisation) et l'aide de proprits structurelles. Les mthodes tire et vitent et de division. incrmentales utilisent le plus souvent l'emploi avant tout une arithmtique endes oprations de multiplication

2.2.3

-CONCLUSION

- la technique de programtion qui repose de la courbe dfinie par les quations : x = x(t) y = y(t)

Dans cet ouvrage, nous nous intressons incrmentales car par rapport aux mthodes @Jantages suivants : - elles utilisent avant tout - elles vitent le plus cation et de division, souvent l'emploi

essentiellement numriques, elles entire, des oprations

aux mthodes possdent les

une arithmtique

de mltipli-

- leurs mise en oeuvre prograrrm& assure leur indpendance au mat&%1 (ce qui nexclut pas le choix dune implmentation @& dune elles

par rapport cble).

,a faire

: Ltude de ces algorithmes (voir les constatations qui suivent. <HEGRON-ROY SZ>) nous a permis de

- dautre part, elles sapparentent aux techniques de suivi de concar lors de la gnration de la courbe nous suivons le trac idal extrmit B lautre. A cet effet, nous verrons de quelle manire sirm&rent dans les algorithmes de remplissage de taches.

2.3. Les mthodes incrmentales


2.3.1 -1NTROUCTION les trois classes dalgorithmes qui constituent lensemble dalgorithmes se dgagent : (implicites, des mthodes arithmtiques incrmentales, A travers et st~~crurelles) deux familles

. La qualit premire des algorithmes de DANIELSSON, COHEN demeure le cadre thorique gnral dans lequel ils peuvent donc sappliquer & une grande famille de courbes.

de JORDAN et de raisonnent ; ils

- dans la premire famille, nous trouvons <rois mthodes incrmentales gnrales dveloppes par DANIELSSON, par JORDAN et al. et par COHEN, qui raisonnent partir de lquation implicite de la courbe, - dans la seconde famille, nous rencontrons une multitude dalgorithmes plus ou moins spcialiss et spcifiques la gnration de tel ou tel type de courbe (segments de droite et coniques). 2.3.2LES METHODES INCREMENTALES GENERALES

. Dun point de vue pratique, ces mthodes gnrales nous permettent souvent demployer uniquement laddition et la soustraction et une arithmtique entire (en particulier pour les polynomes de degr deux et m>ins). Hais RAMOT et BELSER ont mis laccent laide de contre-exemples sur la faillibilit de ces algorithmes, mme dans des cas trs simples : ainsi ladaptation de ces algorithmes des fonctions particulires devra tre toujours soigneusement teste avant leur mise en application. On examinera en particulier si la tangente locale ne variera pas trop lintrieur de la distance unit de la grille. . Dautre part, lalgorithme de J0lW.N produit des courbes plus lisses que les algorithmes de DANIELSSON et de COHEN CBT lutilisation des S mouvements lmentaires attnue leffet descalier. Lutilisation des 0 muvements a aussi pour effet dengendrer une courbe plus prcise car les points calculs @ont plus proches de la courbe idale, et elle diminue aussi le nombre de pas car le nombre de points dtermins est infrieur celui engendr par les techniques 4 mouvements. A cet effet, nous dvelappoos ci-dessous la mthode de JORDAN.

Les mthodes incrmentales dfinies par leurs quations Le calcul

gnrales implicites

sappliquent sur des fonctions (f(x,y)=O o x, +RI. formule de Taylor

C-

2.3.2.2 Soit

- La mthode la courbe

de JORDAN et &. plane dfinie continues par :

i<JORUAN et at son quation

?3>1 : (1)

implicite

des courbes repose sur lquation de la m f(x+h,y+k)=f(x,y)+ 1 -! (h 2 + k -) d n f (X,Y) dy *=, 1

f(x,y)-0 et ses d&ives f x .af.

supposes f =i+L

Les variables h et k sont gales ici il ou 0 et reprsentent les pas ou mouvements lmentaires effectus en x et en y. A ce sujet, DANIELSSON et COHEN restreignent les possibilits de dplacement partir dun point donn aux quatre mouvements axiaux alors que JORDAN inclut les quatre mouvements diagonaux. Sachant que le point de dpart appartient la courbe et suivant les hypothses initiales (mouvements lmentaires, sens de parcours de la courbe), le point suivant est calcul chaque pas partir de la valeur et du signe de la fonction et de ses drives premires au point courent. Le calcul et la mise jour de ces quations sont raliss grce au dveloppement de Taylor.

ax* y
23 f

ay
af ayax> f yy =& ay de dpart la appartient courbe B la courbe aussi prs et que le (2)

f xx

=& ax

x;

*a*

Nous supposons est gal 1. La mthode

que le point est

propose

de suivre

que possible. 2.3), nous

s~pp0~~
dons alors

que noUs SOYONS BU point 8 points voisins possibles

p=(x,y) (voir figure : (x*l,y),(x,yfl),(x~l,~~l)

16

17

Y+

y-1

Figure Il existe

2.3.:

La courbe, deux

1
f<O

++=(-fy,fJ .

Les variables Ax et Ax valant +1, -1 ou 0, le calcul des qatis (10) ne peut se faire quavec des additions et des soustractions. De ~1s. ce calcul se simplifie pour des polynames du second degr en X et en Y. La mise jour des variables fx, f y et fXY dpend du pas que nous avons pris. Soit 8-x pour im pas en X, a=y pour un pas en Y et u=xy pour pas en x et Y. On obtient alors : Ax 2 + . . . (Ii) Ax2+2fxyAxAy la forne + f y y Ay)+... :

lP
.

*
f>O .

.+ -Y

fX = fa+

fx Ax + ; fxx

fy

1 2 f y = fa + f y Ay + z f y y Ay + . . . fv= f + fx Ax + f y Ay + + (fxx gnral a donc

x-l

X+l 8 pas possibles. : + s=(-f f ) o -G. Y x Lalgorithme suivante

le point

P et les

sens pour oppos de fx.

parcourir Y

la courbe

AX sera AY sera trois,

du signe du signe

En choisissant ainsi : Soit D = {l si 0 si

la direction on choisit on choisit (fy<O (fy20 (fx>O (fx<O +z Y

+: ou 4

on rduit

les

8 pas possibles

(3)

alors : 9 (fy>O g G g (fy<O (fx<O (fx>O puis soient

et D=O) 2 et D=O) et D-0) -

et D=l) et D=l) et E=l) et E=l)

alors * alors alors

AX = +t ; AX = -, ;

(4)

*Y = +, ; PIY = -1 ; point pour lequel /fi est

et D=O) -0

(5)

Pour les courbes o le dernier point ment calcul par lalgorithme, le critre est le suivant: : Soient (~,,y,) les coordonnes

atteindre nest darrt que nous point

pas oceksaireaxons retenu

nous choisissons fX = f(x+AX,y) f y = f(x,y+Ay) fXY= f(x+AX,y+Ay)

le prochain

minimum (6) (7) (8)

du dernier

de la courbe.

ainsi & 3 g

: (IfXiClfYI) (Jfyl<lfxI) (jfxY161fxl)et Les drives et (lfxl<lfxyI) (IfXYirlfYI) partielles sont alors alors alors mises AY := 0 ; 0 AX := 0 ; 0 pas en Xfco pas en E, (91 et (jfy/<Ifxy/)

Tout point tue *l unit (Xs,yf) qui par adequat serait final, cest--dire

de la courbe, engendre par lalgorithme de JORIMN, se side la courbe thorique en x et en y et donc du point final hypothse appartient la courbe originale. Un critre darrter lorsque le point courant est fl unit du point que (Ix-x~~LI et Iy-yfl<l). (1)

~0 pas en X et en Y -fco jour par les quations : (10)

Mais neuf points rpondent B ce critre. Ceci peut tre amlior en exaininant la pente de la tangente la courbe a point final. Si la tangente se situe dans le6 Ier, 4me, 5me et Sme octanfs, il y a plus de pas en x quen y ; ainsi ne galit en x et ne ingalit en y suffiront. Le critre darrt est alors :

fx = fx+fxxAx+fxyAY+ f y = fy+fyyAy+fFAx+

~(fx3(AxX)2+2fx2y(AxAy)+fxy2(Ay)2)+... (f 2(Ax)+Zf T YX y2x(AxAy)+fy3(Ay)2)+...

(FXf)

=t (lu-y, l,cl)

(2)

Pour les 2.3.6 et 7me octsnfs, galit en y comme suit : (Ix-x,l<l) et (Y=Yf)

le critre

d'arrt

sera

bas

sur une
(3)

Il y a seulement 3 points qui satisfont ce critre. est plus simple que le test (1) mais une pr-dtermination dans lequel le point final se trouve sera ncessaire pour emploie les tests (2) ou (3).
2.3.2.3 - Conoeuahn

De plus, ce test de l'octant dcider si on

Nous avons montr dans <HEGRON 83c> que l'adaptation des algorthmes gnraux de DANIELSSON, JORDAN et COHEN n'est pas comptitive pour la gnration des segments de droite et des coniques par rapport aux algotithme spcifiques. Ceci est d la redondance des calculs effectus pour la mise jour de f(x,y) et de ses drives et pour la comparaison des valeurs obtenues, et en particulier un plus grand nombre de points engendrs en ce qui concerne les mthodes de DANIELSSON et de COHEN. De faon gnrale, ces techniques gnrales n'exploitent pas les proprits inhrentes chaq"e courbe. 2.3.3
2.3.3.1

- LES METtOUE.
- GnUA

INCREMENTALES SPECIFIQUES

La Table 1 nous prsente la plupart des algorithmes incrmentaux spcifiques la gnration des segments de droite et des coniques. L'tude comparative de ces algorithmes (voir ~EGRON 830) nous a montr que le principe de BRESENHAM runissait les qualits suivantes : - gnralisation - les prcisidn, possible pour un grand les nombre meilleures de courbes qualits ; graphiques: entire complexit

courbes engendres symtrie ; des points d'addition

possdent

- la squence et des oprations - les algorithmes pratique (valuation 2.3.3.2 - GtnWtin

est obtenue grce et de soustraction

A une arithmtique ;

obtenus possdent galement la meilleure du nombre d'oprations lmentaires). du phincipe de BRESENHAM

gupposcos que mous sommes arrivs au point (r,q) le plus proche de la courbe idale (voir le point suivant, nous limiterons notre choix mentaires ou trois en dcoupant respectivement courant en huit octants ou en quatre quadrants. ns grce aux valeurs (pente et direction) des

de coordonnes entires figure 2.4.). Pour calculer parmi deux mouvements ll'espace autour du point Ces derniers sont dtemitangentes en ce point.

NOUS avons constat que le dcoupage en octants (deux mouvements) tait plus avantageux qu'une partition du plan en quadrants (trois motivemsnts). Dans ce qui suit nous ferons donc notre analyse au niveau de l'octant, et en particulier dans le premier, le raisonnement demeurant identique pour les sept autres. Supposons 2.4.). (a)
(r+l,q+l)

Le muvsrent suivant sera ddtermio grce aux expressions D(r+l,q) et D(r+l,q+l) qui valuent respectivement les diffrences (y2-q) et (y2;(q+1)) identifiant ainsi le point de l'cran le plus proche de la courbe Idale. Pour chacune des courbes tudies, le problme est de trouver partir de son quation implicite l'expression D(r,q) et partir de celle-ci l'expression E qui permettra de calculer le mcruvement lmentaire suivant, en utilisant une arithmtique entire et les oprations d'addition et de soustraction uniquement. De fawn gnrale, g=D(r+l,q)+D(r+l,q+l), ~uvement axial sinon 2.3.3.3 - conceustin l'expression E est et le point suivant mouvement diagonal. donne par l'quation par la squence : si ESO alors

que nous nous

dplacons

dans

le premier

octanf

(voir

figure

k,Y,) (r,s) # Positions la courbe le point

CC (r+l,s) Cd)

Dans ce qui suit, nous redonnerons les algorithmes prconiss par w,ESENRAM pour la gnration des segments de droite, puis nous appliquerons la gnralisation de sa mthode au calcul des ellipses, des paraboles et des hyperboles. Pour ces trois coniques, nous distinguons le cas "simple" o les axes de symtrie de la courbe sont parallles aux axes du repre, du cas plus gnral o les axes de symtrie ont subi une rotation. par r, rapport on a

Figure Soit Y,@Soit l'cart ;,

2.4.: P,(r,y,) 9+ ;r,

relatives des points candidats idale (premier octant). de la courbe idale d'abscisse

2.4. Gnration des segments de droite


Le segment de droite est la primitive graphique la plus courarment utilise pour la gnration de dessins ou d'images. Un segment est caratGris par les coordonnes de ses extrmits que nous noterons (xd,yd) pour le dbut et (xf,yf) pour la fin.

D(r,q) y,-q.

une expression

arithmtique

qui

nous permette

d'valuer La pente de

Soit P2(r+l,y2) le point suivant la tangente la courbe appartenant


q+;>y22q-;

de la courbe afficher. b.1C.a" aura :

figure

Les deux 2.4.) - soit - soit Le point

candidats le point le point P2 peut

possibles (r+l,q+l) (r+l,q) vrifier

pour

l'tape

suivante au mouvement

seront

donc ;

: (voir

Deux algorithmes s'avrent LUCAS et celui de BRESENHAM. 2.4.1 - L'ALGGJZITHME DE LUCAS

particulirement

intressants,

celui

de

correspondant correspondant l'un

diagonal axial. suivants :

au mouvement

des 4 cas de figures mouvement diagonal

a) 4 + ; > y2 q+1 b) q + 1 > y2 > q+ ; c) q++>y*aq d) q > y2 a q- +

Pour engendrer un segment de droite, LUCAS(CLUCAS 77>) se ramne au Premier actant. Comme nous nous dplacons systmatiquement chaque pas suivant l'axe des X, nous valuons l'erreur cotise sur les ordonnes si on ne modifie pas y. A chaque tape, l'erreur ainsi commise se cumule. POU~ la minimiser, il suffit de modifier y (en ajoutant 1) lorsque cette erreur atteindra ou dpassera l'unit.

23

Sous sa forme gnrale, Gntin

l'algorithme

s'crit

:
zti -tiZiti CO mthode de BRESENHAM & &u XZ,DYZ,DXY,&Y , ; : VX,UY,XINC.YINC, DX2 := vx + 0x ; DYZ := UY + DY; XINC := & xd c x6 e tl e-f ; VX := abslxd-x61; YZNC := & yd c yA e +1 duron -1 ; VY := abbktd-Y61;

SEGMENT-1 [xd, yd> x6, y6 : uU.bd

D6bu.f CO m&thode de LUCAS CO -uUicn : AX,AY, XINCR,Y NCR.CUMUL,X,Y; P

x 2 Xd, y := yd a&chen p&U Ix,yl;


+l bhx~ -1; XINCR := &i xd < x6 a&h4 XINCR := & AX &

yd < y6 a.%~& +l A.&on -1; -:= nbs(xd-x6), Ab := abAf,d-Y6); @

AX > AY CO on deaa&x Le matium de po.int.4 * CUaoL := X/2; Pola I := I U6 u AX @ x :=x .!-+h. + CUMUL := CUMUL+ AY; 6.i CUMUL a AK - MWA CUMUL := CUMUL - AX; Y := Y + YINCR;

x := Xd ; Y ;= yd; a66ichen poid Ix,Yl; vx Y UY aeohs CO Y change pluA vite que. y CO -s := uy2 - vx ; VXY := VYZ -% x2;
VX w POUn 1 := I jtiqu Ai s20 - doti Y := Y+YINC; -s := S+~UXYl; &m7n s := .s+lDYZl; i%iINC

a6&icheA point

lr,yl;

CuhulL := CUMUL + AX; Si CUMUL > AY -e CUMUL := CUMUL - AY; X := X + XINCR:

nge plu4 vite que x CO s:= vx2 - UY ; DXY := DXZ - 47- Y2; Powr 1 := 1 judqu'1)Y & & SO &T~A X := X + XINC; -s := s + IDXYI; abm7 s := s + lUX21; ~-

2.4.2

- LALGORITHME

VE BRESENHAM

2.4.3

- GENERATIUN DUN ENSEMBLE DE SEGMENTS VE VRUlTE

Pour la gnration des segments de droite, BRESENHAM (<BRESENHAM 6%) dtermine chaque pas le point le plus proche du segment idal. Pour ce faire, il value de faon rcurrente la diffrence (S,-S2)(voir figure 2.5) en se situant dans le premier octant. Si (S,-S,)CO, on effectue un mouvement axial, sinon an effectue un mouvement dmgonal. fl n,c.weme"t di*good ;

Dans le cadre de la gnration d'un ensemble de segments droite, pokr oprer un gain de temps ou de mmoire diverses ides peuvent tre exploites : - l'algorithme de LUCASest plus comptitif que celui de BRESENHAM sur un ensemble de segmentsde droite o la majorit d'entre eux sont verticaux, horizontaux, - nous pouvons galement utiliser rptition. les techniques de compression et de

Figure 2.5.:

Prochain mouvement (algorithme de BRESENHAM)

25 2.4.3.1 - CompeAAhn e @X-1)/2 est entier alors on a ii1 mouvements axiaux 1 mouvement diagonal NI mouvements axiaux sinon 0" a NI mouvements axiaux 1 wuvement diagonal Nl+l w~ements axiaux !!A NI+1 muvements axiaux 1 mouvement diagonal Nl muvements axiaux. mais la squence de base est

Les algorithmes de gnration de segments de droites tudis prcdemment ne tiennent pas compte du fait que la squence des mouvements lmentaires calcule puisse conteoir des moootonies, c'est--dire des soussuites composes d'un mouvement unique : c'est le cas pour des segments horizontaux, verticaux ou diagonaux. La compression de ces monotonies est intressante de place mmoire intervient : le gain est apprciable tion de la nature de la scne. lorsque le problme mais varie en fonc-

Par ailleurs, la longueur 3 partir de laquelle il est prfrable de compresser une monotonie dpeod vidaeut des caractristiques de reprsentation des "ombres propres chaque matriel. Enfin, il ne faut pas que le temps ncessaire la compression au moment de la gnration de la squence et $ la dcomposition au moment de l'affichage soit trop important ;,sinon les performances globales du trac en seraient affectes. 2.4.3.2 - RpM.tion des segments peut comporter de droite, la squence des mouvements des sous-squences qui se rptent u" quadrant, la gnralisation en X et en Y. Les cas au

4me C#l) ____._.ca6- : AYY>l et AXl&Y est entier On est ramen au cas prcdent, rptde AY fois. 5eme ca6 __- _----

: AY>1 et AXl6.Y est non entier On calcule le plus grand conxm~" diviseur de AX ec AY. Ce PCCD fournira le facteur de rptition. La sdquence de base sera calcule par ufi des algorithmes de gnration de segment. chaque cas plus les sont importants, segments sont longs et plus les facteurs plus le gain d'oprations, donc de temps de est

Dans la gnration lmentaires calculs nombre fixe de fois.

pour rptitions important.

En effet, plaons-nous dans autres quadrants est immdiate. qui Soient AX et AY les peuvent se prsenter

le premier

accroissements sont :

respectifs

L'utilisation des guatre premiers cas devient trs vire intressante car les pourcentages &"ima&exigs des segments appartenant a chacun quatre cas peuvent tre facilement atteints. Par contre, celle du cinquime cas demeure beaucoup plus alatoire. D'autre part, l'utilisation la division dans les quatrime et cinquikme cas demeure un inconvnient.

des de

2.5, Gnration des cercles


segment .vereical ou horizontal, i.e. AX-0 ou AY=O 0" a alors une rptition du mouvement Le cercle rayon R. axial. 2.5.1 - L'ALWRITHME DE BRESENHAM est caractris par les coordoanes de son centre et par 60"

fime_CM : - - - _ __segment diegonal, i.e. AX=AY 0" a alors une reptition dXI mouvement diagonal.

BRESENMM (CBRESENLIAM 77>) cherche conme pour son algorithme de gnratio" des segments de droite, & engendrer les points les plus proches possibles du cercle initial en n'utilisant que des valeurs entires, l'addition et la soustraction. qu'au L'analyse point se fait dans le ler quadrant partir du point CO,@ jusdu cercle tant ramen l'origine. (R,O) ; le centre

prenons par exemple *y=, Le mouvement diagonal aura tire CM-1)/2) :

lieu

au milieu

du trac.

Soit

NI-partie

en A partir d'un point donn, trois mouvements lmentaires peuvent tre en valuant de manire envisags m,, m , m : le r~~uvement est dtermin rcurrente la 'diskce minimale qui existe entre le cercle idal ?F celui passant par les trois points candidats (voir figure 2.6.).

26

27

ration

des mouvements

de le figure

2.7.b:

a) Sens de parcours Figure 2.6.: Positions au cercle relatives initial qui des candidats possibles (mthode de BRESEWAM). suit, calcule le cercle par rapport (xc,yc Figure 2.7.:

du cercle

b) Ntnxkotation taires.

des mouvements

lmen-

Conventions

L'algorithme et de rayon R.

de BRESENMM

de centre

y:=R+KMI := M3: M2 := MI+I,

1. M3 := MZ+l; 2.5.2

Exemple

gnration

de cercles

par

1; mthode

de BRESENHAM.

- GENERATION DES ARCS DE CERCLES

di -

a:= A + n; 3<0 := a +x; *a +.& a<0 atm &i.mn & a := a-Y; & 320 &&A Aimm

. Le problme est de dessiner de rayon R o l'arc est dtermin Y := Y-2, n:=a + Y; MOVE <- M3; x := x+2, Y:=Y-2; A := A+Y-X:

l'arc d'un cercle de centre $,y,) par 888 coordonnes dbut et frn.

et

MOVE Mi; <4h0f1 X := MVE x := A := MOVE

X+2, A:=A-X; <- Ml; x+2, Y:sY-2; A+Y-X; <- M2;

Considrons la figure 2.8. o (x ,y ) est le point de dpart Nous avons deux fasons d'atteindre 18 pgint final (~,,y,) : soit courant le cercle dans le 88118 des aiguilles d'une montre (D-O), le sens inverse (D=l). I D=l (X,>Y,)

de l'arc. en parsoit dans

D=O $.Y,) Gnration d'un arc de cercle.

Dans cet algorithme, nous partons du point (-R,O) et progressons dans le sens des aiguilles d'une montre (figure 2.7.a). Nous utilisons le numro

* Figure 2.8.:

28

Dans la pratique, l'arc diffkentes : par trais points points. 11 faut alors calculer (Xc.Y,) : - cercle passant par trois

de cercle peut tre dfini de deux facons ou par deux points et les tangentes en ces le rayon R et les coordonnes du centre points (~~,y;)~-, 2 3 : > > )'+(~-y )*-R*=O et en considobt&nt un systme de deux

2.5.2.2

- L'&gotihme

de BRESENHAM
traant des cercles, les coordonnes du

BRESENHAM (<BRESENHAM ?7>) adapte son algorithme la gnration d'arcs de cercle ayant un rayon et centre non entiers. Le cercle gnral sera (x-a)2+(y-b)z=R* (x ,y ) et le point final (x .y ) appartenant &ri8n de rotation sera le 8enk des aiguilles yerse (0=-i). Il xi yi utilise les notations suivantes :

A partir de l'quation du cercle (x-x rant le nouveau repre d'origine (~,,y,),~on quations deux inconnues (Xi*+Yi2)-2
o Xi xc avec = xi = xc R2= x;

avec le point de dpart la circonfrence. La did'une montre (D=l) ou l'in-

xi
- x,, - X1'

xc - 2 Yi
Yi Yc = yi-y,, = y,-Y,

Yc

= 0,

i=2,3

i-2,3

: c'est la valeur quadrant suivant : mme chose pour

de l'abscisse le sens D=l l'ordonne restant suivant les

translate

au ieme pas dans le premier

+ Y;.

Qj : nombre par deux points Ta et Tb. A et B et les tangentes en ces points des deux 2 M,,M2,M3 A; : valeur

de quadrants

traverser angles Oo, 315' ; le signe ou 0 l'extrieur ; le signe est +Ai


et 270'

- cercle dfini de pentes respectives

: mouvements drant. est

dans

le si initial.

ler

qua-

de {[(xi+l)*+(yi-1)1-R') l'intrieur

de Ai indique du cercle de 3 indique proche

le point

Le centre est obtenu en calculant le point d'intersection normales aux tangentes donnes par les quations : normale normale en A en B Y=-(l/Ta).X+Y, Y=-(l/Tb).X+Yb du centre o Y&=YA+(l/Ta)*XA o Yb=YB+(l/Tb)*YB sont donnes par les galits qui

(xi+l,yi-1)

: valeur

de ~[(x~+~)~+~~~]-R~~+A~
(xi+l,y)

lequel du cercle. lequel

des

deux points suivent.

ou (xi+l,yi-1)

le plus

Les coordonnes x = (Yb-Ya)(Ta*Tb) c Ta-Tb y = c

a : valeur

de {[(x~~+(~~-I)~]-FP) (xi.~.-1) 1 ou (xi+l,yi-1)

; le signe
est le

de a' indique plus prs

des

deux points

du cercle.

Ya.Ta - Yb.Tb Ta-Tb

A=(XA,YA) B=(xB,YB)

Table

2 : Table

de transformation (xs,y,) de et

des paratres.

-A
0;1 130
-l,o 0,-l

Si les coordonnes entires, l'initialisation y,y s)-(xs,Y,)

et : q,Y;)=k,,Y,).

Exemples

: Gnration

d'arcs

de cercle

par

la mthode

de BBBSENiIAN.

Gt%.km%n Vebui

ARC-CERCLE IX*. y*~~. de BRESENHAM ko

Yt="td

CO methode

& zTmtition du cent.@ du ct%zLe x* := x; - a,gb := y; - b % 3:= xi - u.,i& := y; - b de IX,&,1 et IX ,j 1: on *e mm&te au @eti Ninon -en lO,O1 *inon

aro &m mouvement 2YZG mouvement a':=2 A; Xi-l;

Ml; M2 &

NoRmaeidation

pahtor

qui et !A di,tection V=I pouh dc%dmiAeJl : x* = x0> Y*=Yos* MI*=Ml,, M2*=M2,, M3*=M3,
xi, Yl, 4i t'aide de la .kbLe 42. .tnmve~eS d PUM~A qt - q, modal0 41 de :

di

= M2

donb Xi+I:=X~+I,Y~+l:=Yi-l;

A~+,:=Ai+2Xi+I-fYi+I+2;

catche du nornbtle de quartrants 2 := 4~(q~-qb~ lc'eb.t--dore 2 p=o =$=3 * cl0 = p-1; !LX vdew .iniAde et xp* et YpY*

Ao:=Ai-4X. zj+,:=zj-1;

Loi

5-

caeC&a

de A, +2(X*-Y*+Il;

* = (xb+fl'+~~b-ll* 0 i (xi-a)+(y;-b) 6?Sena de notation D=l ou -1 Pmmieh point x := x;; Y := y;; aana: xi := x, Ai := A*; Qj := G; ; Yi := Yo; :

- (x*-al'+(y*-blf - Ix*-al*+[y*-bl'

2.6. Gnration des ellipses


2.6.1 - ELLIPSES SIMPLES lAtgo&thme de ROY1

Soit l'ellipse simple centre en c(Xc,Yc) et d'quation (X-Xc) 2 (Y-k ) 2 -1 (voir figure 2.9) o a,bSN* - a2 + b? xc,Y&Z.

32

Synrhse dimuge

: Algorirhmes

lmenroires

33

pnoc&h.te T S E CA CD := := := := :=

TRACER-@lAURANT 0 -4 * -S/Z -6 ' CA A2 * B - 2 * 82 - AZ 82 4 A2

x := xc y := yc _ ,Lb2 * B A66*chen IX, Y1 POUIL I := 1 &&I =%.=x+~c SiE>=O - &m d.?tut -E:=E+T+CA T:=r-M simple dvelopp par ROY a la juapuDXT&

Figure

2.9.:

Gnration (premier : SIMPLE

d'une ellipse quadrant). de l'ellipse

simple

(Mthode

de ROY)

forme

L'algorithme suivante

de gnration

ahlon%fu$ ywlc =y Ej=E:T-S+CD


T:=T-M s:=s+us ad@cheh f&l - 82 - AZ /* r et S tw.iu 1 %YT := ABSIY-YCI E := E - Tl2 - SI2 CA := -6 AZ CD := CA - 4 * BZ PolIn !!!TE&

Gtnhation Debut --

ELLIPSE

[XC,YC,A,B,entienl

CO mtthode de ROY CO entiti : AZ,BZ,VS, $T;aXr cm, Ytic,X, Y r,S,E.CA,CG AZ 82 US M VXT :=AA := B = B := 4 A2 := 4 * BZ := ARROMII

:= l~Ijl(6sUdwT~

IAZ/SQRlAZ+BZll

xblc:= +I Y.hIc:= -1 TRACER-QUADRANT YiJlc:= il TRACER-QUAURANT xinc:= -1 TRACER-@lADRANT Yinc:= -1 TRACER-QUAVRANl Fi&

Y := Y + Y.& & E<=O &~LA debut -T:=E-S+~A s := s + us -& =E-S sj=s+lls+ T:=T-M x:=x+xim ,-+Cv

34 Gh6W.t.hI ELLIPSE @lELCQN~liE (EMIER:XC,YC,A,B,M,Pl

35

2.6.2

- ELLIPSES

ZUELCON@4ES [@otihe

de ROY1

Lorsque les axes de lellipse sont parallles lquation de la courbe est donne par : b* (Xo-Xc)2+a2 (Yo-Yc)z=a b o a,b N* Xc>Yc 6 2 Lorsque lon effectue une rotation nous obtenons lquation :
(p2b2+,,,a)(X-X (1) +2(bl-a2)p avec )*+(b*m*+a2p2)(Y-Y c m (X-Xc) (Y-Y=) = a* b

aux axes du repre,

Dtibut -

CO tihade

de ROY &

ENTIER a,B,yO,y,k,E,T,S,D ENTIER Ca,Cd,V6a,Vdd,VXa.V~d ENTIER D~~~,VXX~,DXQ~,~YO,DYREEL U AZ 82 MZ PZ ,, * y0 y k := := := := := := := := := AA B*B M*M P*P QZ*BZ+MZ*AZ MZ82+P2AZ IEZ-AZI*P*M z*yo AZ*B21P2+MZl

dun angle
j2 c (pf+m*)

avec

e e J - $, ;[,

tge = g me2 et pez* P

Nous posons : a = pf b + a mz 6 x b ,r + a2 p?

2 := a$-yoyo Dtil := ARRO~ZIS~R(k+IB+vol/llu+BtyJZll~ Vx& := ARROMlI(S~Rlk+l6-vo~/llu+E-y~*Z~l~ U := vo*S~R~k/lu*Zl~ Uxo := ARRONDIIll si Y0 = a ohh4 Dqo := B b.&wn Ugo := ARRONUI(a*Ulvol Uym := ARROM)I~ivo/BI*S~R~k6/211 D : i 2(k-a*VXO-B*VYOZ+y*VXX(l*YO) T := 4a*vXO - Z*YDYO s := 4BUYO - zY*uxQ 1 IeA quti 1 x := Xc-D*o Y := Yc+vyo ti := Utif tic := +f Y.bIc := -1 sg := 1 TRACER-@lAVQANT ;*,x$~ Y := Y:-yo := +, YhIC vx* := Util 1

Y0 = (b-a* )pm Y2YO k = a2 b2 (pz+m*) Lquation


(1) devient alors :

dfi

lgorithme qui suit engendre lellipse quelconque (voir figure 2.10) DB~ lquation (2) (ellipse simple ayant subi une rotation).

t -g ure 2.10:

Gnration dune ellipse

quelconque (mthode de ROI

sg := l f TRACER-@LAURANl

37

2.7. Gnration des paraboles


2.1.1
La trecmm PROCEDURE
: T s ::=s sg : T

- ARCS VE PARABOLE SIMPLE


parabole de la : les coordonnes les coordonnes dtermine laxe quation xxc) a= (YB-YA) b ,((XB-XA) est courbe dfinie (voir par figure

l&otihme
lquation 2.11.).

de ROY1
y=a(x-xc)2+b o (xc,b) esf lex-

TRACER-Q"AORAkT
l 20 -6 +sg*r

ca:= -sa+sg*r
Cd:= Ca-4'f&Sg*vl

Soient XA,-fA XB,YB xc OIl a

de lorigine
de de

de la portion son extrmit symtrie de la courbe

de (i.e.

courbe de la

tracer droite d-

uta:=-4% uba:=Z*sg"r utd: =mLl+l%a


Dhd:=Van-4'8

* (XB+XA-Z*XC))

(XB-XC)z*YA-(XA-XC)ZWB (xB-xA)*(xB+xA-2*xc) Y t

7 := T+O&I s := sima

_~ gf,,, bimon
E := EtT+StCd
T := T+td S := S+Vbd la Ca := -b*B+Sg% Cd := Ca-4*(o-Sg*yJ via: - lua Figure

c 2.11.:
Gnration de gnration : dun dun arc Lalgorithme forme suivante

I
de arc parabole de parabole (mthode

xde ROY). par ROY, a dvelopp

ma:= -4'6 Uyt:= AESIY-Y,+XincUy-1

GnhatiOn ARC VE yPAR$UILE {Entieh: XA, YA,XB,YB,XCl Dbut CO mthod d RO h ErlzeA : YCe& CBO Si IXA<XC t XC&BI ou (XB<XC et XCcYAI Zi?om debut bi ABSIXA-XC)=ABS [XB-XC] a&&2 &e YC
6uzon &-il& TRACER (XC, YC,XA,YAl TRACER IXC.YC.XB.YBl USXO cm := (XB-XAl*fX~Z*XCl

POUA1 :=1 $ oyt de m y := YWiAC s+ E<=L?


e debut --FT=EtStCC7 T := T+Dti s := x+LJ*n

YC

:= MB-XCJYA-(XA-XCIVB := ARRONDI ICBOIUSXOI

dbut -. s
E :EtT+S*Cd

T := T+Did S := S+Dad A&&%u &,

IX&%4 (XCZXA aloti

et xA<XBI ou et xA>XEI TRACER lXA,YA,XE,YBl

-iZ%

TRACER lXB,YB,XA,YAl

T%%ER-@,AUFWT

39
Dbu* --%Lia Phocehe TRACERIEidia: xv, WJF, YF, : VX,DY,VELTAY,M.V~,D, X,Y,XINC,YINC,T.T,CA,CV vx := XF-,a VY := YF-w VELTAAY := ABSIDYI VT :- 4DELTAY VSZ := VX(XFtXO-2~) DXT ii ARROWIP'DSX/VTI Ix>0 &M XINC := +I ZZi XINC := -, gDY>O aCou YINC := +l YGGi YINC := -1 x :XvY := w A66ichm IX,YI T := VT'ABSIX-XC) E := T+M/Z-VSX 1 M ebt &ABS (X-XCI<DXT

t.~.2

- ARCS DE PARABOLE Q.UELCON2UE Y-Yc=a(X-Xc)2 l'quation de la parabole d'un (Y-Y4 = 0 le mme principe variables introduit que pour les
1

soit (xc,Yf).

de centre 8 avec

de symtrie 0 B ];, 5 [,

lorsque l'on effectue nous obtenons : B pg' e (Y-Yc)2+a(X-Xc)*+Za -(Y-YC) JI*tg'B

une rotation tge tge (X-Xc)

angle

+ (X-Xc) pas ici

GF.F

Nous ne pouvons lipses.


p,i,e =/

appliquer

elaiL-

En effet, nous voyons apparatre les ne dans le double produit, ce qui m


de pente f [O,l] */

X et Y an degr le coefficient

aZona db$

,la6qdEL;g

tangentes

cv I: CA-ZVSX BT := UINIABS~UXI,-AgS(X-XCIrDXTI POunI := I-BT& "= X+XINC E<=O * 1' mvt ax*ae '1 E := E+CA+T * 1' mut diagonne Y := ,'+YINC E :- E+*+T T := T+OT A66i.chen IX,Yl si -

La prsence de ce coefficient nous empche de nous ramener une $xpression entire comme celle obtenue dam le cas des ellipses. De ce fait, les incrmentations effectues chaque tape des calculs ne seraient plus entires, ce qui provoquerait une accumulation des erreurs. Or, l'intrt de toutes les mthodes'prsentes jusqu'ici est justement le fait qu'elles n'utilisent que des oprations entires.
'1

2.8. Gnration des hyperboles


A titre d'exemple, nous dveloppons mthode de BXFSENHAM expose au chapitre hyperboles.
C]I.+~[

ci-dessous la gnralisation 2.3.3.2 pour la gnration

de la des

";

;f?:",

debut 1 CM de6 tingetiu -7x := 2Vsx


CV := CA-4*UELTAY T := -T E := -E-T/Z+VELTA,'+V.SX PounI:= lp&bl~VYT~ i!Es Y := Y+EN? - E<=O aeou 1' InOUU~~ti 'E :- E+CA * 1' nou"meti X :' X+XINC E :- E+C,,+T T :- T-VT

de ,uente

2.8.1

- GENERALISATIUN
"SIMPLES" Nous

VE LALGORITHME une hyperbole

VE BRESENHAM AUX HYFERBOLES


l'origine du repke et d'qua-

,*

T e,,*

paui

*/

considrons 'Y=
=l o

centre

tion

: $-,
a et

b E N* de centre quelconque (Xc,Yc) est

arial diagonae

', 8,

La gnralisatioa obtenue par simple

B une hyperbole translation.

L'hyperbole possde deux asymptotes de pente + i et -i. Nous raisooneIons uniquement sur le premier quadrant (X>O et Y@) car les autres branches de l'hyperbole sont obtenues par symtrie. Dans ce quadrant, les Pentesdes tangentes la courbe appartiennent ]H, -G On peut faire deux hypothses : . si:>
.YCII.

1, il

n'y

a pas de changement d'octanf

d'octant (figure

(figure
2.12.b.)

2.12.a)

. si i ( 1, il

y a un changement

40

Soit le Aint r-+<X, posons Alors Soit cmmce ,,,,~ /i a) b L a 2.12.: Gndration considr peut tangentes (~,y) tels de lhyperbole se dcomposer courbe : ,/ b) .' , .y !/' I b > a (premier en deux quadrant). parties : [1,+-r, ce q$j rmns valeur x e [a,+[, si b 2 a, m,q Dans prochaine La progression se fera en Y. la que b < a. courbe : appartiennent ]:, de ,~.,i' .+X20+$

P (x ent!erle

,q)

le plus

point de la courbe afficher, proche de la courbe. On a :

le

point

(r,q)

tant

gr++ D(r,q) D(r,q) P2(x2,q+1) la pente = a2q2 est un le + a2b2 aambre point - br2. entier suivant on aura de de : mme lhyperbole signe que (x,-r).

afficher.

B [1,+-C

,&e

on mntre le choix si si KO E>O

que la quantit E dfinie entre le mouvement axial (cas (cas (a) (c) et et (b)) (d)) alors alors

par et muvement mouvement le

E=D(r,q+l)+D(r+l,q+l), mouvement diagoml axial ; diagonal.

dter:

Figure Le

quadrant

cm*:
E=2 D(r,q)+Z*S(q)+T(r)+Za2-b2. le cas du mouvement E considrer sera + 6 a* dun de mouvement E considrer diagonal, sera on passe donc : au point (r+l,q+l). La axial, donc on : passe au point (r,q+l). La prochaine

A) Les correspond

pentes des aux points

la que

appartiennent

+ z*S(q) le cas valeur

8) Les correspond Xe1

pentes des aux points a2 ,a2

tangentes (~,y) tels , +-[ si

1 [ , ce qui

~r,~ + z*s(q) + ZUT + 6 a - 4 b2 o T(r) = d D(r,n) = e2 br r dr

Le a) Les On

progression pentes suppose des tre

se

fera

en

X.

avec

T(r+i) S(q+l) En rsum, par la

= T(r) = S(q)

- 2 b2 + 2 a* le : plus proche de la courbe suivant (r,q) sera

tangentes arriv

S h,+au point de coordonnes (r,q) donn le point squence

&iE<=O cl&md

mouvement

c7Xidlen

Y1

Linon

E:=E+ZS+ba; S:=S+Za; mouvement dhgomf


E := E + Z*S + 2T + 6 a* 4

S:=S+Za; T:=T-Zbf:

42

b) Les pentes On suppose

des tangentes tre arriv

e]+

;,

+1[ de coordonnes (r,q). ,

au point

ayec r(r+l) s(q+l) la sque"ce -

= T(r) = S(S) :

+ 2 bz - 2 az. point suivant le plus proche de la courbe aera donn par

En rsum, le

6.i Ec=O
&JtA &imn -

muument cLci0.l (en E := E + Z.T + 6 b T:=T+Zb; moulJemeti otiagonae E ;= E + 2*T + PS S:=S-2d; T:=T+2bP; : -

Xl ;

; + 6 bf - 4 d

L'algorithme r, le paint (r,q) la courbe. on a : P+Y, L'expression . Soit pente 6 q+: D(r,q)=b'+ le point : - a2b* suivant - a*q2 est du signe de (y,-q). afficher. Comme 1;

. Initialisations

A- cas des tangentes de pente 6 D,+-[ Le point de dpart est donn P~I' : m=xc+a o (XC,YC) est le centre YD = YC Ce point appartient l'hyperbole T(xD) = -2 bz(XD-XC) = -2 b'*a S(YD) = 2 a2 (YD-YC) = 0 On aura les initialisations T := -2 a*bf s := 0 E := T + 2a2 - bz.

de symtrie et OII a :

donc D(XD,YD)=O

P2(r+l,y2) aura

de l'hyperbole

e &l[on

suivantes

mine

On rentre le choix - si - si

que la quantit du mouvement : (a) (c) et et (b)) (d)) + S(q)

E dfinie alors alors

par E=D(r+l,q)+D(r+l,q+l) axial diagonal.

dter-

EsO (cas E>O (cas :

mouvement mouvement

B- Cas des tangentes de pente Sli,+l[ Dans le cas du dplacement en Y 0x1 avait Dy(r,q) = a2(q-Yc)z + a2h2 - bf (r-Xc)* Ty(r) Sy(q) Ey(r,q) = -2 b2(r-Xc) = 2 a2 (q-UC) = 2 Dy(r,q)' + 2*Sy(q) + Ty(r)

(i.e.

b<a)

On a donc E=2 D(r,q)

+ 2 T(r)

+ 2 b' - a? au point (r+l,q). La prochai-

+ 2az - b'.

Dans le cas du mouvement axial, on passe ne valeur de E considrer sera donc E(r,q) + 2 * T(r) + 6 bZ.

Dans le cas du dplacement D,(r>q) = -Dy(r,q) T.&(r) = -TyW + Ty(r) les sxw = -Sy(q) Ex(r,q) = -(E On aura donc E:=-E-T+S+br T := - T s := - .$.

en X, on a :

Dan8 le cas d'un mouvement diagonal, prochaine valeur de E sera donc : r*q T(r) s(q)

on passe

au point

(r+l,q+l).

La

- Sy(q)

- hz - a*). suivantes :

+ P-T(r) = dD0 dr = dl)0 dq

+ 2*S(q) = +2

+ 6 b'

- 4 a*

br

initialisations +a2

= -2 a'q

Le dernier point peut tre dfini par un point appartenant l'hyperbole

par une borne (XF,YF).

ea X ou en Y, OU bien

44 L'algorithme parallles - (Yb-p

Synthse dmoge

:Algorithmes

lmentaires

45

symtrie (X-4~ a2 Y

suivant engendre une hyperbole admettant des a~ aux axes du repre et ayant pour quation _ 1 (voir figure 2.13).

A,$@chen point T := -2'A'BZ;

KYl;

s := 0;
E := T+Z*AZ-82; CA:= PAZ; CD:= CA-4*B2;

&Il4 -F:= &lon -

CO muvemeYu ariae & E+Z*S+CA; s := S+US: CO mouvement diagond K:= X+I; E := E+Z*S+2*T+CV; s := S+US; T := T+UT;

&a

1
Figure 2.13.: Gnration d'une hyperbole (Xc,Yc)=(O,O) (gnralisation BRESENHAM). (premier quadrant) o de la mthode de l'a CO gMm.tion eti du pumien quad>rant &a: A2,BZ,US,VT CA,CD,S,T,E

$?b<a--*

us := -us; VT := -VT: E := -5Tk+BZ+AZ; T := -T ; S := es; CA:= 6% ; CV := CA-4AZ; CO on be d#ptace au&mU taxe

des ab&&bes

&J

o^ E,iO; dohb -r:= &non -r:=

NOUS obtenons, dans le cadre du premier quadrant o XF est maximale de la branche asymptotique l'algorithme suivant : G&&aaXm'HYPERBOLE IXc,Yc,H,3,XF:etienl Debut --

CO mouvement ati & E+Z'T+CA; T := T+m; CO lmuvement d.+md Y+I; E := E+Z*T+PS+CD: s := s+vs; T := T+VT; point lX,Yl:

40

X, Y,VXT .tkuadAazioti
% := A'A. BZ := 8%;
0s m :i : +pAz; -pp;

&J

&

WA &xb .ZZGi x := xcxty Y := YC;

VXT := ARRONDI (Af/SQR-(AZ-B211; VXT := XF-XC ~pentea l,Vx&

47 2.8.2 - HYPERBOLES AVEC ROTATION les axes de symtrie de lhyperbole lquation de la courbe est donne son d parallles par : aux axes

lorsque du repre,

Aprs avoir *on* lquation (1)

effectu :

une rotation

dun

angle

SS:]-

$,+

$[~US

obte;<

D= mme, une tangente Ig$ et les et (-DX-,,-~y-,) J DX-, DY-, = = 1 o k(B-yo) ( u+f3-2yo) ++DX asymptotee P2S dexistence

de pente

gale

-1 existe ~0nt alors

si

et seulement par

Si

(psbz-&,2)X*+(bzm2-ap)Y*-2(a2+b2)p.m.XY

= azb(p+mZ)

coordonnes

des points

donnes

(DX-,,DY-,)

=V~C tg6 = $ 0 m e z et p En posant a 6 y0 Y k = = = = =

e z*

p2bz - a2m2 b2mz - .*p2 (a2+b2)pm 2 y0 aPb2(p~+m). alors :

(utFyo2) -1 de lhyperbole ont alors Pou= PenteS

Lquation 0X2 + 6.F . Changement drant seffectue soit infinie. On m0t=e

(1) devient + y.XY = k de quadrant aux points tangente

. les P, =s,

: comme pour lellipse, le changement de quao la pente de la tangente est soit nulle, de pente infinie existe si et seulement est infinie si

et les si si si si si si

conditions

des pentes

de la tangente

la courbe

sont

quune

; < ;. Dans ce cas, les coordonnes des points *Ont donns par (DXm,DY,) et (-DXm,-DY=) o :

o la pente

P,>O alors les pentes infinies existent, P2>0 alors les pentes nulles existent, OCP<I alors les pentes - +l existent, -<Pli-l alors les pentes = -1 existent, l<P2<* alors les pentes = +l existent, -l<P2<0 alors les pentes = -1 existent. et (l<P2<+m) sont exclusives, ainsi que

Les conditions (O<P,<l) (-m<P,<-1) et (-l<P2CO).

De mme, une tangente de pente nulle Dans ce cas, les coordonnes des points (-mo-DYo) o

existe si et seulemeot si m > i. sont donnes par (DXo,DYo) pet

Ayant dfini les quadrants et les changements leurs conditions dexistence, nous pouvons COne= pour chaque quadrant en tenant compte ici des et de la symtrie, les squences qui calculeront ches de la courbe.

de mouvement ainsi que pour lellipse, dterrnibranches asymprotiques les points les plus pro-

2.9. Amlioration du dessin au trait


2.9.1 - ~JWRODUCTION La quatification,p=oduit un effet descalier relativement dsastreux du point de vue de lesthtique des images. Plusieurs mthodes sont employes pou= rduire ces dfauts. En particulier, lide de BRSSENHAM est de rpartir lintensit maximale su= deux points (un point principal slectionn COauraparavant et un point secondaire dans des proportions fonction de leurs distances respectives la courbe). M.A.WY (<ROY 83>), a gnralis cette solution pour lamlioration du trac des cercles, des ellipses et des paraboles (voir figure 2.14.) partir des algorithmes de gnration des coniques utilisant la mthode de base de SRESENHAM. En OUtre, elle a montr galement que cette technique tait simple et efficace par rapport aux autres propositions et en particulier par rapport celles

tels

. Changement de mouvement (octant). Le changement sopre aux points que la pente de la tangente la courbe est gale +1 ou -1. +l existe des points si et seulemeat sont donnes par

On montre quune tangente de pente gale si k < m-pI et dans ce ca8 les coordonnes km (DX,.DY,) et (-0x,,-Du,) 0

48 qui utilisent des filtres numriques. de faire possibles. "clater" ces regroupements pour obtenir tous les cas de figure

Les oprations effectudes restent des oprations entires (addition Seul le coefficient donnant la rOU soustraction) et des comparaisons. partition de l'intensit entre les points principal et secondaire est un rdel. Il est le rsultat de la division de deux variables entires. L'intrt de cette mthode rside dans le fait que ces deux variables entires sont dj calcules dans l'algorithme initial, et ne sont par consquent pas introduites spcialement pour le calcul des intensits de luminwit.

Nous redonnons la version de ROY, (<ROY S3>) o le segment de droite est dfini par les coordonnes de ses extrdmits (W,YD),(XF,YF) et o lmax est l'intensit maximale et Ip et Is sont respectivement les inrensits des points principaux et secondaires.

. segment de droite

.*rc

de parabole

.cerc1e

.ellipses

Figure

2.14.:

Amlioration du dessin au trait (griss cellules 3x3) (tir de <ROY S3>).

obtenus

avec des

DY := YF-W DELTAX := ABSIUXI IJELTAY := ABSIUY) si vx>0 -&h5~c:=+I ziIiizi xim := -1 si Iiy>o - &hA Ycnc := l 1 6uzon Yinc := -1 x :;; Y := w A&&heh point IX, Y, I~X)

2.9.2 2.9.2.1

- h4ETHOUE DE BRESENHAM - Le Pnhcipe

Cette mthode d'limination de l'effet d'escalier drive directement de l'algorithme de gnration des segments de droite de BRESENHAM. Cett mthode slectionne le point principal et un point secondaire. Le point secondaire est tel que le segment passe entre ce point et le point principal. Ces deux points sont les points les plus proches du segment thorique. L'intensitG attribude un point est fonction de la distance de ce point au segment. La somme des intensits de luminosit des points principal et secondaire est gale l'intensit maximale (note Imax) pouvant tre attribue ua pixel. Aucune BRESENHAM. effet, les ries : cas modification fondamentale n'est apporte A l'algorithme de On se contente d'exploiter toutes les informations donnes. En diffrents cas de figure avaient t regroups en deux catdgodu mouvement axial et cas du mouvement diagonal. Il suffit donc

51

Suivant CilA ti -TZTAX>= 7Jhm


D[b -4 := a Poti 1 := I e I judq(ra mzti x := xixtic 0 := V+VELTAY VELTAX &

&

debut si

ZV-VELTAX<=O sinon dbs ?zilnA Y YtYtic -7:. Y Y := Y+Y.inc V := V-DELTA%

VELTAY>VELTAX D&b& 0 := 0 Pow 1 := 7 t-0 1 jll6q<ll VELTAY de ra3i ---Y := Y+Y.&c v := v+vELlAx si Pc=0 - LuzonA x := x-tic XiE dtbut si V-DELTAY< &NA debut -s* ZV-VELTAYc.0 go& x& x+xhc -$ : i=&&,

V := V-VELTAY

-Y*:= Y+Ytic V := V-VELJAX ~ Le?

x := x+Kiblc XA := x+x&
V := V-VELTAY

Cp := AESIVIVELTAXI 16 := ARRUMVI (CpZmaxl Ip := rmax-IA Ab,$khut poti IX, Y, lpl Ad&cheh poti (X,Y~,IAI

cp := ABS [V/VELTAYl lb := ARRONVI ICpIn?anax)co

IrttWAti

atthibute

au POti

2.9.3 2.9.3.1

- AMELIORATION - La dthode

VU TRACE DES CONIQUES de ROY

Par applicatioa mthodologique du procd dlimination des effets descalier employ par BRESENHAM pour le trac des segments de droite, ROY a dvelopp de fwan dtaille dans (<ROY 82>) des algorithmes visant supprimer ces mmes effets obtenus lors de la gnration des ellipses et des arcs de parabole .

53

2.9.3.2

- AmW.ot&ion

du

..tac~Z

dea

eeeipdes

. Ellipses simples Nous considrons une ellipse (X-XC) 2 (Y-Y02 -y--= 1 A?+ L'algorithme donn par

centre

en C(XC,UC)

et d'quation

ROY, a la forme

suivante

: : er&&zl

MC,YC,A,B,Zixsr B2 := BV US := 2'AZ UT := 2'82 UXT := ARRONDI lAZ/SQR(A2+82)) xinc


Yinc

D := D-S-AZ S := S+DS

YS: =

Y+Yinc

:= il
:= -1

1'

len

quti

'1

T := T-LT Cp := ARSID/SI Id := Cp%!.%x Ip := Imax-r*

TRACER-@lAVRANT vim := .I 1' TRACER-QUAURNJT m :' -, 1' TRACER-QUADRANT


2 quadtrant */ */ */

DYl := ABSIY-YCI POWL I := , 2 1 juapu'b


!?ET?& Y := YIYinC

DYT 6"e

3 qund>rant

Y.iYlc := -1 1' 4s quadMti TRACER-@lAL'&WT Pnocdwre TRACER-@lAlXANT v-6 -: := " S := -2'AZ'B D := 0 x := xc

si D<=O

V := D-S-AZ

Y := YC-Yinc*B A6&Lckm(X,Y,Znmrl
PotiZ:=I~l~UXT&&e !?E!s x := x+xim D := U+T-E2 si D>=O * YS := Y-Y.i.nc

D := T-BZ+?J T := T-VT hi!!

&& s := s+oP
cp := ABSID/TI 16 := Cp'lmax
rp := Inux-Ih A66isken point Ab&ha pa(nt IX,Y,I,wl lXS.Y,Ibl

54

S.vnrhtse dmage

: A lgorirhmes

/imenraires

55

. Ellipses

quelconques suit, nous ccnsiddrons une rotation d'angle les ellipses 88 1-r +;[ 2' dont

Dans l'algorithme de ROY qui simples auxquelles nous appliquons la tangente est donne par : tg B = ; avec M e 2, et P e z*

:= Sgy Vsd := -2.6


~ T:=TO%g S:=SO

PMc&i&W TRACER-@l4RANT : ma := -2% := Sgy

G6n6k&&n am%ioh& ELLISPE @iELCONQUE mbut CO mtibd d ROY ENTIER a,~,YO,t,k,~, yT,S EMIER D~a,U6d,D.ta,U.td ENTIER Dx.t1,Vti2,Uxo,Dyo,0yREEL U /* AZ a2 MZ P2 zk%iLkaAaon := := := := AA BB M*M PP */

lXC,YC,A,8,M,P:tienl

si 020 doJLA Ainon ~' CP := A-%SID/S) IA := cp*zmax Ip:=znklx-IA A&Wm Ad&heh point ~O*nt

YA := Y-Yinc YA := Y+Y&c

* (X,Y, Zpl IX, YA, 16 l

ut := ABSIX-Xe-XuzcDtil

c1 := PZ*BZ+MZvAZ B := U2W+P2*AZ y0 := (82-AZIPM b := A282*(PZ+M21 2*y0

x := x+x.&c Vu:= U+T-a &4 D>O cVk%A YA := Y-Y.&2 duton dbat s* D+s-6tvAa>O LUWLA dbut SL 2V+S-E+VAa>O aLoM YA := y+yinc X2ii dLui YA := Y Y := Y+Yim 77 := u+s-B+uti T := Md+T S := VAd+S 1 3s quadhant x := xctuxo Y := Yc-UYO X&c := -1 Dti := lktz 1
A.&On ii%.t YA : = Y+Y*nc @

D>LSI := ARROM)Z~S~RR(k*(6+yol/lla+8+2*yoI*lu86-yo~lll D&l := ARRONDI(S~R~k*~~-yoJL/Ila+~-2*yol~u~-yo~]~) U := yoS~RlklL8*a-a*yo*ll VX0 := ARRONDI Ill) si y0 = 0 &hA vyo := B &&on Uyo := ARRONDI IrrUfyo) OY- := ARRONDIllyo/61S~Rlk*%I16*a-yoll) Dl := k-aVXO-~DYO+yUXO*DYO TO := 2*oVXO-yVY0

SO := Z*B*vYO-ywo

Y := Y+Y.&c

xinc Yim

:= +7 := -1

sg := I TRACER-OUADRANT /* 28 qlulti x := xc+vxo Y := Yc-DYO Yutc := t7 Dti := Util /

sg := 7
TRACER-2llAURANT 1 4s quadhani x : = Xc-~XO Y := Yc+DYO Yinc := -7 77x.t := uxm sg := -7 TRACER-@M%ANT -Fin / &rl d

V := U+S-B+Uid
T := V.td+T := DAd+S

sg := -1
TRACER-@lADRANT

s := s+lh
T := l+Uti Cp: = ABS iD/Sl

RetWW'Z

: Cas d'une

courbure

trs

accentue. proches de Dxo ou DP A et B ont des valeurs

16:; cp*hax
Ip:= A66tihti rlmx-IA IX,

Ceci se produit lorsque m<rl ou Dxt2 sont trs c'est--dire lorsque A<<B ou B<<A ou encore lorsque numriques relativement faibles. Y, 1.~1

A~&+heh iX,Yd,ldl AL!? vti := Sgy VAil := -2.6 vzd := -2%


R&d := Sg'y Oyi := ABS(Y-Yc+Xim*Dym) POW I := I &l?yiW mt Y := Y+Y.inc X-tic D+T-a+Uti<O ah.6 debut 2 Z%T-a+u&@ @hhA XA := x+x&c 6*non&but X6 :=x

On constate dans ce cas que les intensits Ip et Is associes aux ne sont pas correctes.~E* fait, points o la courbure est trs prononce, ces intensits sont inverses (c'est--dire q-e Ip est associe S et Is est associe P).Ceci provient du fait que dans ce cas la quantit T ou S diminue rapidement (jusqu' devenir nulle dans certaine cas). Cette dcroissaitce rapide n'a aucune incidence dans le cas de la version "escalier". Il est possible de remdier ce phnomne Ip et Is de la facon suivante : T=O hesp. S=O) a&mA cp := 0 XZZi dtbti cp := ID/TI hup./D/S/) si CP>l/Z aLonA cp := l-cp en modifiant le calcul de

1, := cp&L Ip := Imax-16 2.9.3.3. AIX!&&~ du .thac~


des ahcd de

y:; x+xinc

pcmabok.

D := U+T-a+Uti T := T+Utd s := S+VAd


Ahml4&u= x6:= x+ xtxinc

Larc de parabole est dfini par ses extrmits de coordonnes (XA,YA), (XB,YB) et sa courbe d'quation Y=A(X-XC)*+B o (XC.81 est l'extremum de la courbe (voir figure 2.11.. chap. 2.7.).

L'algorithme G@~(&,, mfis~e

dvelopp

par ROY a la forme

suivante : entienl

Mat CO methode ~~-l-&4~Cd~~C

ARC DE PARABOLE de ROY &


ou IXB<XC et XC441

(XA,YA,XE,YB,XC

0 := U+T-~+D&Z T := T+U.td S := S+u&d A& T := T+O& s := S+uAa Cp : = ABS IU/Tj IA := cp*hzx rp := Imau-IA

SiMA-XCI=ABSlXE-XC1 - dom &Lw YC 6inon USXO := (XB-XAl*lXB+xA-Z'XCI CBO := (XB-XCI"YAIXA'XCIP*YE YC := ARRONDI lCBOI77SXOl TRACERIXC,YC,XA,YA) TRACER[XC,YC,XB.YBI
ainon %Lu ~-----q-xc~xA

et

xA<xBl

ou

lXC>xA

et

xA>xBI

A6&tchet point
hi'! TRACER-@lADRAM

iX,Y,Ipl;A6&Lche/t

point

h,Y,IAl &n-

atohd iZ%

TRACERIXA,YA,XB,YBI TRACERfXB,YB,XA,YAi

-Fin

59 TRACERMD,YD,XF,YFl x:= DY := YF-YO DELTAY := ABS(UYI VT := ZVELTAY DSX := UX*lXF+XU-Z*XCI UXT := ARRONUlWSX/DTl g vx>0 &%A ZZ% ? XINC := ii XZNC := -1 := i+YINC u := v+vsx Si -._ lJ<zO ~&LA XA := X-XINC 6uzon dbut .%a U+T-DELTAY * --aLon dtbti Tz*~+T-~~ELTAY<=o jL%& XA := X+XZNC -d@buf :=X X := X+XZNC
XA

PwJLZ:=

I~ljllsquDYT~

-.

DYXI aLoILA YlEiC := +I dinon YZNC := -1

x := XIJ Y := Y0 A&$ischeh

point

(X, Y, Ztm~Xl

T := DT*ABSIX-XC1 D := 0 GABSIX-XC)<DXT ahhi. dbut /* BT := PowrZ !?Gizc X U -si

I
ca6 des tangenXed de pente MIN(ABS(DXI,-ABFIX-XC)+UXTI := leIjLL6sLIBT& c[O,l]*/

:= X+XlNC := D+T+UELTAY V<=O ohm YS := Y-YZNC 6*non dbut SA D-USX<O - &~LA dbut s m-lxx<=0 &m& YS := YWZNC dtbti ---VT i Y

0 := U+T-DELTAY T := T-VT

Cp := ABSID/Tl IA := CpZmx Ip := zmx-IA Ad,@cheh A~~.icheJl point p0.in.t IX,Y,Zpl IXS,Y,ldl

i-: 1 Y&ZNC

v := o-vsx

VS := Y+YZNC V := D-USX

16 := cp*im&

61

2.9.4.1

- IntzoducLkm sont nous CO~CUS pour recours tre la :! 5 2.15 6 : Simlation


7 8 9

Les algorithmes traitant les effets d'escalier appliqus des crans luminosit variable. Si nous ne disposons simulation. pas d'un tel matriel,

avons

Parmi les diverses techniques existantes (mthodes des seuils bruits, de Floyd et Steinberg,...,voir <JJN 76>,<NeS 79>,<Bre 79)) nous retenods l'utilisation des cellules prdfinies, celle-ci tant la plus adapte au cas du dessin au trait et la plus facile mettre en oeuvre.

Figure

des 9 niveaux

d'intensit.

Le pticipe L'ide des points ngligeable l'cran. de base de cette mthode est de remplacer un point-cran contigs formant une matrice carre nxn. Une consquence de ce procd sera la diminution du pouvoir de rsolution de cette (r,q) In. mthode que l'on est la suivante dsire afficher : est associe une inpar compade rfrenpar non de

Un des problmes que l'on rencontre en dfinissant une telle matrice est celui des figures parasites. En effet, certaines configurations de points dans une cellule peuvent donner un hachurage non dsir ou d'autres effets secondaires gnants. Une mthode connue sous le nom de "ordered dither" (<JJN 76)) donne un moyen d'obtenir des matrices L2, L4, La,... satisfaisantes. Une matrice Ln est obtenue de la manire suivante :
14L,+2Um Ln = --_---_---__~_-----_______ 1 avec m=n/Z

La technique

et Um matrice Ll=O,

carre

mxm dont les matrices


8 2

tous

les

lments

sont :

gaux

1.

- chaque point tensit de luminosit

En notant

on obtient

L2 et L4 suivantes
10 9 5 6

- l'affichage des n2 points-cran correspondants raison de l'intensit 1, avec la valeur donne par ce 41 :

s'effectue la matrice

L2

L4

311 15 = 12

I
0

1 7 13 414

rdLM.4 Le point-c>ran C&i aeun &iYlon ce point-blw7 Soit que l'on tre par
6 8 10 527

(3h+i,3*q+Z-j] eAt .teiYu. varient entre 3x3. La matrice 0 et 9 et L3 pourra

par exemple une image o les intensits veut reprsenter l'aide de cellules exemple :
4 3

De l'emploi d'une seule matrice effets qui dtriorent la symtrie ellipses). La Figure 2.16.a montre partir de la matrice L.

rsultent des effets de torsade et des des courbes (notamment dans le cas des les rsultats peu concluants obtenus

[ 1
La figure associe : 2.15 montre pour chaque intensit quelle cellule lui est

62

63

L4=3

[ 1
7 0 4 1 5 2 6 8

associe

eux Sme et

6me octants

Mais ceci ne suffirait pas prserver la symtrie des courbes. Aussi, noUs utilisons le fait que les algorithmes de t=acd utiliss nous donnent second ares la position des points relativement aux points principaux. ROY a adopt la "stratgie" sui,,,te (<SOY 83)) : - ?y point co==espondant prLnclpal l'occant p est auquel associ l'indice il appartient de la matrice (cet indice est de rfrence not Ilb),

S est associ l'un des 4 indices , I - au point,secondai=y ~~'~:I~~~;,'~~~ en fonction de la position de S par rapport a- Sffets secondaires rfrence. ~rovmant de l'utilisation d"'"e uniWe matr :ice de Ce* affectation* S'effectuent de la manire suivante :

des matrices de P ainsi que

b-Simulation res. Figure

des niveaux 2.16.: elimination

de gris=1 des effets secondai@

. , (tire de <Roy83>) 1II pou= pallie= cet handicap, ROY propose de te& coV=e de 1 o=ientassons de 1 4 matrices tien des courbes traCeS". En Consquence, nous pB de rfrence, de telle sorte que chacune d'elles gOlt associe u=,e des 4 "orientations" possibles, savoir : LI=L=

L 1
0 5 3 1 6 7 4 2
6 1 3

Les mises jour de Ilb, temps que celles des variables Yinc.

Ile,

Ile, Ild et Ilg sont effectues en mme d'incrmentation des coordonnes Xinc et

associe

aux 3me et 4me octants

associe

aux 7me et Bms octants

, ,;

L3=

850 [2 4 71 associe
aux

ter

et

2m.s

octants

2 J

64 L'affichage des points suivra donc l*algorirhme ci-dessous : - sa complexit Pour toutes ces que de BRESF.NFlAH. pratique raisons, est il la plus est donc intressante. intressant de retenir la techni-

6.5

LUMINOSITE IENTIER TAB1*,4J.NBP,LI13,3l.LZ~3.3J,L3~3,3J,L4(3,311 Vtbti ---ENTIER Xe,Ye,Xo,Yo ENTIER Lx13,3l,Zn,Zt Pou!tI:=I~NBP~ mt / TA8 contient -5% coohdonntes, Xo := TABi7,71*3 eintetix et I.ind&e de la Yo := TABlZ,2~3+2 In := TABlZ,3J tidhice de h@wtce des point6 4 a~@h&t */ IL := TABIZ,41 suivant CilA vlz--7e = 1 re = 2 ze = 3 le = 4 GI! Ye := Y0 H : : : : Lx Lx Lx Lx := := := := LI 12 13 L4

+l ',

Cependant, si l'idde de SRESENHAH n'est pas gnralisable pour toutes les familles de courbes, nous savons que la plupart d'entre elles peuvent Erre approches par un ensemble de segments de droite, d'arcs de cercle ou d'arcs d'ellipse (voir "courbes volues" dans<SICOSl> ou bien engendres par lune des mthodes incrmentales gnrales (SOFtDAN ou COXEN). Difirents auteurs ont gnralement dvelopp les techniques d'approximation polygonale des courbes et en particulier des coniques : on citera D. COHEN dans (<COHEN 71>) ef ROGERS et ADAMS dans (<ROGERS-ADAMS 76)).

~1

POILA k := 1 a 3 e tait Xe := x0 POUA J:=J fi 3 & rz6i -STIn>Lx~K,Jj afzoti

a&&Lchen(Xe,Ye)

Aprs limination des effets secondaires, prsentation correcte de ce que serait l'image uariable. La figure 2.16.b montre l'amlioration de la solution propose initialement.

la simulation donne une esur un cran intensit obtenue aprs utilisation

2.10. Conclusion
Sur la famille des courbes que nous venons d'tudier, conclure en disant que la mthode de BRESENHAM s'avre des techniques incrmentales : - les tion points calculs sont les plus proches entire des points la nous pauwns plus avantageuse thorique ;

de la courbe et les ;

- elle n'utilise et de soustraction

qu'une arithmtique pour le calcul

oprations

d'addi-

Chapitre 3

Remplissage de taches

3.1. Introduction
trois pans le terme gnrique types de traitement - le coloriage, - le remplissage - le hachurage. de remplissage : dit, de taches, nous distinguons

proprement

. Lorsque nous venons de dessiner point point sur l'cran le contour d'une tache, l'ide premire pour la peindre d'une certaine couleur est de la colorier partir d'un point intrieur appel germe ("seed'?. NOUS appelons cette technique le coloriage. Le remplissage de taches est une op&tion qui consiste remplir une zone du plan dont la frontire est dfinie soit par un contou polygonal ou autre dans l'espace utilisateur (figure 3.l.a), soit par un contour prinscrit point par point dans une m&oire d'image reprsentant l'espace cran (voir figure 3.t.b).

Contour Figure 1 l'on tour

polygonal 3.1.: Reprsentations l'algorithme

b- Contour du contour. de remplissage

defini

point

par

point

Gnralement,

se dcompose

en deux phases: lorsque du con-

: constitution d'une liste d'artes l- Prparation du contour raisonne dans l'espace utilisateur, ou inscription et codage dans une matrice image reprsentant la surface de tisualisarion.

2- Remplissage

proprement

dit

de la tache

avec

la couleur

dsire. :

. Le problme du hachurage d'une tache et les solutions envisages sont trs proches voir semblables certaines techniques de remplissage ligne par ligne et en particulier aux algorithmes de "suivi de contour". Par analogie avec ces mdthodes, nous dvelopperons une mthode de hachura-', ge oblique sans rotation. Dans ce qui suit, la notion de "contexte" attribue chaque ligne balayage, est un ensable de variables logiques, qui permet de connaltre en tout point de la ligne certaines informations dont nous prkiserons nature pour chaque algorithme.

de ~: la _

3.2. Le coloriage
3.2.1 LE PRINCIPE DE BASE nombreuses applications, le contour remplir est fourni poin mmoire d'image. Le principe de base est ici le suivant : point intrieur la tache qui sera connexe, il s'agit d'atles points intrieurs la tache qui sont "relis" ce point 3.2.). Figure Lors 3.3.: Illustration deux du coloriage problmes peuvent survenir : (la taou moins

Dans de par point en partir d'un teindre tous (vair figure

du coloriage,

La gnration du contour engendre parfois che n'est plus connexe) conduisant des erreurs importantes selon le nombre de ces points (voir

des points isols d'affichage plus figure 3.4.).

* point intrieur (~,y), ou germe ("Seed")

La tache peut toucher les bords de l'cran provoquant pour certains algoiithmes de coloriage (celui de PAVLIDIS en particulier) unes sortie de la matrice de points. Nous envisageons deux solutions : soit tester chaque fois si nous dpassons les limites de la mmoire, soir agrandir la mmoire sur les bords pour supprimer a priori tout risque d'erreur. Si la seconde ide ncessite plus de mmoire, elle n'implique aucun calcul supplmentaire. points / isols points de la tache non cploris

Figure

3.2.:

Contour

prinscrit dvelopp

et point par

intrieur. SMITH, <SMITH 79> :

L'algorithme

de base est

Ayant dtermin un point intrieur ou germe ('seed') de coordonnes (seedx,seedy) l'intrieur de la tache, nous remplissons d'abord tout le segment horizontal auquel appartient ce point (c'est--dire tous les point1 de mme couleur relis entre eux et au germe, appartenant la mme ligne de balayage). puis partir de ce segment nous cherchons dessus et dessous les segments qui lui sont "relis", c'est--dire possdant un point ('pixel') ayant un ct CO-~ avec un des points du segment horizontal courant : c'est la proprit de la connexit. Ce point caractrise le nouveau segment et devient un nouveau germe. Pour chacun de ces noweaux germes, nous rptons le processusdcrit ci-dessus pour le premier jusqu' ce que toute la tache soit remplie. Pour mmariser et rutiliser les germes nous nous servons d'une pile. La figure 3.3. montre les diffrentes tapes du remplissage ci-dessus : les carrs noirs reprsentent le contour, l'koile intrieur de dpart, les points noirs indiquent les germes qui ls. dcrit le point sont empli-

COlltOI Figure 3.4.: Exemple de singularit non connexe). ont t utilises : pour

aprs

coloriage lors du coloriage de l'algo(tache

rencontre amliorer

Deux ides rithme de base

la complexit

71 - viter (algorithme l'exploration redondante des segments de SMITH, <SMITH TV>, et de LIEBERMAN, d'un graphe 81>). horizontaux <LIEBERMAN contigiis 70, de SHANI, ,

- modliser la tache sous forme <%AN1 80>, et de PA"LIDIS <PA"LIDIS Complexit :

(algorithmes

newpv = nouvelle valeur des points de la tache i old = ancienne valeur des points de la tache ; (seedx,seedy)=coordonnes du point intrieur : lx et TX = extrmits gauches et droites des segments horizontaux x min, x max et ymin, ymax sont les bornes de la mmoire d*image. ~a fonction pvaleur(x,y) nous donne la valeur du point (~,y).

Si NB1 est le nombre de points intrieurs de la tache, et NfX le nombre de points du contour, la complexit de l'algorithme de PAVLIDIS est proportionnelle NBI + 3 NBC. Les algorithmes de SMITH, LIEBERMAN ou SEAN1 ont une complexit proportionnelle 3 NBI. Ainsi, si NBC < < NB1 l'algorithme de PAVLIDIS s'avre a priori plus avantageux. puis 3.2.2 A cet celui effet, ,,a,8 redonnons de PAVLIDIS. VE SMITH l'algoritbrce de base dvelopp P2 SMITH,

-RLLRlGHT FILLLEFT &gl; FILLRIGHT

; CO tremptiage ; - umptimge

&~.&?a gauche

- LALGORITHME

Pour viter chaque segment lution suivante

de rechercher systmatiquement au-dessus et au-dessous de horizontal ceux qui lui sont adjacents SMITH propose la so:

Si le segment horizontal courant SC est adjacent au segment Sp prcdement trait, et si les extrmits de SC sont l'intrieur de celle de Sp, il n'existe pas de nouveaux segments au-dessus de SC si SC est situ dessous Sp (respectivement au-dessous de SC si SC est situ dessus Sp) qui lui sont "relis" (voir figure 3.5.). SC SP , I l t SP

FILLLEFT Dbut *luc?h x ; x := r-l . ipv&uaix,yl pv&uIlx,yl Y := x-l :

= oLd := new ;

x>mkl

6e

SC au-dessus 'Figure 3.5.: de Sp positions relatives SC au-dessous des segments suivante adjacents :

SC
de Sp Sp et SC.

4$:= Xi, ;
SCANHI Dbut

73

La fonction logique HIVOISIN(LOVOISIN) vrifie si le segment horizonta1 courant est voisin du prcdent, s'il est au-dessus (au-dessous) et dtermine si aucun nouveau segment lui est reli audessous (au-dessus). Lo&ue HIVOISIN

,,

Ffgure

3.6.:

Dfinition

de C-LAG et de I-MG. le point adjacents de suite pile). inen pour

A partir du noeud (segment horizontal) auquel appartient nous dfinissons les germes des noeuds qui lui sont trieur, examinant le contour 2 chacune de ses extrmits, puis ainsi chaque segment dtermin (les germes sont mmoriss dans une Le nombre de situ l'une des de dterminer si mes des segments 2- L'algorithme dures

k remplace yref+l par yref-1 pour obtenir LOVOISIN . Nous pouvons remarquer que cet algorithme de remplissage peut servir remplir une tache monochrome dj existante avec une nouvelle couleur ou une tache dfinie par un contour prinscrif (avec la nouvel('newpv'), le couleur), dont l'intrieur est monochrome. Si l'intrieur du contour possde plusieurs couleurs cet algorithme est toujours utilisable aprs quelques modifications des tests sur la valeur des points.

noeuds du contour (ou degr) relis au noeud du contour extrmits du segment horizontal (noeud de 1-LAG) permet nous sommes arrivs un extrnum et de calculer les gerde 1-LAG adjacents au segment courant.

de PAVLIDIS l'algorithme principal, : (coordonnes p-l nous donne et p+l dsigne (~,y) par exemple) d'un le point situ ' gauche le point situ droite de p (finous devons dfinir les prac-

Avant d'exposer auxiliaires.

Les-procdures auxiliaires ______---_-___-_---__ 3.2.3 - LALGORITHME DE PAVLIDIS l l Soit p dfinissant l'adresse point de l'cran. L'expression sur la mme ligne horizontale, gure 3.7.a).

J- Le phincipe Pour modliser la tache, PAVLIDIS utilise deux graphes o les lments sont les segments horizontaux forms de points ("pixels") de mme couleur et o les arcs sont les couples de segments adjaaents de mme couleur. Ces deux graphes sont : - celui graph"), - celui associ associ au contOur l'intrieur appel C-LAG ("contour-line appel 1-LAG. adjacency 1:

+ (a)

P (b)

du contour

Si nous supposons que deux segments de l'inc6rieur sont relis (ou adjacents) s'ils possdent deux points ayant 1 ct conman, les segments du contour restent relis mme si ces 2 points n'ont qu'un sommet (ou coin) commun (voir figure 3.6.). L'ide de l'algorithme de remplissage est d'utiliser le graphe C-LAG au lieu de I-LAG. La principale motivation de ce choix fut l'utilisation de structures identiques aux algorithmes de contrle de parit et la possibilit d'amliorer la rapidit du remplissage. $ ) 3 :, d %

I vM!i 1 I I
LRIGHT(p) (cl Figure 3.7.: Dfinitions. RIGHT(p)) nous dlivre le point de l'intervalle de mme couleur le plus contenant P

La procdure LEFT(p) (respf gauche (resp& le plus droite) P (figure 3.7.b).

74 On a aussi LRIGHT(p)=LEFT(p)-1)-l situ gauche de p et de mme couleur, couleur diffrente. (figure 3.7.c) immdiatement qui calcule le point aprs une plage de

Les degrs du noeud (intervalle) d'un graphe, contenant le point p sont calculs par la procdure LINK (p,v) qui renvoie le vecteur v dfini par : v-(a,b,pl,pZ,el,eZ) o a et b sont les degrs au-dessus et au-dessou8 du noeud contenant p et pl,p2,e2 sont les points dfinis sur la figure 3.8. (si ces points ne sont pas dfinis on retourne la valeur NIL).

---_
Figure . Notations - pnexr come - Pather immdiatement - empiler sonmet de la - pi est tache. valle 3.8.: : Dfinition de pl,p2,el,eZ.

--

____
p B ]p2,pl[

Le point

COULEUR; !&

est le point qui sera utilis pour remplir le prochain inrerpoint de dpart. pourra avoir la valeur pabove ou pbelow et est le point situ dessus ou dessous le point courant. (S,p) signifie mettre le point p sur la pile S (p devient le pile). le point intrieur et 'couleur' ssf la couleur attribue la

Remarques

Dans l'algorithme de PAVLIDIS, le test (1) contrle si nous avons BTteint la fin de l'intrieur de la tache suivant la direction du balayage en cours. Si la direction est vers le bas et si a>1 alors nous avons atteint un "fond" (figure 3.9.a) o l'une des configurations nmntres sur les figures 9aa et 9ab. On vrifie le premier cas si le point courant p est droite de pright, et par consquent hors du contour (sinon p est l'intrieur).

(ab)
Figure 3.9.: Coofiguratioos dtectes nous : avons par (1). un extrmum, gauche du

En (21, nous vrifions si germe p en cours de traitement

a faire

76

77

Le prochain direction la a=0 pnext

point P

pnext p*Cit

est

dtermind

ci-dessous

SUT deux exemples : Point empil (directio,

3.3. Le remplissage de taches


3.3.1 INTRODUCTION

1 = e2 pbelow b=O pnext=LEPT(pother) le cas o nous dtectons de remplir. un extrmum droite horizondu :> '~ pnext

Le remplissage remplir une zone CO"fO"rS.

d'une du plan

tache monochrome dont la frontire

esf une opration est dfinie par

qui consiste un ensemble de

En (3) nous traitons segment que l'an vient ta1

~a bonne excution de l'algorithme implique que l'on sache si on est l'intrieur ou l'extrieur de la tache. Sur une ligoe joignant le point en partant de la gauche le "ombre de frontires rencontres indique si l'on est l'intrieur du polygone ou l'extrieur : c'est le "contrle de parit" (figure 3.10). . point intrieur d'intersections. point extrieur d'intersections. : nombre impair

Pour la procdure LINK nous utilisons la couleur examin donn par v(p)=couleur du point p.

C du segment

Debut

LINK lp, In,b,el,e2,plll


c := vlpl;
a := cl:= p := hi &&y va+ : ,: b := 0; e2 := pl LEFTlpl, [pu-Il-c I~f-;l=y=G&:= := nie; pa := pabove ; pb := LLLom a := a+i 6.t b+l & pbdow;

: "ambre

pair

,,,

Figure

3.10.:

Contrle

de parit. dans

Mais l'application la majorit des cas, l2-

de cet algorithme donne des rsultats errons car il ne tient pas compte des singularits :

artes
sommets

horizontales

3- recouvrements d'artes 4- points doubles, etc...

3.2.4

- CUNCLUSION

En conclusion, les algorithmes de coloriage "e remplissant que des taches con"exes partir d'un point intrieur (germe) souvent difficiles dterminer automatiquement, sont avant tout utilisables de manire interactive.

D'autre part, la comparaison mis d'affirmer que l'algorithme cas, le plus avantageux, celui-ci contour plutt que sur l'intrieur

de la complexit des mthodes nous a perde PAVLIDIS s'avre dans la plupart des raisonnant sur l'ensemble des points du de la.tache.

singularits du COOtOUr Figure x.11.:

srreurs de remplissage dues au "contrle de parit" Singularits rencontres lors

remplissage du remplissage.

correct

78

79 a t avons propos classes pour remdier aux suivant deux ca-

Aussi, un certain nombre de solutions insuffisances de cet.algorithme. Nous les tgories. Nous distinguons ~:

,&

- les techniques de "balayage ligne par ligne", bases essenriellemeot sur le codage du contour dans une matrice reprsentant la surface de visualisation : on raisonne donc dans l'espace image ; - les techniques de "suivi de contour" ,, pour lesquelles de la tache est ralis partir d'une description structure tour : tous les calculs se font dans l'espace utilisateur. le remplissage de son con-

On peut

regrouper

les

algorithmes

existant

en trois

classes

Chaque arte est engendre point par point dans une matrice image, mis la perte d'information est compense par un codage qui indique les cbangewnts de contexte. Fuis on applique l'algorithme de parit. Nous trouvons dans cette classe deux algorithmes :

3.3.2 3.3.2.1

- LE BALAYAGE LIGNE PAR LIGNE - z~tidutin de balayage s'effectuent par lignes utilisent tous une mmoire le codage et le remplissage.

Les algorithmes d'image dans laquelle Le problme :

. Celui de LUCAS, <LUCAS 77>, qui utilise une adaptation de son algorithme de gnration de segments de droite pour engendrer et coder les artes en fonction des singularits rencontres. . Celui d'ACKLAND et "ESTE, <ACKI,AND-WESTE 81>, o pour eion des artes ils ne conservent qu'un seul point par ligne ce qui entraoe une lgre dformation du contour. 2- _______-________-______________ l'image Inversions successives de Dans cette solution, dfinie par MARTINEZ, CUARTINEZ 822, la quantification d'une~arte s'accompagne d'une inversion des points situs droite. La quanrification ayant lieu au cours du remplissage la perte d'information demeure sans consquence (voir figure 3.12). la quantificade balayage,

Si nous appliquons l'algorithme de parit sur le contour quantifi dans la matrice image, on obtient des rsultats errons dans la majorit des cas. Des erreurs interviennent dans les situations suivantes o la rencontre d'un point du contour n'implique pas de changement de contexte ( savoir si nous sonrmes l'intrieur ou l'extrieur de la tache) : - la quantification engendre souvent plusieurs la mme ligne (1) - superposition d'artes, trs voisines aprs - certains sommets qui conserve*t le contexte points successifs (2) sur

quantification (3).

Figure

3.12:

Remplissage la mmoire.

d'un

triangle

par

inversions

successives

de

Nous allons exposer les diffrents techniques qui pallient larits dans le cadre des taches polygonales, et la gnralisation layage ligne par ligne aux taches quelconques.

ces singudu ba-

3"

R~~l~s~~g~~lia~~ ea._liane_bl~_conro~~-e~~~~~~~~~-~~~~~-~~~~~~~~
en mnoire-dr~&@

Pour chaque ligne, lorsque nous rencontrons les points du contour, l'analyse du changement de contexte, savoir si nous rentrons ou sortons de la tache, se fait partir des points du contour des lignes au-dessus et au-dessous qui leur sont adjacents. PAVLIDIS a dvelopp dans <PAVLIDIS 79> trois algorithmes de ce type qui tentent successivement de surmonter les points doubles, triples,... mais.en vain dans certains cas. Ces algorithmes appartiennent plus au traitement d'image (reconnaissance du contour) qu' la synthse d'image, nous ne les inclurons donc pas dans cet CU"Kage.

Comparaison

des algorithmes ;,on 6ui.t Le bond de ti tache} eogi+e UPL,UPM,POINTE ; etieh L, LP,M; &gique It4TERlEUR ; eOgique ILYASOMJAET; {,&iz%&a.tion de ta coutaa de @ndl DOL~L I:=XMIN m 1 WXMX &L$ e J:=WN p& 1 u YMAX w i,mgell,Jl:=O; (iMAG&*n du pehimetil Lp: =PREMIER SOMMET ; L:=SOMMETSUIVANT; mt&& YILPl=Y(L) & muten et2 LP:=L; L: =SOMMETSUIVANT (patcocm du cotiw de !a iache) {aminw.t UPL:=Y(LPl<YILI ; LP:=L; 1 LYASOMMET: =uhai; tt 1 LYASOMMET &z&& &-y&

Si les algorithmes de LUCAS ef de ACKLAND et WESTE sont similaires, le comparaison de leur complexit pratique permet de constater que la mthods de ACKLAND et VESTE est plus avantageuse. En effet, l'utilisation d'un seul code (1) au lieu de deux (1 et 2) engendre moins d'oprations (te~ts,,!~! accs tableau en particulier). Cependant, si ce codage du contour amliora@ la vitesse d'excution, elle dtriore l'aspect du contour et entrane de.z?j effets dsastreux au niveau de l'esthtique (problmes de raccordements k ,ivz8 ~, entre les taches par exemple). 'Y; Le principal inconvnient de l'algorithme de MARTINEZ concerne le grand nombre de points traits inutilement. MARTINE2 argue dans GfARTINEZ SD c(u'une ralisation cble, pour laquelle l'opration d'inversion est quasi-instantane fait disparatre cet inconvnient. 2. Latgoh.ithme Les difficults rier a- Segments le segment de LUCAS rencontres sont surmontes de la fasan disant (code qu'il 2) ; suivante faut : colo',_ ~, ~:,

CZ hohizontauxl

: > :>,l _I

de depaU

horizontaux : on utilise un code mais ne changeant pas le contexte

b- Sommet CO-~ deux cts situs passant par ce sommet : code impliquant tien du contexte (code 2) ;

$ c .$ ! du mme ct de l'horizontale un coloriage mais pas de modifica-?i,~! :!.

c- Recouvrements : dus soit au croisement de deux cts, soit prcision moindre de la projection. Si ce nombre de recouvrements modifier le contexte, sinon ne pas le changer. dnoter Segments horizontaux que les changements crs par l'approximation d'ordonne (code 1) : point par

LIlhz&
2 point suit traite ces difficults.

UPM:=V(LI<V(Mt ; POINTE:=~UPM#UPLI; SEGMENT~X~LI,YlL1,X~Ml,Y~Ml,~INTEl &&g L: =/d ; ILYASOUI(ET: = (MfLPl 6L%

la est lNTERIEUR:=,jaux; ~I:=XMIN~I Lia!uL

j&&&YhbU

&i&

INTERIEUR:=7 INTERIEUR.; Iht4GEII,Jl:=COULEUR &,on L'algorithme de LUCAS qui &?INTERIEUR ou (IMAGEiI,J)=Zl d&& IMAGE [ 1, JI :=COULEUR

83

SEGUENTfetien XA,YA,XB,YB ; Logique POINTE); a Itaac d'un degmeti en yvrP~xvution au nemptibage d'une tichel entien VELTAX,DELTAY,XZNCR,YZNCR,CUMUL,X,Y,YFREC; X:=X4 ; Y:=YA ; IX,Yl point cowrant &i POINTE Ltmiiemeti d'un cad bl a&!& IMAGElX,Yl:=~6i ZMAGEIX,Yl#l chu 2 ahon JI &&&t ZNAGEIX,Yl:=lsi ZMAGEiX,YI=l atoxt 2 ainon il: XINCR: =A XA<XB & + 1 &&Q& -1: YlNCR:=k YA<YB &&& tJ a-J; lJELTAX:=ABS(XA-XBI : L'ELTAY:=ABSIYA-YBI ; YfREC:=Y; &i. UELTAX>UELTAY &~&~dhrdk!hai.t~~esc~~dl CUMUL:=VELTAX/2; pc&Z:=J E J & DELTAX-J & ipad Le dennien X: =XtXZNCR ; CUJdUL:=CUMUL+UELTAY; & CUMULbUELTAX CVJU debut CUMUL:=CUMUL-UELTAX: Y:=YtYlNCR & lYPi%fYl *u (Y-Y81 abt~ db" 'mme Y1 0 ZMAGElX,Yl#J &i& &bwn debut (nouuo! Y) ZMAGEIX,Yi:=l& YQREC:=Y &y& bimn Liz en y1

Nous supposons que la tache est ,,on polygonaux. Chaque contour peut ces : soit par la liste ordonne de ments de droite, les arcs de cercle, qui le constituent. C'est--dire que

dfinie par un ensemble de contours tre dcrit de deux fawns diffrenprimitives d'affichage comme les segsait par la liste ordonne des points nous avons une structure d'anneaux.

Nous gnralisons les algorithmes de LUCAS et de ACKLAND et VESTE en codant les points engendrs par le contour dans une matrice image puis en appliquant l'algorithme du contrle de parit. ~0%) ., Les singularits surmxtter - les segments horizontaux, - les extrma, - les recouvrements, etc... L'ide : le codage par rapport coordonnes image se fait pas pas en analysant la posiau point courant qui vient d'tre caldu point initialise de dtecter prcdent "0". les segments horizonet kc,yc) celles du sont :

Pour chaque contour, tion du point prcdent cul. point 2 suton 1); taux Soient (xp,yp) courant. Soir IMAGE(*,*) les

&

ZMAGE(X,YI:=Z; a

ZMAGEfX,Y)=J

la matrice

Les variations des ordonnes et les extrms.

permet

dbut (pas de phob&Sme 6.i on 6e deplwz CUMUL:=DELTAY/Z; &?&Z:=l m J j~&!& DELTAY r(aihe Y:=Y+YZNCR ; CUMUL:=CUMUL+DELTA!4; & CUMULS7ELTAY atohb dbut CUMUL:=CUMUL-DELTAY; X:=X+XZNCR ZMAGE(X,Yi:=l& &l oiZMAGElX,Yl=J ti

Nous utiliserons - "1" pour coder - "2" pour coder ment de contexte.

deux codes : les changements de contexte, les points du contour qui n'indiquent

pas de change-

Un seul code peur suffire, mais comme dans 'dESTE la tache obtenue est lgrement dforme, blmes de raccordement. Les rgles 2 a*non JI On note 8 l'opration IMAGE(x,y)B Code dfini de la codification sont les

l'algorithme d'ACKLAND et ce qui engendre des pro: par la table qui suit :

suivantes

85

1- yp = yc (plage
IMAGE 2-

de points

horizontaux)

(xc,yc):=IMAGE~xc,yc)B

yp<yc (courbe croissante) IMAGE(xc,yc) :=IMAGE(~c,yc)Bl yp>yc (courbe dcroissante) IMAGE(xp,yp):=IMAGE(xp,yp)@l IMAGE(xc,yc):=IMAGE(xc,yc)82 la courbe problmes engendres dds par

3-

La codification rtrograde du point prcdent lorsque crot ainsi que l'opration 8, permettent d6 rsoudre les aux extrema. L'opration B supprime galement les erreurs les recouvrements (voir figure 3.13).

. Contour EXEMPLE : Illustration algorithme

et singularits du remplissage d'une de codage du contour.

. Rewlissage tache

correct par notre

non polygonale

izon

3.3.2.4

Conceushn

cc, reca""reme"ts Figure Remarque :


3.13 :

Codage

du contour.

En conclusion, le principal reproche que l'on puisse faire aux algorithmes de balayage par ligne concerne la ncessit de disposer d'une mmoire boolenne de travail. Nous devons nuancer cet argument. D'une part, il est possible de travailler directement dans la mmoire de trame du sy"thtiseur cbl si les taches ne se chevauchent pas. D'autre part, le prix de revient des composants va sans cesse dcroissant. Les mthodes chapitre suivant
3.3.3 3.3.3.1

de suivi pallient DE CONTOUR

de contour que nous cet handicap.

allons

dvelopper

dans

le

Le bon fonctionnement de l'algorithme suppose que la suite des points sait continue pour chaque contour (structure d'anneaux). Si le premier et le dernier point du contour sont diffrents, il faut coder le segment (dernier point, premier point). Le remplissage proprement dit est ralis en parcourant ligne gne la matrice code IMAGE et en utilisant le contrle de parit Algorithme de LUCAS). par (voir li-

-LE
-

SUIVI
Le

ptincip

Il s'agit d'utiliser une description structure de diffrencier les bords gauches des bords droits. dplaant le long de ces bords les extrmits d'un permet de peindre l'intrieur (voir figure 3.14).

du contour permettant On remplit la tache en segment de droite qui

Figure

3.14:

Affichage

par

suivi.de

contour.

87

On travaille ici uniquement ge on ne sort pas de la tache.


3.3.3.2 Le ~~empC~66age des

dans

l'espace

utilisateur

et au remplissa-

La mmoire ncessaire .omplexit des tris est Nous cmsfatons saire pour contenir cri de cette liste
rithue* So*t plUtY

est proportionnelle (nba+nbl*nbam) en 0 ((nbl*nbam)Log(nbl*nbam)+nbl(nbam

et la Log nbam)).

taches

po~ygoi,a&a

que pour la liste deviennent


SvS*tSgSuX.

des polygones importants, la mdmoire ncesdes intersections et le temps pass pour le importants et coteux. Aussi, d*autres algode contour

Deux variantes existent. La premire consiste calculer et ordonner toutes les intersections du contour avec les lignes de balayage avant le remplissage : c'est l'algorithme I!X ptsent par NEWMAI et SPRODILdans <NEWAWSPRODLL79>. La seconde solution que nous allons dvelopper, permet de raliser les calculs d'intersection et l'affichage ligne par ligne. i1.

2- L'algorithme

de suivi

L'algorithme
Pour

YX

On remarque dans l'algorithme YX qu' un moment donn nous n'avons besoin-de connatre que les intersections des artes avec la ligne en cours de balayage. La solution consiste conserver les contours non pas sous la forme d'une liste d'intersections mais par une liste d!artes. La quantification des artes se fait alors ligne par ligne au fur et mesure du remplissage. Pour chaque ligne, l'algorithme est le suivant 1. Dtermination de l'ensemble des artes qui 2. Calcul des intersections ; 3. Tri des intersections ; 4. Affichage des segments horisontaux. : coupent la ligne ;

de ce ct enregistre

chaque arte du polygone, on calcule toutes les intersections avec les lignes de balayage. A chaque calcul d'intersection,~ ses coordonnes (~,y) dans une liste d'intersections. d'intersections de telle facon si (y,>~2 ou (~,=y2 et X~<X~)). ligne par ligne ((x2,-,,y)(x,k,y)) que (~,,y,)

on

2. On trie la liste (~,,y,) si et seulement

prc&de

3. On effectue le remplissage ligne de balayage y les segments la liste k=nbre d'intersectionsl2). Pour viter les artes conscutives), donnes des sommets

en affichant (o pour

pour chaque l'ensemble de

. Pour viter de refaire tous les calculs chaque ligne, il est intressant de tirer parti de la cohrence du polygone qui existe entre deux lignes conscutives. Si Si est l'ensemble des artes du contour qui coupent la ligne i alors Ei+,=EiW?tes qui finissent la ligne i+l ) sur la ligne i)+{arres qui conrnencent i, sur

erreurs des aux singularits NEWMAN et SPROULLprconisent d'une demi unit comme suit

(segments horizontaux, de translater les or:

Complexit

Soients nbl le nombre de lignes de balayage coupant le contour, nbam le nombre moyen d'artes qui coupent chaque ligne (nbam.2 si le contour est convexe) et nba le nombre d'artes.

= s
:

Si xi est l'abscisse de l'intersection Xi+, =Xi + Dxy o Dxy est l'accroissement les deux lignes i et i+l.

d'une arte avec la ligne des abscisses de l'arte

alors entre

Nous utilisons deux structures de donnes gorithme. Pour chaque ligne de balayage qui tuons la liste des artes orientes vers le ci : c'est la structure du contour. Au cours blissons la liste Si des artes qui coupent en les ordonnant selon l'ordre croissant des section.

pour mettre en oeuvre l'alcoupe le contour, nous consribas qui commencent sur celledu remplissage, nous tala ligne de balayage courante, abscisses des points d'inter se posent toujours. ligne de balayage : Des er-

reurs

. Mais les problmes ds aux singularits se produisent quand se trouvent sur la

- deux artes conscutives (ligne i, de la figure 3.15) - certaines artes horizontales (ligne i2 et i3 de la figure

3.15).

----

-_--__--__-----

i2 i, i3

: 3 intersections : 3 intersections : 4 intersections

? ? 1 ligne

___ -__--------__ _ _ _ - _- - - - - - -

vide,sinon la TLISTE(y)=u : liste liste des artes qui commencent sur la ligne y est gale {k,,k2,..,kmI

i-\ Figure 3.15.: Singularits contour. rencontres par l'algorithme de suivi de . Liste Pour y remdier, nous proposons de supprimer les artes horizontales de la liste des artes et de supprimer de la liste Ei les artes qui finissent sur la ligne courante i cmnme suit : i-l devient i+l is Si aucune des artes du contour ne se croise, nous pouvons supprimer le tri de la liste E. en ordonnant dans la structure du contour les arte dans l'ordre croissa:t des abscisses de leur premire extrmit et abscisses gales selon l'ordre croissant des Dxy. L'ajout d'une arte dan la liste Ri deviendra alors une insertion qui respectera cet ordre. . Mise en oswrs : de suivi : de contour i-l t+, I ,T des artes qui coupent la ligne de balayage courante : dans le seront

Les numros des Nbai artes coupant la ligne y seront contenus tableau d'entiers Ei(*) et les abscisses des points d'intersection mmorises dans le tableau de rels INTER(*). L'algorithme Re,,,pLhaage V&buX
cotititionde SUIVI

peut
IIE

alors

s'crire

CONTUUR
la&Ate des

lN,Tl*1:titil
tities;

RempRh6age; -FiPI

Pour raliser la mise en oeuvre de l'algorithme nous utilisons les strwtures de donnes suivantes

. 4' contour de la tache est form d'un ensemble de polygones quelccn ques decrits par les suites ordonnes de leurs sormnets. Nous disposons d'un tableau T(*) d'entiers contenant les coordonnes des somnets o pour chaque polygone la liste des sommets se termine par la valeur NIL. La variable N reprsente le nombre d'lments contenus dans T(*). Liste des artes : dbut Axa(k), son ordon par rapport aux ordonde la liste des artes

Chaque arte Ak sera dfinie par son abscisse ne fin Ayf(k) et son accroissement des abscisses nes Dxy(k)(rel). qui Pour chaque ligne de balayage y commencent cocms suit : y, nous disposons

Synlhse dimoge

: Algorithmes

l&enraires

91

. CI&?,L eistes (Ei,INTERI -Nbai:=O ; CO nombm j:=TLZSTE(g; -~q"r;N~, EilNbail :=j;' ZMER~Nbai.l:=Axdlj); j:=LZSTEljl; F&I ci&; &

dv&es

coupant

ti

pigne

de bahzyage

40

Fin:=&; e & goo"

~. X#NIL doa 6uzon X6:=X ; Y,4:=Tli+ll; X?$:=TIi l ; YfJ:=TIi,+Il &=u,&i ; i:=i+l; L'adte ITXa;Ydl,lX6,Y6II

w31on h?L. _

xylkl:=(X6-XdlllYd-Y61; Axdlkl:=X6 ; Ayb(kl:=Yd;

L:=Yd;
Uxy(kJ:=IXd-Y6l/iY6-Ydl,

Nous parcourons ordonnes. Les autres suit :

les lignes de balayage selon l'ordre modules s'crivent par consquent : y:=YMX; : y:=y-1; : YGYti;

dcroissant de la facon

des qui

-Fin @ .C&&des.intenaect&na 7 -poWr k:=l jLLbpLL'd F&;

. Premire ligne de balayage . Ligne de balayage suivante Dernire ligne de balayage

Nbai 6e

ZMERlk~:=INTER~kl+UrylE~lk~J;

92

. Ajou2.a Lu atXed qui u.%iLtd -j:=TLISTE(yl ; Tant ue j#O aaine !Bd-Nbai:=Nbti+l; E*fNbaiI:=j; INTERINbail:=Axd[jl; j:=LISTEljl;

comencent

AWL -k

P*gW.

Y 1. Le phobeme

Il s'agit de remplir un ensemble que le rsultat final respecte l'ordre d'elle (voir figure 3.16).

de taches polygonales de telle sorte des priorits attribues chacune

Fh

a$;

Voici

un exemple

de tache

engendre

par

la mthode

du suivi

de ccntou@l~ Figure 3.16: L'ensemble des taches et leurs priorits tache d'affichage une par une en

La premire suivant l'ordre

solution consiste des priorits :

remplir

chaque

(1)

(2)

(3) effectue le remplissage ligne en respectant l'ordre

(4) de toutes les des priorits taches : siml-

3- Comparaison

des algorithmes

La seconde solution canment et ligne par

Soient nbl le nombre de lignes de balayage qui coupent le confou polygonal, nbsm le nombre moyen dartes qui coupent chaque ligne de balaya-~ ge (nbam=Z si le contour est convexe) et nba le nombre d'artes. La mmoire (nba+nbl*nbam), (nbatnblmbam). ncessaire au lieu Pour d'tre l'algorithme proportionnelle YX e8t proportionnelle en ce qui nous concerne

La complexit du tri des intersections +nbl(nbam Log(nbam))) pour l'algorithme pour notre version.

est enO((nbl*nbam)Log(nhl*nbam# YX et en O(nbl(nbam Log(nbam)))

,~

Cependant, la complexit de l'algorithme YX peut tre amliore si pour chaque ligne de balayage le tri et l'affichage sont effectus en parallle. D'autre part, la complexit pratique des tris excuts dans notz solution est infrieure la complexit thorique. En effet, la liste g. n'est plus ordonne uniquement lorsque l'on ajoute une arte ou bien q& deux artes se sont croises. Comme nbam n'est pas trs grand et en ueilisant un algorithme de tri simple corne le "tri bulles", la complexir~ du cri sera en O(Nbam) pour toutes les lignes de balayage o un tel chaagement ne s'est pas produit.

En utilisant les mmes strtxtures de donnes que prdcdemment (3.3.3.2) nous constituons pour chaque ligne de balayage la liste ordom& des artes de toutes les taches polygonales qui la coupent suivant l'ordre croissant des abscisses des intersections puis A partir de celle-ci nous affichons les segments horizontaux en rsolvant les priorits d'affichage des taches. pour ce faire, nous devons attribuer chaque arte son numro de Priorit correspondant. Dans le cas particulier du remplissage simultan d'un ensemble de taches contiges (mmes niveaux de priorit), E. SECHSR a dmntr dans <SECHER 83, que la complexit obtenue dtair plus avantageuse que celle *ngendre par le remplissage successif de chaque tache par l'algorithme de

94

95

suivi
3.3.3.4

de

contour. _.;

Le hempecd

sage

de .tmhes non polygonaLes de la tache B remplir (segment de droite, sont arcs

i: ,,,~., 1,

Nous supposons que les contours un ensemble de primitives d'affichage . . . ).

dcrits p& de cercle, '1

dbut

primitives

La gnration de la tache doit se faire en une ordonnes dcroissantes. Pour cela, **us dcoupons semble de bords gauches et droits appels parois. portion de contour monotone en Y et comprise entre point de naissance, et un minimm local, ou point
3.17).

f seule passe suivant le& les CO*~*U~S en un en- ,_ ;;, Chaque paroi est une un maximum local, ou : de mort (voir figure ij

sens de parcours

a) Liste

des parois

orientes

vers

le bas

Conrme pour l'algorithme de suivi de contour dvelopp pour les taches polygonales (chapitre 3.3.3.2), le remplissage s'effectue ligne par ligne en tenant parti de la cohrence entre deux lignes de balayage conscutives pour calculer les intersections et la liste des parois qui coupent la ligne. Les singularits sont surmontes de la mme manire.

4
----___-

-- ---__ t G3 B
Figure Cependant,
3.17.:

* c t
du contour envisager deux

f poim de naissance t PPar.": ":~.,s,,,

b) Structures Description

d'anneau de l'anneau

et d'arbre

composition nous pouvons

en parois. facons de structurer le contour

1: paroi 0: paroi

inverse directe

- la premire mthode est similaire celle dveloppe au chapitre 3.3.3.2.' On constitue ligne par ligne la liste des primitives orientes vers le bas qui y commence*t (voir figure 3.18.a). - la secbnde mthode. prconise par GOUEIGNOUX tours l'aide de structures d'anneaux et d'arbres. description d'une composante co~exe dcoupe en une de cercle. Pour chaque an,eau, l'arbre adresse dans points de naissance de mme abscisse l'ensemble des cent. (voir figure 3.18.b). et al. Chaque suite l'anneau parois dcrit les CO*anneau est la de droites et pour tous qui y comme*Figure
3.18.:

Structures

du C*"~OU~.

R
y2

pointeur paire 2

Pour chacune des deux structures gnrales, les parois sont dcomposes en sous-parois, c'est--dire en primitives lmentaires d'affichage. Les segments de droite et les arcs de cercle sont suffisants pour dcrire la Plupart des C**~OU~S (voir "mthodologie de dcomposition des courbes volues" dans <SIC0 8D). Le calcul des points d'intersection des primitives de balayage s'effectue de haut en bas. Celui-ci peut algorithmes de gnration de courbes de BRESENMM en seul point significatif par ligne, Le contexte qu'il que pas est diffrent selon les primitives (contexte vant l'octant, expressions rcurrentes). Les arcs de ss en quadrant pour viter les rinitialisations au avec chaque ligne se~faire l'aide des ne conservant qu'un faut mmoriser cha: incrment en X suicercle seront dcompocours de la gnra-

tien rduisant par l mme la raille du contexte. Lors de cette dcomposi,,v ,$ tien, les ercs obtenus seront orients vers le bas, came les segments de ?F droite (voir figure 3.19.).

sommet
base hauteur f

Les programmes

]ligne cart ligne

d'criture entre d'criture detix lignes

Pigure

3.20.:

Dfinition

d'une

ligne

d'criture.

Figure

3.19.:

Dcomposition

d'un

arc

de cercle

par

quadrant.

L'ensemble des bords gauches et l'ensemble des bords droits forms par le polygone engendrent sur les lignes de balayage comprises entre le sommet et la base de chaque ligne d'criture, un ensemble d'intervalles horizontaux (Voir figure 3.21.).

7. Le pmbLme
Nous dsirons inscrire un texte dans un polygone quelconque. Nous rencontrons ce problme chaque fois que nous crivons un texte dans un cartouche en dessin industriel par exemple,,ou dans une bulle en bande dessine, etc... Exemple :

Figure

3.21.:

Dfinition

des intervalles

horizontaux.

Sur chaque ligne d'criture, le polygone engendre galement des intervalles d'critures dans lesquels ~US pourrons insrer le texte (voir figure 3.22). NOUS pouvons faire deux hypothses : soit les caractres sont strictement contenus par le polygone (Figure 22.a), soit les caractres Peuvent couper le contour (Figure 22.b). La seconde hypothse est inrresSante si ~US voulons que le texte pouse la forme d'un polygone sans afficher ce dernier.

Nous inscrivons le texte sur une ligne d'criture et son somet. La hauteur de la ligne d'criture varie caractres choisie (vair figure 3.20.).

dfinie selon

par sa base la taille des

L.a) Les caractres sont strictement

intervalle inclus

d'criture

dans le polygone.

98

b) Les caractres Figure 3. L'ia? 3.22.:

peuvent Dfinition

couper

le contour. d'criture.

des intervalles

et e'alT@.tthme

Pour chaque ligne d'criture, l'ensemble des intervalles d'criture est obtenu en ralisant soit l'intersection des listes d'intervalles horizontaux forms par le contour polygonal sur les lignes de balayage comprises entre le sommet et la base de la ligne d'criture dans le cadre de la premire hypothse, soit l'union de ces mmes intervalles horizontaux entre chaque ligne de balayage si le texte peut couper le contour. Pour le calcul des intervalles horizontaux, nous utiliserons l'algorithme de suivi de contour employ pour le remplissage (mmes structures de donnes et mme logique). Les intervalles d'criture appartenant chaque ligne d'criture seront obtenus en calculant l'intersection ou l'union des intervalles horizontaux des lignes de balayage conscutives prises deux deux. dans Diffrentes stratgies peuvent les intervalles d'criture : au fur 1.---..tre envisages pour l'criture d'criture "~ oo& du texte sont fo""sr-

sont

Les algorithmes d'union dvelopp& au chapitre

et d'intersection 4.

de deux listes

d'intervalles le BASIC d'un

Nous donnons une version du HP 9345 qui permet d'crire contour polygonal quelconque.

de cet algorithme programm dans un texte strictement a l*intrieur

Inscrire le texte ^^1^__,1^_ ^_ ^ *_....*.._-

et mesure que les lignes L...L .- _.~~_. ~.L -,?.?-LI

. -LLnCC. ie texte en rec0m**a"t le mme processus, p U~S redfinir une nouvelle taille des caractres et un autre cart entre les lignes d'criture, et faire une nouvelle tentative d'inscription ; . Afficher le texte quand tous les intervalles d'criture ls et si ce dernier peut y tre entirement contenu. Sinon une nouvelle taille des caractres et un nouvel cart, puis pKOCeSS"S. La premire solution est la plus avantageuse criptible a priori. L'algorithme gnral suivant si tout ralise sont calcuon redfinit on ritre le

Les structures de donnes utilises pour dcrire le contour polygoaal, la liste des artes et la liste des points d'intersection sur la ligne de balayage, sont identiques celles employes par l'algorithme de remplissage par "suivi de contour" (chapitre 3.3.3.2 (2)).

le texte est inscette mthode :

IDI

Synrhse

dmage

: Rlgorirhmes

Kmenraires

103

105

107

NOUS avons expos deux approches gnrales utilises pour le remplissage des taches polygonales. La premire raisonne a partir du codage du contour dans une matrice de points. La seconde urilise une reprsentation sre du contour pour effectuer le remplissage par suivi du contour. Les algorithmes de remplissage inconvnients suivants : par codage du contour prsentent les

- mmoire d'image supplmentaire, - raisonnement effectu sur la surface tache (calculs supplmentaires), - gnration simultane d'un ensemble impassible. Par contre, ges suivants : les algorithmes de suivi

du rectangle de taches de contour qui

circonscrit se chevauchent les

la

possdent

avanta-

- peu de mmoire supplmentaire (proportionnelle au nombre d'artes), - on ne travaille que sur Fintrieur de la tache, - ils sonf gnralisables au remplissage simultan d'un ensemble de taches qui se chevauchent ou non, - nous verrons galement dans le chapitre 3.5. qu'ils sont facilement adaptables au hachurage.

~em,,,issage

de roches

109

3.4. Dcomposition
3.4.1 INTRODUCTION

des taches polygonales en lments simples

3.4.2

NOUVEL

ALGORITHME

DE UECOMPOSITlON de contours polygonaux


quelconques

La tache o les artes

est forme d'un ensemble peuvent se croiser.

Pour le remplissage des taches polygonales, une autre approche consis-,, te dcomposer le contour polygonal en un ensemble de rgions cohrentes formes de trapzes ou de triangles (vair figure 3.23.) puis appliquer sur chaque rgion &lmentaire un algorithme de r.emplissage trs simple.

Notre ide d'algorithme repose sur celui de BENTLEY et 0Tl'W.N qui recherche toutes les intersections dans un ensemble de segments. Les seg,,,e,,es seront pour nous les artes des contours.
3.4.2. f Ln m.thie de BENTLEY et OTTM4N

ides tions Figure 3.23.: Rgions cohrentes d'un contour polygonal.

La technique de BENTLEY et OTTMAN ISENTLEY-OTTMAN 79) qui reprend les de SHAHOS et HOEY, <SHAKOS-HOEY 76). recherche toutes les intersecdans un ensemble de N segments. L'algorithme se dcompose en deux parties : croissant. Une structure

les diffrences qui existent entre les mthodes proposes, rsident essentiellementdans l'ordre par lequel les rgions lmentaires sont remplies (glissement sur les contours, tri des artes suivant les ordonnes) (voir <NEWAWSPROUlL79>, CBBASSEL-FEGEAS 79>) et par la rduction ventuelle du nombre de rgions. NOUS avons montr que, aprs la dcomposition en triangles d'un palygone quelconque, la complexit des algorithmes de remplissage de taches appliqus sur cet ensemble, demeure dans la plupart des cas (convexit, nbam=Z,...) quivalente ou suprieure la complexit de ces mmes algorithmes employs sur la tache polygonale initiale (voir CHEGRON 82b>) . Pour les cas particuliers o ceci n'est plus vrifi, la complexit du dcoupage du polygone tant similaire celle des techniques de remplissa& la dcomposition du polygone en figures lmentaires ne rduit pas la complexit initiale du remplissage. Un autre inconvnient de la gne par ligne de la tache initiale mission de l'image en tlvision. dcomposition, qui demeure est la perte du codage liintressant pour la trans-

Ire partie : tri des 2 N abscisses de donnes Q, contiendra cette squence.

en ordre

2me partie : exploration de cette squenc Q obtenue en commenant par la plus petite abscisse. Celle-ci est stocke dans une structure intermdiaire R, rduite ici un l&nt (c'est bien sr l'abscisse dbut d'un segment SI. Puis on passe l'abscisse suiiranre dans la squence Q : . g c'est une abscisse points d'intersection de la tre, ce qui induit un ordre R suivant l'ordre vertical. dessous dans R, alors insrer tion dans Q. dbut (soit x0): on calcule les ordonnes Desh droite x-x0 avec les segments qu'elle renconvertical. On insre le segment concern dans Si ce segment coupe celui au-dessus et aul(es) abscisse(s) d(es) point(s) d'intersec: si les segments au-dessus et au-dessous alors insrer l'abscisse de l'intersecde R.

. g c'est une abscisse fin de ce segment dans R se coup? tion dans Q. Enlever le segment

La dcomposition ne peut devenir avantageuse que dans la mesure o les algorithmes de remplissage des trapzes ou des triangles sont raliss de fawn clable ou micro-programme (voir <MARTINEZ 822 et <LITTLE-HEUFT 79>) Nous pouvons envisager~galement le remplissage des rgions lmentaires en parallle, au fur et mesure de leur cration (paralllisme de type pipe-line). Comme aucun des algorithmes de dcomposition rencontrs ne traitent des contours polygonaux possdant des artes qui se coupent, nous donnons ci-dessous une ide d'algorithme fonde sur la notion de suivi de contour.

. g c'est l'abscisse d'une intersection, il faut changer les positions des segments concerns et vrifier si aprs cet change les segments nouvellement adjacents dans R se coupent. On insre les abscisses des points d'intersection dans Q. . 2 Q est vide alors fin ;

110

Synihse dmage

: A Igorirhmes imenmires

Remplissage

de roches

Ii

Figure <LucAs

Exemple 3.24.: et a1.79>).

de traitement.par

BENTLEY et OTTMAN (tir

de Etudions chaque la module : : . Obtenir ligne horizontale

En ce qui nous concerne, nous raisonnerons suivant croissantes. Mais il faut noter que dans lalgorithme des difficults apparaissent dans deux cas : parat - segments horizontaux : dans notre car nous les supprimons ; - intersections 3.4.2.2 - LLxWAation cnmrmnes plus application,

les ordonnes dde BENTLEY et OTTMAN cette difficult dis-

.taaLtti te po& de 1atgotihme FiJl T en sortie, . Dcomposition on obtient

,comme dan& & dwtime de BENTLEY et OTTMAN la structure simples R). :

ptie

de deux segments. de BENTLEY et OTTM4N tri qui : des extrpermettra

de L'atgokLthme

en lments

La dtermination de,s rgions mits des artes non horizontales

lmentaires dbute par le suivant les Y dcroissants. horizontal

On calcule avec la ligne bords gauches ligne

les abscisses des intersections des artes appartenant; horizontale suivante. Nous obtenons alors un ensemble de et droits suivant lordre horizontal :

La structure R induit sur les artes un ordre de distinguer les bords gauches des bords droits. Dans la structure R, trois types de points

courante

se prdsentent

1. dbut darte, 2. fin darte, 3. point dintersection. les Les modifications suivantes : apporter lalgorithme de BENTLEY et OTTNAN sont

ligne

suivante en trapzes : deux par deux dont les extrmits sur la ligne courante et sur corresla ligne

- Dcomposition

On extrait de R les artes pondent aux points dintersection suivante. - Dcomposition en triangles

- dans le parcours de la st~cture Q, nous regroupons ltude des points appartenant la m%w ligne horizontale (cest--dire de mmes ordonnes). Pour chacune des lignes horizontales o se produit un ou plusieurs changements, nous obtenons la liste ordonne des artes dans lordre croissant des abscisses des points dintersection (structure R) ;

: pour chaque le trap.e couple, si en deux

On fait la mme chose que prcderment, puis aucune des extrmits nest comrmne, on dcoqose triangles :

Complexit

thorique

: tri sur les de

ta mthode possde une complexit en OMogN + k LogN)! 2.N ordonnes inclus, o k est le nombre total dinrersectuans. En terme dappels la fonction droite le cot est en O(N+k). 3.4.3 Mais le bon fonctionnement de lalgorithme ncessite une dfinition prcise de lintersection encre deux artes. Deux artes se coupent au point 1 si elles ne sont pas colinaires et si aucune des extrmits nest cormne : - CUNCLUSZUN Pour conclure, nous pouvons faire deux remarques : intersection de deux

segments

*
intersection au point I : k 1

. Par rapport aux composer en lments tes qui se coupent et aucune des artes ne de calcul dintersection rat . Lefficacit pas a priori

algorithmes existants, cette mthode permet de dsimples, des polygones quelconques admettant des argalement des trous et des contours disjoints. Si se croisent, nous pouvons simplifier les calculs (pas de segments de droite). nappa-

1 I 3.5. Le hachurage de taches polygonales


3.5.1

de lapproche du remplissage par dcomposition par rapport aux approches directes.

- LE HACHURAFE VERTICAL OU HORZZUMAI horizontal de contour. est quivalent celui du remplis-

pas ..Q-)& / ditersectio: .h.


COUllUll~S COUUtUllle Exemple : Dcomposition dune tache polygonale quelconque : A8 ---_._----

colinarit

~
! 1 1

Le problme du hachurage sage par la mthode du suivi

Dautre part, dans la structure R, les artes possdant le mme point dintersection avec la ligne horizontale courante seront ordonnes suivant lordre croissant de leurs pentes (les artes tant orientes vers le bas).

La cohrence qui existe entre deux lignes de hachurages conscutives est la suivante: soit Ei lensemble des artes qui cou ent la ligne i, alors Ei+, -E.+{artes qux coancent dans la bande fligne i,ligne i+g(artes qui finissent dans ]ligne i, ligne i+l]}. Dautre part, en inversant le hachurage vertical est identique au hachurage le rle des abscisses et des ordonnes. obtenus avec des cellules 3x3) hari-

zantal

Exemples

de hachurage : (griss .!: 3% g+p$$?& ::::::::::::::.

*c -_-_-EC -.-B a -------L__ CD _----_% _-

0 -----__

3.5.2 3.5.2.1

HACHURAGE OBLIQJIE DE CONTOURS POLYGONAUX - zvLt.wduotion

Une arte commence (ou finit) figure 26) si son extrmit dbut problme gnral de l'appartenance

dans la bande jligne i-1,ligne (ou fin) appartient ce plan d'un point un plan.

i] (voir : c'est le

Puisque nous savons hachurer horizontalement, nous pouvons envisager de nous ramener ce problme en oprant une rotation d'un angle -a du. contour, a tant l'angle for& par les lignes de hachurage. Puis pour chaque segment horizontal calcul, nous effectuons une seconde rotation d'un angle upaur afficher les hachures obliques (vpir figure 3.25.). YI

Soit a la pente des lignes de hachurage. Chaque ligne i est caractrise par l'quation y=ax+y. o y.=conseante. Si (x ,y ) sont les caardonnes d'un point P, la drotte delpente a passant p.k 'ce poinr~est dfinie par l'quation y=ax+yp ou y =y -a~, (voir figure 27). Donc le point P apP 1 partient la bande]ligne i-1,ligne i] si yi-,>yp>yi.

G = angle des lignes hachurage

de

YP Figure 3.25.: Rotations du contour. x

=i

Cette mthode prconise par BRASEL et FEGEAS (MASEL-FEGEAS 79>) demeure simple dans sa logique mais n'apparat pas optimale car nous oprons deux rotations successives. A l'aide de la technique du suivi de contour, notre ide est de conserver le schma gnral utilis pour le hachurage horizontal sans avoir recours aux rotations successives.

Y P

P (Xl,Yl)

y = ax + YP = ax + yi

Figure

3.27.:

Dfinition d'un point.

d'une

ligne

de hachurage

et position

relative

1. m pent

: de connaitre l'ensemble des artes qui cou-

Soit un contour polygonal dfini par la liste mets et a la pente des lignes de hachurage. Tout par la valeur ys donne par l'quation :: ys-y'-% coordonnes de s. Nous construisons une nouvelle dre dcroissant des ys correspondant. (Sj,YS.).3 jrl...n Sysj (voir Ou "j-1 '1 liste

ordonne S de ses n sompoint sSS est caractris o (~',y') sont les suivant l'or-

Le problme rsoudre est chaque ligne de hachurage.

Soit i la ligne de hachurage courante et (i-1) la ligne prcdente. Soit Si-, l'ensemble des artes qui coupent la ligne (i-l). On a : Ei=Ei-,+ {artes qui conanerrent dans la bandelligne i-1,ligne il}{artes qui finissent dans la bandelligne i-1,ligne i]}.

de somwts ordonne On obtient la suite : figure 3.28.).

s5 s3 s s7 64 suite(sj,ysj)j=, ,...7

Figure

3.26.:

Dfinition

de la bande ]ligne

i-1,ligne

i]

Figure

3.28.:

Constitution

de la

liste

ordonne

des sonrmets.

$6

est

Chaquearte ayant pour oriente de telle facon

extrmits les sommets sd(dbut) que ysd>ysf (voir figure 3.29.).

et sf(fin)

::,

s kl ri=
k2 cent sant - La liste des artes coupant la ligne - Ai(*) : liste des artes - interx(*), intery : coordonnes arte *wc la ligne i. de hachurage des intersections i : de chaque Comme pour lalgorithme de remplissage, le contour de la tache est constitu dun ensemble de polygones. NOUS disposons galement de 1Ecart qui existe entre deux lignes de hachurage conscutives et de leur Pente. Lalgorithme a la forme gnrale suivante : HACHURAGE OBLLQUE lN,TI*ll Utbut Pnmtement:

117

Sf2 YSf,> YSf2 i Figure 3.29.: Orientation des artes. x

qui counnen- S(*) : S(i) pointe sur la liste des artes k,,k2,..., respectent lor a re dcroisau sonmet i (les sommets i=1,2 ,...nbsom des ys; correspondant ).

Dans lalgorithme de remplissage par stivi de contour, nous nous dplaons sur le contour suivant la direction verticale. Ici, nous suivons le contour dans une direction perpendiculaire aux lignes de hachurage. Le calcul des intersections rient compte de la cohrence qui existe entre deux lignes de hachurage conscutives. Pour ce faire, nous calculons pour chaque arte laccroissement en X et en Y existant entre les lignes. Le premier point dintersection est obtenu en ralisant le calcul dintersection entre deux droites, la ligne de hachurage et la droite support de 1ZVSte. 3.~ MiAe-en-o~euvhe On se servira des structures

de donnes

suivantes

- La liste des so-ts dfinie par : - s(*) : tableau servant pour la numrotation des sommets : coordonnes des sommets du contour - x(*),y(*) : intersections des droites passant par les sonmets - Ys(*) laxe oy (droites parallles aux lignes de hachurage). - La liste des artes orientes - sd(*) : sommet dbut (donn - sf(*) : sommet fin - a(*) : accroissement en x - b(*) : accroissement en y : accroissement en x - dax(*) : accroissement en y - day(*) sant - Liste des artes qui par les sommets (ordre commencent dcroissant : par le numro du sanrmet)

avec

entre entre

les les

lignes lignes ligne

de hachurage de hachurage de hachurage pas-

sur chaque des ys)

&:=i

. Yd:=T[i+ll; Xd:=T[i) ,&=i+2 ; io:=T[il; w[Nbal:=Xd ; y[Nbsl:=Yd; Ysd:=Yd-Pente'Xd ; Nsd:=Nbs; d[Nbdl:=Nbd ; YblNbd):=Ysd; Nbd:=Nbb+l; F.Ln:=&uw;

q fi

o#NlL

&XJ:=Xo,

CO .kLfm - Ybd>Y66 atoxb Nba:=Nbatl; -ddINbal:=Nbd, 66[Nbal:=Ns6; Ax:=Xd-Xd ; Ay:=Yd-Yd; a[Nbal:=Aw ; b[Nbal:=Ay; &x[Nbal:=[y*Axll[Ay+Petie*Axl; duy~Nbal:=Pente*d.axlNbal-Dy; 6utOyI Ai Ydd<Ybi -w Nba: =Nba+l; sd[Nba):=Nsd ; s,3lNbal :=Ndd; Aw:=Xd-X6 ; Ay:sYd-Y6; a(Nbal:=Aw ; b[Nbal:=Ay; dux[Nbal:=[Uy*Axl/[Ay+Petie*Awl; daylNbal:=Pente*daxINbal-Dy;

Y6:=T[i+11; x(Nbhl:=Xd ; y[Nbs):=Yd; ~~&=Y6-?ente'X6 ; Ndd:=Nbb; 6(Nb&]:=Nb6 ; Y&tNb6l:=Yb& Nbs:=Nb&+l; *x6:=T[*ol ; Y(:=JTlh+ll ; i:=i+l; Y66:=Y6[Nbul, Nh6:=Nbm FuZ:=v~ai CO demi&te ah& du poLygone L'ahte [[%LV&[X6,Y611 &

nA:=l 0 n" aomet yphed:=yb ~VIA) Lut& ypwzd=yaltil

7&7 6"e

; Yd:=Yd ; YAd:=Ydb : Xo:=T(I);

; Nbd:=N&$

120

121

Hachurage LB ligne

proprement de hachurage

dit : est non finale

si

<j-cotul>y.6ti.

Ei(nbaiJ:=k: I,,&-x (~b~):=[a(k~~y(~~+b~klx[nal-a(kl*ycowr~/~blkl-pe~e*~~k~~; ~ntm-y [nbail :=pente*inten-w (nbail+yau%

Exemples 1

de hachurage

oblique

aRoh4

k:=i+l;
Poti j=k & nbai w

Nous pouvons remarquer sur lexemple ci-dessus que lors de laffichage des lignes de hachurage, le passage de lespace utilisateur (valeurs relles) lespace cran (valeurs entires) produit des erreurs sur la distance comprise entre les lignes de hachuragea(erreur variant de -1 +l mit cran). Ce problme oblique correct, tous les points numrique ne nous permet pas deffectuer un remplissage car conme nous le constatons sur lexemple ci-aprs, de la tache ne sont pas affichs.

122

123

quelconques NOUS TefTOUVOn* le* erreur* ses sur la distance comprise les lignes de hachurage. Co%tv&-' entr*

e8t

simple.

. Parmi ces diverses classes d'algorithmes, une mthode gnrale SS de la technique du suivi de contour. En effet, raisondgage : il s'agit ,,ant partir d'une reprsentation structure du contour, elle permet non seulement de raliser le remplissage d'une tache ou d'un ensemble de taches polygonales ou non, mais encore elle s'adapte facilement Su hachurage, au dcoupage de taches polygonales en lments simples et au paralllisme (voir <BLOC8 81>). I+,~S montrerons dans cOnt~~r sont gnralisables gomtrique. le chapitre suivant'que certains problmes les principes de dcoupage du Suivi de et de nature

3.5.2.3

- ConUbn et l'valuation de notre algorithme de hachurage nous permet de faire la remarque suivante : de cette mthode est la prsence demeure en 0 (nbsom.Log nbsom). du tri

La mise en oeuvre oblique sans rotation - le principal des sommets dont la

inconvnient complexit

- l'inconvnient de l'algorithme tait les calculs supplmentaires d'abord sur les Sonrmets du contour hachurage. Le problme des 2 solutions est est

de hachurage oblique avec rotations effectus par les rotations successives, puis Sur les extrmits des lignes de de quel critre l'une ou l'autre

de connatre partir la plus avantageuse.

Nacre version du hachurage oblique, fonde sur la technique du suivi de contour, s'avre la plus performante ds que le nombre de lignes de hachurage est trs suprieur Su nombre d'artes (ds que nblh>2. nbam. nba ah nbam est le nombre moyen d'artes coupant une ligne de hachurage, mais cette ingalit demande tre vrifie dans la pratique).

3.6. Conclusion
De manire gnrale, les performances et les ressources requises par les algorithmes de remplissage ou de hachurage de taches dpendent de la complexit des contourS. Mais le critre primordial demeure leur Sdapration la synthse d'image dans un cadre d'application donn : faire intensit lumineuse taches polygonales interactivit, mmoire disponible. variable ou non, ou constante,

Pour chacune des classes les remarques gnrales

d'algorithmes qui suivent.

de remplissage,

nouS pouvons

. Les algorithmes de coloriage Sont avant interactive (dtermination du point intrieur,

tout utilisables de manire convexit de la tache). s :ii

. La mthode de remplissage par codage du contour ncessite la plupart du temps une mmoire d'image supplmentaire et s'adapte mal un ensemble de taches qui se chevauchent. Cependant, sa gnralisation des contours

Chapitre 4

Algorithmes de dcoupage et traitements de nature gomtrique


4.1. Introduction
Il est extrmement frquent que, lors de la mise en page ou dune image, on ait besoin de ne reprsenter sur lcran de la scne considre. Lorsquon travaille dans le plan, le sique consiste utiliser une fentre, espace rectangulaire lles aux axe* (figure 4.1). dun dessin quune partie problme clas bords paral-

Figure

4.1.:

Dcoupage

dune

scne

par une fentre.

Cependant, on peut avoir besoin de faire des calculs dans le cas o lon ne dispose plus de la facilit donne par le paralllisme aux axes. Le problme revient alors dcouper une sLne par une fentre constitue par un polygone convexe ou non, le nombre de ses ctds tant quelconque. De faon plus gnrale, nous sommes parfois amens comparer deux polygones quelconques et dterminer tous les polygones rsultant de leur intersection (du dcoupage de lun par rapport lautre). Nous utilisons ce dcoupage en particulier dans lalgorithme dlimination des parties caches dune scne tridimensionnelle.de ATHERTON et WRILER CATHERTEONmILER 77>, ou B partir de lensemble des faces polygonales qui la composent, nous voulons obtenir un ordre total sur un ensemble de facettes. Ce dcoupage peut galement savrer utile pour la manipulation dimage. Ainsi, et suivant selon le type de la scne que nous manipulons le rsultat que nous voulons obtenir (structures (dessin ou image) de donnes,

126

Algorithmes

de dlcoupage

127

affichage sur lcran) le res trs diffrentes. Dans fication des problmes de res de nature gomtrique

problme du dcoupage peut tre trait de mani& le paragraphe suivant, nous ferons une classidcoupage en degageant les problmes lmentai: inhrente chacun deux. polygone rsultant

fentre

Pour lensemble des traitements abords , nous svons constat la digparit des mthodes proposes dans la littrature, provenant de la diversit des proccupations qui ont conduit la rsolution du problme dorme. A la lumire des chapitres prcdents, nous montrerons dans le souci dune dmarche unitaire. cormnent nous avons utilis les principes de la techoique du suivi de cotor pour rsoudre les.problmes de dcoupage.

0
polygone initial

4.2 Classification des problmes de dcoupage


Dans cette classification, polygonaux, mais elle peut
1.

a
On calcule ici lensemble composent le polygone rsultant 2. Dcoupage dune tache des contours (intrieurs du dcoupage. par ne fentre visible : polygonale dune tache (hachure ou et extrieurs) qui dans une compte dun Nous voulons ici afficher la partie remplie) dans une fentre polygonale. Deux solutions peuvent tre envisages

nous ne raisonnerons que sur des cotors tre gnraljse pour des cotofs quelconques. par une fentre partie visible peuvent tre du dessin lmentaire dun polygone envisages : au trait sa8 tenir est le dcoupage

Dcoupage

dun

polygone

Le problme est fentre polygonale.

de calculer la Deux hypothses simplement le problme :

a) Si nous produisons de la notion de contour, segmenf par un polygone

a) Dterminer le polygone rsultant du dcoupage du polygone initial par la fentre (coorme en l-b). Puis hachurer ou remplir ce polygone (on se ramne au problme lmentaire du remplissage ou du hachurage dune tache) .

seglsents

visibles

polygone

dcoup polygone chant rsultant le polygooe de hachurage initial : en naffi-

On naffiche

que les

parties

des artes

visibles

dans la

fentre.

b) Pour le hachurage, a hachure tout que les parties visibles des lignes

b) Si nous voulons conserver la notion de contour, par exemple la otio de facette plane pour le dessin au trait, ou la notion de tache pour la synthse dimage, le problme est de calculer le polygone rsultant, situ lintrieur de la fentre qui rsulte du dcoupage du polygone initial par celle-ci.

parties

des hachures

affiches

parties

des hachures

on

affiches

Algorirhmes

de ddcoupage

129

Le problme lmentaire (hachure) par un polygone. tial

demeure

le dcoupage

d'un

segment

de droite il

Pour le remplissage proprement en n'affectant que les points

dit, on remplit tout situs l'intrieur ensemble des points

le polygone inide la fentre : visibles

ensemble (extrieur Le problme lkkntaire rieur ou non du polygone

des points non affichs la fentre) a est situ l'ints'anous ra-

estd e savoir si un point (comparaison point-contour).

G
0
a

#dpiTQ 0 Vd
PS P2 Pn Q P3 P4 D a3
92, Q3.

Si P dcoupe

Q on obtient vouloir

PnQ, PnQ,

QI, PnQ,

Q2, Q3 P3, P4, P5 PZ, P3, P4, P5 et Ql, Pi,

Si q dcoupe

P on obtient

Pl,'PZ,

Dans le cas du hachurage (et peut-tre aussi vre ncessaire d'afficher les parties visibles menons alors au problme expos en (1-a).

du remplissage),s'il du contour, nous

On peut ~
4.

aussi

obtenir tache

Dcoupage

d'une

par une autre

Pour la premire solution (a) le temps de calcul et d'affichage est proportionnel la complexit de l'image initiale et non & la complexit de l'image visible. Mais si le temps de calcul du remplissage ou du hachurage dans la seconde mthode (b), est proportionnel la complexit de l'image visible, il faut lui ajouter le temps de calcul du dcoupage proportionnel la complexit des contours. Le problme est de savoir, dans quels cas, l'une ou l'autre des deux solutions est la plus avantageuse. En (b), nous proposons d'afficher la partie visible d'une tache, en effectuant le remplissage ou le hachurage de toute la tache initiale, mais en n'affectant que le sous-ensemble de l'ensemble des points ou des lignes de hachurage visibles dans la fentre. L'appartenance d'un point ou d'un segment termin dans ce cas, de differentes faons : - Soit en utilisant ou de dcoupage d'un l'un segment des algorithmes par un polygone. la fentre, de comparaison peut tre d-

Pour composer une image en deux dimensions, nous manipulons un ensemble de taches. Les taches peuvent se superposer ou se combiner, suivant certaines rgles de composition. Ainsi, quand deux tches se chevauchent, nous devons dcouper l'une par rapwrt l'autre. suivant le rsultat escompt :

point-contour Q devant Nous pouvons P envisager deux 0" solutions : de la tache qui se tronextrieurs & cette derP

devant

- Soit en effectuant le remplissage ou le hachurage de la fentre et de la tache simultanment et en n'affichant que les points ou les parties des lignes de hachurage qui appartiennent l'intrieur de la tache et l'intrieur de la fentre. 3. Dcoupage Il section d'un polygone par un autre polygones qui rsultent de l'inter-

a) On dcoupe l'un des contours par le contour Ve devant, en conservant les polygones rsultants nire : c'est le problme nonc en (3). Si Q est Si P est devant devant P an obtiendra Q on obtiendra Pi,
01,

s'agit de dterminer de deux polygones

tous les quelconques.

P2, P3, P4, P5 Q2, Q3.

130

Svnthse

d image

: Algoriihmes

l&enroires

qui

Ensuite, an affiche les taches est devant avec leurs couleurs

extrieures appropries. illustre rsultat

ainsi

dfinies

et fa tache

Dans ce cas, si uns ambigut, tervient. nous devons Calculer le

sur la figure ci-dessous indu dccum~e des deux taches

ambigut du paragraphe (3), nous devrons dterminer et Q3 o Pr-,Q sera de la couleur de P, si P est devant Q, ou de Q si Q est devant P, o Pl, P2, P3, P4 et P5 seront de la couleur de P, et o Q,, 92, et Q3 seront de la couleur de Q. Puis partir de ce nouvel ensemble de taches, on pourra raliser~le dcoupage de la mme facon avec les autres taches de la scne qui sont en conflit. Une fois le traitement de toute la scne effectu, on affichera ce nouvel ensemble de taches.
PnQ, P,, P2, P3, P4, P5, QI, Q2,

Sur l'exemple

de la figure

mais d'un

b) On dcoupe les taches non plus en raisonnant sur leurs surfaces. On retrouve ici le problme ensemble de taches (voir <EDMONDS et al. 82>).

sur leurs contours, de la manipulation

Avant d'entreprendre le dcoupage, on peut essayer tout d'abord de determiner, si les deux contours polygonaux comparer sont disjoints, si l'un contient l'autre OU s'ils se coupent (mme chose pour les taches).
5.

Conclusion

: des problmes : du dcoupage, mm avons dgag

Dans la classification quatre grandes classes


234-

l- Dcoupage Dcoupage Dcoupage Dcoupage

d'un polygone par une fentre, d'une tache par une fentre, d'un polygone par un autre, d'une tache par une autre.

Mais pour l'tude de chacune d'entre elles, il conviendra de distingua les cas particuliers o les fentres, les polygones ou les taches sont rectangulaires aux bords parallles aux axes, convexes ou quelconques, pour tirer parti dans chacun des cm de leurs proprits intrinsques. D'autre lmentaires
l2La

part, :

nous

avons

mentionn

l'utilisation

de trois

problmes

comparaison d'un point et d'un contour Le dcoupage d'un segment de droite par un contour 3- L'intersection de deux segments de droite. Le tableau rcapitulatif qui suit, nous redonne toutes les oprations gomtriques et de dcoupage cites plus haut, en y ajoutant des opration6 lmentaires telles que comparaison entre deux points, encre un point et

132 in effet, un algorithme de dcoupage peut cambir un segment ou une droite. ner plusieurs oprations lmentaires. Par exemple, l'algorithme d'intersection de deux contours convexes de SHAHOS, utilise la comparaison d'un point et d'un contour, la comparaison d'un point et d'une droite (au segment de droite) et le calcul d'intersection de deux segments de droite.

Algorhhmes

de dcoupage

133

4.3. Comparaison dun point et dun contour polygonal


4.3.1 - INTROVUCTION Le problme rsoudre est de savoir si un point est situ l'intrieur ou l'extri+r d'un contour polygonal. La comparaison d'un point et d'un co,,tou est trs so"vent rencontre, en particulier, pour l'identification d'un contour ou d'une tache de manire interactive, dans le dcoupage d'un contour par un autre et dans certains algorithmes d'limination de parties caches. Nous blme en vexes de ordonne allons tudier les diffrents algorithmes qui rsolvent ce prodiffrenciant ceux qui s'appliquent uniquement aux contours conceux qui traitent les contours quelconques dfinis par la suite de leurs nbsom sommets si o i=l,...,nbsom (vair Table 4).

4.3.2 4.3.2.1

- CUMPARAISON POINT-CUtiTOUR - Itiodutin

CONVEXE

Il existe deux mthodes qui ne traitent que des contours mthode de DAHAN LE TUAN, et celle de SHAMOS.

convexes

: la

La complexit du premier algorithme est en O(Nbsom). Par contre, si dans l'algorithme de SHAKOS nous effectuons un prtraitement sur le contour convexe dont le comportement est en O(Nbsorn), la comparaison effective du point et du contour convexe possde une complexit en O(Log Nbsom). 4.3.2.2 - Mthode de SHAMUS Ivoin <SHAhdOS 75>)

h partir d'un point en N secteurs angulaires. : coordonnes polaires \*z s3 02

C intrieur au polygone convexe, C est considr cozmne l'origine

on divise le plan d'un systme de

axe de rfrence 8 s1

Soit

w p le point

comparer

au contour.

134

135

Cm dtermine son angle dichotomique, an dtermine Secteur calcul, on regarde L'algorithme ------_-__ Soit (1:nbsom) On obtient :

polaire (cs,,cp), puis suivant une recherche le secteur auquel il appartient. Une fais le de quel ct de l'arte se situe le point p.

4.3.3 4.3.3.1

- COMPARAISON POINT-CONKXR - ItLttodutin

NON CONVEXE

(xc,yc) les le tableau l'algorithme

coordonnes des angles suivant

du point intrieur polaires ordonns :

par

au contour, et Taigle valeur croissante.

Pour traiter la comparaison nombreuses mthodes existent : - dnombrement d'intersections, - angles capables, - codage.

d'un

point

et d'un

contour

quelconque

de

hrpahnhon POINT CONTOUK CONVEXE Dbut CO method e de SHAMOS 40 --$nontiehe: = aux. vxl:=xc-X[l +; vyi:=yc-yl71; v*z:=xc-w;

Mais ces algorithmes ne surmontent pas facilement toutes les singularits (voir cas particulier de la Table 4). Pour pallier simplement ces difficults, nous proposons un algorithme, fond sur le raisonnement du "suivi de contour". 4.3.3.2 - Mthode du nuiui de contout

a:=wlind*retll-xlindicel; b:=y[i,,dicetl)-y&fice); c:=a.yitiel+b.wL&dicel; )urod:=(a.yptb.wp-c)(a.yc+b.xc-cl; bi Pnod <=O

Princiw On rsoud le contrle sonnement du remplissage figure 4.2).

de parit pour le point de tache par la mthode

P, en utilisant le raidu suivi de contour (voir

Ainan * &i & Critijue -----: fi%--olLA:=&; e

3% e

lu:=&;

Figure est l'utilisation de foncen temps de calcul. grand nombre de points polaires, tant efsolution demeure en

4.2.:

Comparaison

point-contour

: "suivi

de contour".

Le principal dsavantage de cette mthode tions triganomtriques inverses trs coteuses

Par contre, dans la mesure o nous avons un trs a comparer un CcmtO"r ccm"exe, le calcul des angles fectue une fois pour toutes, le comportement de cette O(Log Nbsmn).

Pour ce faire, on dnombre les intersections tale situe gauche du point avec l'ensemble prenant pas en compte les artes horizontales la droite.

de la demi-droite horizondes artes du contour en ne et celles qui finissent sur

136

Synrhse

dimoge

: Algorithmes

~,&,w,,oires

L'algoriebme ---------_

4.3.4

- CONCLUSION de SHAEy)S, tire le meilleur est utilis plusieurs fois et

Sur des contours convexes, l'algorithme profit de cette information quand le contour q,,e le "ombre d'artes est assez important. Des quatre solutions qui la mthode du "suivi vexes), sante : - Les singularits ou les sans calculs supplmentaires.

traitent des co"tours de CO"~~UT" apparat cas particuliers sont

quelconques (no" CO"comme la plus intressumnts simplement .des est

6i ydeb>=yp eoti 6i y&tc=gp ou xdeb<=xp aeOhs xinteh:=lydeb-y)* -k+xdebl/Cydeb-y&,nJ & Linten<=rp aeond 6i ti~=Xp

- Les contours peuvent possder des trous (contours iatrieurs), co"tours extrieurs disjoints et des artes qui se croisent, ce qui rarement le cas pour les antres mthodes.

- L'bvaluatio" des divers algorithmes a montr que cette mthode s'avre la plus avantageuse car les calculs sont simples (voir <HEGRON 83c>). - 0" peut tirer parti de la convexit.

4.4, Dcoupage dun segment de droite par un contour polygonal


4.4.1 - INTRUUUCTION Le dcoupage d'un segment de droite par u" C""~OUT est essentiellement utilis pour la production de dessin au trait. Il s'agit dans la plupart des cas, de calculer la partie visible d'une scne dans une fentre. La scne tant forme d'un ensemble de segments de droite, seul le type de la fentre dterminera l'algorithme employer, savoir, rectangulaire (sous entendu a"x bords parallles aux axes), convexe ou "on CO"VBXE . NOUS allons envisager de dcoupage, par rapport bila" des caractristiques Critique Les avantages de la mthpde de "suivi de contour" sont mltiples : peuvent ou exa d4.4.2 4.4.2.1 - DECOUPAGE PAR RAPPORT A UNE FENETRE RECTANG4llAlRE - Intmdutin d'une scne par rencontr, pour rapport : une fentre recta"dans les paragraphes suivants, a ces trois types de fentre. des diverses mthodes. les algorithmes La table 5 fait le

- les singularits sont traites simplement; - le polygone peut tre quelconque : en particulier se croiser et le polygone peut avoir plusieurs contours, trieurs; tect - on peut tirer parti deux intersections La complexit thorique de la convexit : on s'arrte (point situ l'extrieur). est e" O("bsom).

les artes intrieurs ds que l'on

Le problme du dcoupage gulaire, est le plus souve"t

- la mise en page d'un dessin ou d'une image ; - le zoom sur une partie de la scne ; - les algorithmes d'limination de parties caches pour la visualisadans la mthode de tion de scnes tridimensiormelles : e" particulier WmNOCK.

138

. 4s mthode triviale consiste vdrifier systmatiquement si le point calcule est OU n'est pas visible. Cette mthode connue mous le nom de fmtmge par effacement prsente cependant l'inconvnient de demander un temps de calcul et d'affichage proportionnel la complexit de l'image initiale et non la complexit de l'image visible. . Pour le decoupage d'un segment de droite par une fentre rectangulaire, la ralisation cble de l'algorithme de SUT'dEXLAND (version dichovomique) apparat corne la mthode la plus adapte. Du point de vue logiciel, si un grand nombre de segments sont horizontaux ou verticaux, la mthode de PAVLIDIS demeure plus perfommte qbe celle de SUTHERLAND-COHEN. Nous verrons d'autre part, dans le chapitre suivant, que les techniques de SUTHERLAND et de PAVLIDIS, sont gnralisables ,pour une fentre COll"S*S. 4.4.2.2 - LalgonAhme
de

SUTHERLAW-SFROULL SPROULL parties que les essentielsymboles

La mthode propose pour la premire fois par SUTHERLAND et dans <SUTHERLAND-SPROULL 60, consiste calculer exactement les de l'image qui sont visibles, la liste d'affichagene comportant ordres relatifs celles-ci. Le procd de dcoupage s'applique lement des segments de droite, mais peut tre gnralisd B des graphiques. Le principe est le suivant :

On prolonge les bords de la fentre de manire dlimiter neuf rgions dans l'espace utilisateur. A chacune des rdgions on associe un code binaire (4 bits), l'iotdrieur de la fentre tant cod par '0000' :

Pour chaque droite, le bit associ est gal 0 pour l'ensemble des points situs dans le demi-plan, auquel appartient l'intrieur du rectansle dont le code est nul ; ce bit est gal 1 pour l'autre demi-plan. L'algorithme de dcoupage consiste.alors B trouver quelle portion d'une droite est visible dans la fentre ; pour cela. an cosme*ce par associer aux extrmits du segment le nmdro de la rgion du plan dans lequel elle *e trouve.

140 4.4.2.3 - L'~go.&Zhe de PAVLIVIS <PAVLIUlS 82> (voir figure 4.4.). des segmenrs situs le ca8 des segments avoir calcul les sisupport du segment, sont de part et d'ausignes relatifs des couper le ct de la

PAVLIDIS dcompose egalement l'espace en 9 rgions Il privilgie dans un premier temps le cas particulier gauche, droite, dessus ou dessous la fentre, et verticaux et horizontaux. Dans le cas gndral, aprs gnes des 4 coins de la fentre par rapport la droite il vrifie si les coins conscutifs pris deux deux tre de la droite support du segment en comparant les deux coins. Si oui (signes opposs), le segment peut fentre joignant les deux coins concerns.

0101 Figure 4.3.: Algorithme trois sortes de dcoupage. de segments sont sont est de droite en dehors dans dans (figure 4.3.): : segcodes Figure 4.4.: xmin Dcoupage max avec une fentre rectangulaire. de

On distingue ment5

- celles dont les deux extrmits AE, CD, BF, - celles dont les deux extrmits 0000): segment IJ, - celles dont une seule extrmit segment CH. Le'principe - on fait d'limination l'intersection est alors

de la fentre (deux

la fentre la fentre : associs

L'algorithme droite d'extrmits d'abscisses xmin

de PAVLIDIS qui suit (xl,yl) et (x2,yZ) et xmax et d'ordonnes

ralise le dcoupage du segment par une fentre rectangulaire ymin et ymax.

(un code 0000):

simple

des deux codes

binaires

aux extrmi-

ts, - si le rsultat de l'intersection est non nul, le segment est hors de fentre et non visible, - si le rsultat est nul, on divise le segment en deux parties et on recommence appliquer le processus jusqu' limination des parties caches et'dcouverte d'un segment dont les codes soient tous les deux (0000) la Cet algorithme utilise trois fonctions lmentaires qui sont :

- dterminer le code d'un point, - intersection de deux codes, - calculer le milieu d'un segment. Le milieu d'un segment (xl,yl),(xZ,yZ) est donn (yZ+yl)/Z) et peut tre calcul pour des coordonnes ditions et deux dcalages de bits droite. par ((x2+x1)/2, entires avec deux ad-

Si cet algorithme est utilis pour traiter des figures dans l'espace cran, o les coordonnes des points ont des valeurs entires et soit 2k la taille maximale d'un segment,pour l'tude d'un segment nous ferons au plus k comparaisons d'un segment par rapport au contour. taille Le comportement du segment. de l'algorithme est logarithmique en fonction de la

143
S-dy:=yl-y2 ; dx:=wf-x2 ; dwy:=rl.yZ-yl.wZ; qx:=xmk.dy ; qX:=max.dy ; qy:=ym.k.dx ; q.Y:=ym.dx; ul:=QX-yy+&, ; uZ:=qx-qY+dxy ; u3:=Q&QY+dXy ; u4:=qX-qy+dxy 6- j:=O;

4.4.3

- DECOUPAGE PAR RAPPORT A UN CONTOUR CONVEXE

4.4.3.7

- lntnodutin
mais beaucoup de cas particuliers rendent dlicate (cas des segments colinaires~avec l'algorithme de PAVLIDIS qui rsoud sa mise les plus fa-

La version de SUTHESLAND peut tre gnralise aux contours cmvexss


(voir <LUCAS et a1.79>) au point particulirement bords,...).

Nous redonnons ci-dessous cilement ces difficults. eojiZo yZ:=ixti.dy+dxyl/ds PIFA%~ joa dx,dy ; ~Z:=~IG,,; et dwy; 4.4.3.2 par - kegotihme

de PAVLIDIS

l<PAVLIDIS

82,) la reprsentation d'un point P

PAVLIDIS utilise ses coordonnes P x Y [l w

pour son algorithme, homognes :

r2:=(ymwdw-dryl/dy inme a joun

;y2 :=ymax; dr,dy et &y;

&u3 -

. 20 &i & 3 yZ:=hm.x.dy+dxy)fdx ; xZ:=mr; *1>um; H yl:=Iumx.dy+dxylldx mtie a jouh

Pour rester cohrent avec les prendrons w=l o (~,y) reprsente le plan xoy. Le problme ; XI:=~X; dw,dy et dxy; :

autres aleorithmes dvelor>os ici. les coordknes absolues k p0int.P

nous dans

s, les sorawts d'un polygone convexe. Et soit Soient s,,yt,...: segment de.drol e, defioi par ses extrmits Pl et P2. Le problme calculer la partie du segment situe a l'intrieur du polygone. L'ide -. Soient Pj(j=1,2). (xi,yi) les les coordonnes si tels du sommet si que : et (xj.yj) celle

un est de

du point

lo-Ai

u4.u1<0 -&%b CO~4 et ul Aont de A&U -j:=jtl;


3 4xl:=[ym&.dx-dxy)/dy metttre joun dx,dy

E"al"on8

n valeurs

di~&.w&
; yl:=ymk; et dsy;

&

Si=det(si,pl,p2) =xi(yl-y2)+Yi(x2-x1)+w.y2-yl.x2) i=l,Z,...n. A partir lde ce calcul, nous dgageons les cas suivants : (1)

Les valeurs S. sont de mme signe et diffrentes est situ du %&ne ct du segment et le segment go"*. droite passe par S. est nulle 'un sannet et les autres sont mais reste extrieure

de zro : le polygone est extrieur au polyde mme signe au polygone. : la

2- Une des valeurs 3- Deux d'entre

elles sont nulles et les autres droite passe par l'un des cts du polygone tres cts (convexit ).

sont de &me signes : la convexe 8.~18 couper d'au-

144 4- Une OU deux dentre frents : la droite snmsets . elles emf nulles coupe le polygone et les autres ont des signes difen passant par un ou deux de ses Les tableaux B(0..2,0..2) et C(0..2,0..2) conriennenr predres et secondes coordonnes des paires de s-ets (sk>sk+,). respectivement les (s.,s. JC' ), et 1

5- Aucune des valeurs Si est nulle mais elles possdent des signes diffrents : nous renconfrons alors deux changements de signe en parcourant le primtre du polygone (comne en 4). s.,s. et sk,sk+, les paires de somoefs o ce changement de 2 I+l signe intervient, et Ll et L2 les segments respectifs quils dfinissent (S. peut tre nulle pour lun des sommets de lune ou des deux paires (cas 4)?. Connaissant maintenant les deux artes du polygone qui coupe la droite passant par le segment (pl,p2), il faut dterminer le position relative des points pl et p2 par rapport aux deux segments Ll et L2 partir du signe des quatre quantits : ul = det(pl,s.,s. = xl (position ) 3 I+l (Yj-Yj+,)+yl(xj+,-xj)+(xjYj+,-Yjxj+,) du point pl par rapport Ll> (2-b) ,+,-xj)+(XjYj+,-YjXj+,) p2 par rappart Ll) (2-c) L2) (2-d) (2-a) Soient

. Le tableau v(O..4) contient les signes des valeurs ui, i=l 4, reprsentant les signes des extremirs du segment par rapport aux 2 aretes caupes par la droite support. (qn)n=,,Z sont les caordonnes du segment afficher.

,~X!i).dytYlil.dx+dxy

; -

equation

II) &

li<=n+l

k#ZI de

u2 = d=t(p2,sj,sj+,) = x2 (Yj-Yj+,)+y2(X. (position du point u3 = det(pl,sk,sk+,)

= xl (Yk-Yk+,)+y1(4+,-~)+(~Yk+,-Yk~+,) (position du point pl par rapport

Si:=Xlii.dytYlil.dx+dry; v:=n.igwlS~l; ai U#V et ut0 -ai?o.aCo changemont de aigrie 40 lK=k+l: Blk,ll;=Xli-Il ; Blk,Zl:=Yii-11; Clk,ll:~=Xlil ; Cik,ZI:=Yfil; Gwn ai lu=0 +J v=Ol ateohh ,&I dcoupage - 2. &g--u: =v;

u4 = d=f(p2,sk,sk+,) = x2 (Y k -Y k+,)+y2(Xk+,-Xk)+(XkYk+,-YkXk+l) (position du point p2 par rapport L2).

Si nous parcourons le cantour dans le cens des aiguillesdune mantre, le signe de U sera ngatif quand un point se situera lintrieur du polygone. Cette expression sera nulle si ce point appartient au cOntOur. Soit L le segment (pI,pZ) et (ql,q2) les extrmits du segment a afficher rsultant du dcoupage de L par le polygone. Lalgorithme qui suit, calcule ?,,et q2 en tenant compte des diffrentes configurations possibles des extremrts p, et p2 du segment L. Lalgorithme : NOUS supposons . Les tableaux du palygane. . (xl,yl)

cztoti ul:=det uZ:=det u3:=det u4:=de*

fpl,Bif,*l, lpZ,Blt,*), (p1,812,), ipZ,ElZ,l,

CtI.*II clt,*)l c12,)l ClZ,*ll

; 0 ; ; ;

Q&ti

2 40

utiliser

les structures

de donnes suivantes les coordonnes pl et p2.

: des N sommets

X(l..N)

ef Y(1. .N) contiennent sont les coordonnes

ef (x,y2)

des points

146

Algorilhma

de dcoupage

147

Traitement droite mits

des

singularits

4.4.4 t / :, ;,' 4.4.4.1

- DECOUPAGE PAR RAPPORT A UN CONTOUR f&ELCONQUE - ?tiodu&n

Nous rencontrons une singularit si la droite support du segment de passe par l'un des sormets du polygone ou bien si l'une des extrdu segment appartient l'une des artes du polygone.

- Parcours du contour : il y a une singularit s'il existe i tel qk~e le signe (Si) est nul. Dans le cas o deux sommets conscutifs ont un signe nul (~=V=O) nous considrons alors le segment L invisible. Sinon, si un sosmet si est de signe nul, nous prenons en compte uniquement l'arte (signe(Si_,)#signe(Si) et signe (Si-,)#O). (Si-, ,Si) - Calcul de la partie visible une ou deux valeurs Ui est nulle. Si deux valeurs tiennent au contour ta. du segment L : il y a une singularit

Nous ne pouvons . vas anraliser l'alaoritbme de SUTHERLAND pour le d_ coupage d'un segment de droite par un polygone non convexe, parce que ce dernier peut chevaucher, de part et d'autre, les droites supports de ses artes. i Nous avons cherch gnraliser l'algorithme de PAVLIDIS pour des polygones non convexes (voir -GRON 83a>). La gnralisation est possible mais complexe. En effet, nous avons montr que la mise en oeuvre du traitement des singularits est dlicate et onreuse car pour une arte (si.si+,), ds que le signe de l'un des somwts est ml (c'est--dire que et compte des deux vamets prcdents s. s.=o 0" si+, =O) il faut tenir sfl-,,ou et des deux soumets suivants si+te$ si+3 du sommet prcdent si-, ou smplement du smmet suivant si+*. Pour pallier ces difficults, rithme de hachurage oblique sans tO". 4.4.4.2 - Ldgodhme de ?bu.&.i nous avons utilis l'ide de notre algorotation par la mthode du suivi de con-

si _,

U. sont nulles alors d: polygone et L est

q,=p, et q2=p2 car p, et p2 apparcontenu par ce polygone (convexiseule des extrmits si le signe de l'auappartient l'extrce signe est ngatif, est ngatif, qZ=Lp'fiL

Si une seule des valeurs U. est nulle, alors une (p) du segment L appartient aulcmfour. Dans ce cas, tre extrmit (p') par rapport l'arte Lp A laquelle mit p. est positive, alors L est invisible. Sinon si alors ql=p et qZ=p' si signe de p par rapport Lp' sinon (voir figure 4.5.).

de contmt le dcoupage 4.6.). d'un segment de droite

Le problme par un polygone (entre parenthses: signe du point p' par rapport Lp'; sinon signe du point p' par rapporr LP).

est donc, de calculer non-convexe (figure

Figure Critiques :

4.5.:

Cas particulier tour.

o une des extrmits

appartient

au con-

parties= Figure 4.6.: Dcoupage vexe. d'un segment de droite

segment

de droite non con-

par une fentre

Dans la recherche des artes qui coupent sonnets du contour n'est pas ncessairement section) et les singularits sont surmontes devons parcourir le contour dans le sens des tation a priori).

la droite, le parcours exhaustif (quand il y a simplement. Cependant, aiguilles d'une montre

des internous (orien-

Le principe
Nous considrons l'quation de la droite.passant par le segment. a et b les accroissements respectifs en x et en y du segment. Nous

Soient

ment est

raisonnons quivalent

dans le cas en inversant

o lai>-lbl. x et y.

Dans l'autre passant est par

cas,

le raisomede mmla valeur

Soit y= kx+yO l'quation de la droite donnes <xd,yda,, (xf,yf) o yO=yd ;.xd. Chaque sommet si YSi o ys;=yi+;, de coordonnes (xi,yi)

le segment par

caractris

figure

Chaque arte 4.7.).

(si,si+,)

est

oriente

de telle

sorts

que ysi>=ysi+,(voir

*gment

de droite

xd Figure rons 4.7.: Modlisation du polygone et du segment. avec le polygone, nous op-

@;

-FiM avec la lisse fait de

Pour dterminer lintersection de la faon suivante :

du segment

Lintersection du segment ((xd,yd), (xf ,yf)) tel que xd<xf te ordonne des segments dfinie par la liste des intersections la faon suivante :
znte~etin du segment et de la LAte des begments

- on calcule lensemble des intersections du polygone avec la droite support en ordonnant cette liste, suivant lordre croissant des abscisses: nous obtenons ainsi, une suite de segments deux deux, disjoints et intrieurs su polygone joignant un bord gauche un bord droit (figure 4.8.a.). - on calcule lensemble des parties du segment considr situes lintrieur du polygone, en faisant lintersection de ce segment avec la suite ordonne des segments dfinis,prcdemment (figure 4.8.b.).

0tbu.t ---Z'LINTER#uide

a) Liste

ordonne

des segments

b)

Intersection per avec la segments. avec

du segment dcouliste ordonne des

Figure

4.8.:

Intersection de la premire

du segment phase

le polygone. de la manire suivante :

Le traitement

se fait

Si le segment appartient en partie ou en totalitd artes du contour et si l'application le ncessite, calculer les parties du segment strictement situes gone en ralisant la diffrence des parties internes nes. Dans le cas particulier o le segment de droite versons le rle des abscisses et des ordonnes. Les avantages qu'offre cette mthode sont les

une ou plusieurs il sera "dcessaire de l'intrieur du polyet des artes concerest suivants "on vertical, : ncessairement d'inet artes "ous'in-

4.5. Dcoupage dun polygone par une fentre polygonale


4.5.1 - INT!UVUCTION Le problme est d'effectuer l'intersection entre un polygone et une fentre polygonale, de telle sorte que le rsultat du dcoupage soit un co*tour polygonal. (figure 4.9.) fentre polygonale polygone dkoup

. comparaison avec l'ensemble exhaustive dans le cas convexe ;

des artes

du contour

. traitement trs simple des singularits tersection avec la droite support les artes celles qui y finissent ; qui 4.4.5 a, "on . le contour se croisent. peut tre quelconque

en supprimant du calcul qui lui sont parallles disjoints, trous,

polygone Figure 4.9.:

rsultant Dcoupage d'un polygone par une fentre polygonale.

: C""~OUT~

- CONCLUSION Nous avons dans ce chapitre, envisag le dcoupage d'un en distinguant trois types de fentre : rectangulaire, convexe (voir tableau rcapitulatif : table 5). segment de convexe et

L'un des premiers algorithmes de dcoupage d'un polygone qui permit d'obtenir un co"tour, fut l'algorithme de dcoupage d'un polygone par une droite, propos par SUTHERLAND et HODGMAN GUTHERLAND-H0DGW.N 74>. Puis S&AMOS, <SIG.MOS 75, dveloppa un algorithme calculant l'intersection de deux polyganes,co"vexes, bas sur le dcoupage du plan en 8ecteurs angulaires. Pour rsoudre ce problme O'ROURKE <O'ROURKE 82>, proposa une nouvelle mthode qui recherche les points d'intersection entre les deux polygones eo progressant pas pas autour de chacun d'eux. La complexit de ces deux mthodes est linaire, e" fonction du "ombre d'artes des deux co"tours, alors que la solution triviale, qui consiste comparer tous les couples d'artes, possde une complexit proportionnelle au produit du "ombre d'artes de chacun des contcwrs. 4.5.2 - L'ALGORITHME VE SUTHERLAND ET HOPWiN

Dans le cas particulier de la fentre rectangulaire, la mthode de SUTHEKIAND (version dichotomique) est la mieux adaptde pour une ralisation cble. Sinon, pour une ralisation programme, l'algorithme de PA'ILIDIS, demeure le plus performant, suivant les caractristiques de la scne (pourcentage de segmeots verticaux et horizontaux). Dans le cadre plus gnral, d'une fentre convexe ou non convexe, "oere adaptation de la technique de suivi de contour, s'avre la plus avantageuse, que ce soit au niveau de la complexit, au niveau du traitement des singularits et de 80" adaptation au paralllisme. D'autre un segment part, "ous avons de droite : exhiber, deux facons de comparer un point et

l'un la valeur ; homognes des points. sode l'quation de

11 s'agit de dterminer la partie des deux demi-plans dfinis par

d'un polygone une droite.

quelconque,

situ

dans

- la premire la droite passant - l'autre

mthode consiste calculer par le segment en ce point utilise les

possibilit

coordonnes

La seconde mthode permet d'viter implicitement les divisions par zro, lorsque la droite esf verticale ou horizontale. Dans la premire lution, nous devons envisager explicitement ce cas particulier.

Le problme consiste donc tudier, pour u" polygone, une suite de sommets s 8 pour en dduire une nouvelle suite (ventuellement vide) tous situs dans le demi-plan conserver. Pour ce si:*..3sq "~~'&ets falre, nous utilisons l'algorithme de SUTHERLAND et HODGMAN qui consiste parcourir le polygone arte par arte'en examinant la position de l'extrmit finale de chaque arte par rapport la droite de dcoupage.

152

Algorirhmes Lalgarithme de traitement dun polygone peut scrire :

de ddcoupage

153

DECOUPE POLYGONE ; 06but (dkoupage dun poLygone pm Mppoti une dhaite ; &A 6onctiorts PREMIER SOMMET et SOMMET SUIVANT pemettent de pancoti -Ca AL& dtites du po1ygone ; cette stie a-t &.hm&& pah Lx va&u~~ 01 U&&LP; hg*que PREMIER; wh.t XP,YP,xS,YS.XJ,YJ,XI,YI; P:=PREMIER SOtMET ; PREt.ilER:=uh~i; XLmt ueP#O~ YTzd---x7:=X(P) . YP:=Y(P) ; Icoofidonn6es du mItmet) 6.i PREMIEa Zim debut TE~IER: -aux; XJ:=XP : YJ:=YP : IcotimLJtion du F2keR-h aometl

Or. nous voudrions et (s2,i4,i3). . Des singularit& - sosmst appartenant - colindarit (arte sont sur la droite).

obtenir peuvent

les

deux polygones : A la droite

dfinis

par

(s,,i2,i,)

survenir

A la droite appartenant

: deux

sommets

conscu-

tifs

Le problme des singularits est rsolu en dfinissant de fason prcilintersection entre un segment de droite (arte) et une droite. Soit P le demi-plan conserver et D la droite. Soient deux sormnets conscutifs Nous postulons que larte (si,si+,) coupe la droite si : si et si+,.
se

- ei - si

et si+, 6 P et

eont si+,

de part 8 D : il : il

et dautre

de D avec si au point

et .si+, si+, si.

8 D

bh0fl +LMET;,UPE
-CALCUL

As!!

wa

.~ happti PM

y a intersection y a intersection

a ti7 dudd

au point

INTERSECTIO~(XI,YI~; SORTIRlXI,YII;

XS:=XP ; Y.&6 ; (ert(rd 6.i S VISIBLE i!cm SORTIRIXS,YSl; %7i#hT SUIVAM; +$$m& Tim ,j& de Lahtie

,+wLe deaient

ertnnit

in&iatel

4.5.2.2

- ~nntiaon

au dcoupage

dun

potygone

une ,+MXhe le d-

Nous pouvons utiliser lalgorithme SUTHERLAND et HODGMAN, pour coupage dun polygone convexe ou non par ne fentre convexe.

de &me,tW.l

d6bu.t TLCUL INTERSECTIONiXI,YIl; SORTIRIXl,YIl; POLYGONE; comme

DECO!&

Dans un premier temps, nous dcoupons le polygone par la droite, passant par la premire arte de la fentre : nous con8ervon8 la liste des sommets du polygone rsultant, se trouvant dans le demi-plan contenant la fentre. puis A partir du polygone ou des polygones rsultats, nous excuton8 de la mme faon, le dcoupage avec la droite passant par la deuxime arte et ainsi de suite, jusqu la dernire arte de la fentre. Dans le cas de polygones non &wexes, pour viter la production de polygones non dgnrs, la mise au point de lalgorithme reste trs dlicate. De plus, la complexit dune telle gnralisation, demeure ea O(~*U) o m et n sont les nombres des artes des deux polygones. Dans le chapitre suivant, nous allons tudier deux algorithmes (SHAMOS et ORODRKE) de d-~ coupage de polygones convexes, dont la complexit est en O(m+n). 4.5.3 - INTERSECTION VE VEUX POLYGONES CONVEXES n et

Le dcoupage dun polygone par une droite nest pas considr une simple extension de lintersection de deux segments. Deux types de problmes sont rsoudre :

. Une attention vexes, qui peuvent

particulire doit tre porte aux polygones produire des polygones dgnrs tels que :

non con-

On considre deux polygones P et Q convexes ayant respectivement m artes. On veut calculer la liste des so1rmets du polygone P il Q. 4.5.3. liste des sorm~ets sl,i2,i3,i4,i, : I - La m&hode de SUAMOS sont orients dans un sens arbitraire (trigonamkri-

Les deux contours que par exemple).

154

155

l-

Le

principe au polygone Q, on le dcompose en m de SHAMOS pour la comparaison d'un point cion

A partir d'un point q.infrieur secteurs angulaires (voir mthode et d'un contour convexe). \

- si elles sont situes avec l'arte du secteur

de part et d'autre correspondant.

du contour,

il

y a intersec-

origine

des secteurs

rents

b) les :

deux

extrmits

4
pi+l 9

pi+l

pi appartiennent du polygone des secteurs Q, il n'y diff-

de l'arte

- si tersection Le comportement soit de cette dcomposition : soit de P : appartient chaque somnet de P. est en O(m). q est A l'intrieur de P, oeux cas peuvent se prsenter il est l'extrieur de P. q est l'intrieur quel secteur le point

elles se trouvent l'intrieur (proprit de la co-exit).

a pas d'in-

. Si le point i)

On cherche

- si tersection.
9

elles

sont

&
situes de iar k situes 4

ici

pi du contour, il y a une in-

et d'autre

Les contours tant orients et chaque secteur n'tant seule fois, cette recherche a un comportement en O(n+m). ii) contou. teur On examine Diffrents chaque arte (pi,pi+,) cas de figure peuvent de l'arte l'intriew / 'ii1 du polygone se prsenter

visit

qu'une - si section son elies 8ont

pi l'extrieur du contour, il y a aucune inter-

P en parcourant :

a) les deux extrmits : - si elles sont situes pas d'intersection.

(pi,pi+,)

appartiennent

au mme secde Q il n'y a

ou l'extrieur pi+l

\ pi

'i

R
pi

pi+l

156 deux intersections i 2- L'algorithme Soient deux polygones P et p orients dans dfinis par la liste ordonne de leurs s-efs respectivement. L'algorithme de SHAKOS peut avoir la forme le sens trigonomtrique, (sP~)~=, n et (Sqj)j=,, gnrale suivante :

157

ou une

infinit

d'intersections

(colindarit)
Pi+1

a) Nous dterminons la mthode des angles


@

si le point capables : angle (9 *pi,*

q est "Pi+,)

l'intrieur - 2n

du polygone

P par

c'est--dire pi de l'intersection, s'il existe, est obtenu P et Q. Le changement se fait lors du passade P : un angle traites a. On dcompose alors P e,, deux par la m&thode dveloppe

si

r i-l

iii) Le polygone rsultant en parcourant alternativement ge sur un point d'intersection. . Si le point q est l'extrieur P sous-tend qui seront

alors sinon

q 8 P q $ P 0

somne des angles

nulle

-0 qui les puis,

En q le conkur sous-suites d'artes ci-dessus. Exemple :

Pour ce faire, nous calculons d'abord les angles (q sq,, q spi) serviront ultrieurement dfinir les secteurs auxquels appartiennent de rfrence), smet8 (spi)i=j,. . ,* de P ((q sq,) tant la droite partir de ces angles, nous dterminons les angles (q sp;,q Spi+,).

Si q n'.appartient pas P, nous devons dfinir les deux sous-auites smmete. Nous obtenons le premier ou le dernier sonmuet de ces sous-suites quand les angles (q epi,q spi+,) changent de signe :

de

changement signe

gement P est dcompos en deux sous-suites (----) et (-).

de signe

159

der

b) Le traitement 1 permet les S-ts appartenmt Quelques cas particuliers

pour une sous-suite mq. doivent tre traites

de sommets : de lautre

de P de cal-

- sommets cmmuns aux deux contours - sommet dun contour appartenant une arte - artes des deux contours, colinaires. Ce sont des cas particuliers dintersections remrnent, suivant que nous restons A lextrieur que nous passons de lintrieur B lextrieur rieur du polygone Q. le entre problme une arte est donc de dfinir de P et le contour de lintersection ) une arte : les quand de Q. : de P. Pour chacune

contour c) On sort de Q : . point dintersection e PIIQ d) On entre dans Q : . pi+, e PnQ . point dintersection dune arte

que nous rsolvons diffou lintrieur ou bien ou de lextrieur lintequil y a intersection(s)

6 PIIQ. au

est-ce

Figure 4.10.: mme secteur

Cas o les de Q.

extrwits

de P appartiennent

) Dfinition Soit (sp.,sp. teron8~ respe~ti&Jnt - sectl - intl appartiennent mits

-Cas prticuliers ton .a contour1 ou contour2) ___ _--------Quatre cas de figure peuvent se prsente+ : des extrmits, nous nointl et contour2 (figure 4.ll.a) : contour1 et int2 (figure 4.11.b) (non(int1) et concourZf, ou (contour : contour1 et contour2 (figure 4.11.d).

1 et

non(int2))

(figure

4.ll.c)

et sect2,

secteurs

de Q associs logiques qui pas lintrieur indiquent si de Q ; les si extrmits les extr-

et int2, les variables ou nappartiennent

- contour1 et contour2, les variables logiques prcisant appartiennent ou nappartiennent pas au contour de Q.

Noua devons distinguer le cas o les extr&dts dune arte de P sont situkes dans le mme secteur angulaire de Q du cas o elles appartiennent deux secteurs distincts. i)
,-cas

Les extrmi&
gL?n&zA~ (on

de larte
a non kontour

appartiennent
1) et "0"

au mme secteur.
(contour 2)):

a) On sort de Q : SPi+, g PnQ

b) On entre dans Q : *pi e PnQ

Quatre
inrl

cas de figure
et

peuvent

se prsenter

ht2 .(figure 4.10.a) : non(int1) et nan(int2) (figure 4.10.b) intl et non(int2) (figure 4.1O.c) : non(intl) et (int2) (figure 4.lO.d). Sectpred de Q. correspond au dernier secteur dans lequel nous samnes sortis

c) On se considre lextrieur de Q (pas dintersection). Figure a) arte *pi+, de P intrieure 6 PnQ Q : b) arte de P extkieure Q 4.11.:

d) Colinarit6 : on se considre lextrieur de Q (pas dintersection). Cas particuliers o les extrmits dune arte de P appartiennent au mme secteur de Q.

ii)
l-

Les extrAait& cas gnra1

de larte (on a non

appartiennent

a deux

secteurs

diffrents P

(contourl)

ee non (contour)): suivent. convexe, les 3 cas suivants peuvent

NOUS pouvons rencontrer les cas de figure qui . intl et int2 : pas dintersection car Q est *pi+, 6 PnQ. . sil y a aumins se prsenter : une intersection , alors.

- intl et non(inr2) (figure 4.12.a) - on(int1) et int2 (figure 4.12.b) - non(int1) et nonfint2) (figures 4.12.c,d,e). Les sonmets de Q, situs lintrieur tersection conscutifs o lon entre puis
PnQ.

de P et entre deux points dino lon sort de Q, ap&rtienent

-I/-.
Q sq2 sql -3

il y a intersection (sq,,sq2), enrq3 il y a colinarit (sq2>s93)~

ensq2 avec larte avec larte h3,sq4) avec larte

7int

et

1int

"94

e) colinarit tien) .

: on se considre

B lextrieur dune arte

de Q (pas dineersecde P nappartiennent 2) suivants :

Figure

4.12.:

Cas o les extrmits pas au mise secteur. (on a contoUr les

2- cas particulier Nous pouvons


intl et

1 ou co*toI

rencontrer (figure et int2 (figure dintersection


et contour2

cas de figures
4.13.a)

contour2

: contour1 . un point
npn(inr1)

ou - contouri a) On sort de Q : l-une seule intersection (ePnQ) Z-deux intersections identiques: on passe par un sommet de Q
(em Q).

et non(int2) dintersectio et confour2),


et contour2

4.13.b) et (figure (figure

4.13.c)

4.13.d) et non(intZ))(figure 4.13.e)

b) On rentre dans Q : l-une seule itersectio(WJQq) Z-deux intersectirjns identique* : on passe par un sommet de Q (6P,,Q).

. pas de point - (on(it1)


ou - contour1

et ou (contour1 (figure 4.13.f).

c) extrmits extrieures on passe par un somset (pas dintersection)

Q : de Q.

d) extrmits extrieures Q : -Ire intersection : on entre dans Q, -2he intersection : on sort de Q (les deux points dintersection @ PnQ).

a) on sort

de Q: spi+,d

PnQ

b) On etre

dans

Q: SPie

PnQ

162

Synrhse

dmage

: Algorilhmes

l&nenraires

Algorilhmes

de dcoupage

163

Pour le calcul de l'intersection de deux artes des polygones Q et P, nous utiliserons l'algorithme d'intersection de deux segments de droite (mthode paramtrique dveloppe au chapitre 4.5.3.3.). soit d) Si en fin de traitement QSP. Cette alternative &i q<P
r3hm.A CO QEP&J pTlp:+

PnQ est vide, est rsolue par

soit P et Q sont disjoints. la squence suivante :

hnan --

CO P et Q 6ont Pn Q: =u.ide;

tijouzt6

c) Une seule intersection : . on entre au point d'intersection (8P nQ) . on 80rt en "pi+,: SP~+,B mq. Tint 2

d) Une seule

. on entre en spi: SPi8 mq


d'intersec-

intersection

on sort au pomt .* tics (6Pf?Q)

3- Conclusion Le principal O(n+m) linaire avantage de la mthode de SHAKOS est 88 complexit en fonction du oombre d'artes des contours. en

En outre, nous avons remarqu que le nombre de smmnets n du polygone P intervient dans une proportion environ quatre fois plus importante que le nombre de sonxnets m du polygone Q. Dans la pratique, si e-411 environ, P sera le polygone coupant et Q le polygone coup, sinon P deviendra le polygone coup. L'inconvnient demeure l'utilisation dee fonctions trigononAtriques inverses (arctg).

4.5.3.2 rent

- La mtihode

de O'ROliXKE par

et ai!. est fondamentalement diff-

e) Cm se considre B Yextrieur de Q (pas d'intersection)

f) On entre en *pi, cm sort Pi+, : 8Pi et api+, PflQ. o les extrmits d'une pas au mme secteur. d'une PfiQ arte de P

en

L'algorithme de celui
1)

prsent6 de SHAMOS.

O'ROURKE et al.

Le principe les notations suivantes :

Nous Utilisons

Figure

4.13.:

Cas particuliers n'appartiennent

Cette dfinition contour du polygone artes de P.

de l'intersection Q, permet d'obtenir

arte du polygone P avec en parcourant uniquement

le les

Les sonmets de Q appartenant PflQ sont situs entre deux points d'intersection conscutifs tels qu'au premier point nous sortons de Q et au second nous rentrons dans Q en parcourant le contoUr de P :

- p et q seront les sommets des polygones P et Q p est le sammet courant, p- sera le samuet prcdent, et p, le , _ - p reprsente le segment de droite <p-,p, ; - hp(fi)-(x : fi n(rp-)>=O) reprsente le demi-plan qui contient le polygone P dfini par la droite qui passe par p (o A est le produit rectari&. On definit un prdicat pointer (p,q)=vrai& pointer p B hp(@ P"e hp($ C'est--dire que pointer vers la droite passant (fi,*) par est 6. (fi,$ cormre suit 0 iAi> < 0 0 {Afi vrai si >-0 le vecteu fi se dirige ou :

pointe

164

Synrhse

dmage

: Algorithmes

dlmenroir~

Partant de deux artes p et 4 choisies arbitrairement, on progresse sur l'un ou l'autre des cmtours, de telle sorte que l'une des deux 11 pointe" vers l'autre. Ces rgles sont rsumes dans la table 6. poinrer(fi,CJ pointer (4,fi) evancer partir te extrieure de l'ar4pointer($,$ q suivant

l------------L
poiater(+,fi)

---------------p suivant

--------A------------

-----evemer partir de l'arte exrrieure

Table

6 : Rgles

de progression

autour

des contours. d'intersection) peuvent tre ce qui permet

A chaque et un sommet trouves en l'algorithme

pas, deux artes 6 et 5 sont compares (test de PnQ est obtenu. Toutes les intersections parcourant au plus, deux fois chaque contour, d'avoir un comportement en Oh+m).

@;
3) Singularits Trois types particuliers de P appartient d'intersections B une arte peuvent de Q : se prsenter :

2) L'algorithme L'algorithme consiste principalement utiliser les rgles de progression, dans une structure rptitive, qui permettent d'avancer d'une arte sur l'un ou l'autre des contours chaque pas. De plus, chaque pas, deux artes mnt compares (test d'intersection) et un somet est obtenu. Quand le boucle est termine, fou8 les somets du polygone PfiQ ont t calculs except lorsque PnQ = 0. Sans prendre gnrale suivante en compte : les cas particuliers, l'algorithme a la forme

a) Un samec

b) P et Q ont deux

l-T--lQ
sonmoets communs : /---p de P chevauche une arte de Q (colinarit) : sont suI7nmteS grce notre dfinition de l'inter-

/---

C)

Une arte

Ces singularits section qui suit.

166

167

Intersection de 6 et $ : Soient p-(spi.spi+,), +(sqj,sqj+,). , ou sq. ou *q.+, prenons-nous en compte cette - si pfl+sp. ou sp. intersection ? Si oui:+kus obtkmns dk points dintersection identiques (voir singularit (a)). ou quatre points dintersection identiques (voir singularit (b)). Pour obtenir un unique point dintersection, dans ce cse particulier, il y surs intersection, pniquement si pn: est gal B Pi+, ou sqj+,. - si i, et 6 sont colinaires 4) Conclusion : . Ls complexit de lalgorithme B (n+m), su nombre dintersections alors fini - 0
(singularit

x -xA + (XI%-XA) t, Y = YA + (YB-YA) t, de nime pour (CD), on a : x = xc + @D-XC) t2 Y = YC + (YB-YC) t2 La valeur re :


t,>1

du paramtre

indique

la position

du point

(X,Y)

SUT la droi-

(cl). B

de OWUPJG? et al., est proportionnelle et su nombre de sosrsets de PnQ.


o<t,<1

t,-1

Le nombre de pss de la structure itrative du choix arbitraire des deux premires artes. Dans les cas particuliers nombre de pas et de calculs maximal (c set--dire 2Wn)

est alatoire

CBT il

dpend (Aa /

t,=o f,<O le point dintersection s pour coor-

o E$Q, QCp ou P et Q sont disjoints, le dintersection de deux segments de droite est 1.

Si les deux droites se coupent, donnes (X,Y) telles que


4.5.3.3

- In~eh~ection

de dwx

begmentd de d.hAe

Lopration gomtrique lmentaire cwm~une aux algorithmes de dkoupsge dvelopps plus haut est le calcul de lintersection de deux segments de droite. Plusieurs algorithmes existent pour identifier mtriques de deux segments de droite : mthode mthode mthode mthode analytique vectorielle min-max paramtrique. les configurations geo-

X = XA ; (XB-XA) Y = YA + (YB-YA) Ce systme

t, - XC + (XD-XC) t2 t, = YC + (~-UC) t2 a pour solution :

t = (XC-XA) (YC-YD)-(XC-XD)(YC-YA) 1 (xB-XA)(YC-YD)-(XC-W)(YB-YA) (XE+XA)(YC-YA)-(XC-XA)(YB-YA) (XB-XA) (UC-YD)-(xc-XD) (YB-YA)

t2-

Lun dentre eux s retenu notre attention, il sagit de la mthode paramtrique. Dune part, ALLIAUt@. a montr dans <ALLIAUt%?. 81> que cette technique ssvbre lune des plus avantageuse pour dterminer si.deux segmente se coupent et pour dtecter les singularits (colinarit, paralllisme,...). D autre part, si les segments se coupent, le calcul du point dintersection est in&diat. La Mthode pariortrique Le principe : support (AB) et

Les valeurs des par&cres t, et t nous donnent tous les renseignements sur les positions relatives des 3 eux segments de droite AB et CD. Lalgorithme : dtre cest--dire

Lalgorithme qui suit traite lensemble des cas susceptibles rencontrs (on supposera quaucun des segments nest dgndr6, rduit & un point).

Soient deux segments de droite AB et CD. Les droites (CD) sont dfinies par leurs quations parsx&triques :
Pour WI, on a :

4.5.4.1 est

- Une appmche

ptictitae

YCD:=YC-Yu; u: =x%4. KV-Xc#.

YBA;

Une des possibilits pour acclrer la recherche des intersections, de subdiviser les polygones en des formes plus simples. Soient RI et R2 les deux rectangles circonscrits aux deux polygones respectifs Pl et ~2 ; si RI et R2 sont disjoints alors PI et P2 le sont galement. Si lun des rect&gles est co,,te,,u dans lautre, par exemple RZCRl, nous pouons alors considrer lintersection de R2 et Pl, puis lintersection du dernier polygone (RZnPl) avec P2. Si Rln R2 est non vide, nous pouvons considrer lintersection de chaque polygone Pl et P2 avec RlZ=RlnRZ, ce qui dfinit deux nouveaux polygones, auxquels nous.appliquons tout le mme processus employ pour Pl et P2 de manire rcursive. (vair figure 4.14.). R2cRl RI & I Rl

TI:=(XCA.YCV-XCD.YCAI/D; TZ:=(XBA.YCA-YSA.XCA)/D;
bi (Tl<O ou Tl>lJ ou lTZ<O ou TU71 -M%M pab dtiehbetin; ;inon CO intmetin au poti (X,Y) K=XA+TI.XEA; Y:=YA+Tl.YEA;

4.5.3.4

- Conceusbn de lalgorithme de OROURKE est beaucoup plus simple ncessite une structure de donnes minimale qui consonnnets des deux polygones et de leur intersection. mthode de OROURKE et al., nous nutilisons pas de

(1)

La mise en oeuvre que celle de SHAMOS et siste en la liste des Dautre part, dans la fonction trigonomdtrique. Cependant, dnombr 4.5.4 dans dans

RI2 = Rl nR2 PlnR12 = Pl P2 nR12 = P2 Pi nR2 R1 ,, P2


= R,

(2) RZcRl

Pl P2 (b)

R2

tion de deux segments

la mthode de SHAKOS, le nombre de calculs dintersecde droite, sera toujours infrieur ou gal celui la mthode de OROURKR. l VE VEUX POLYGONES NON CONYEXES

Figure

4.14.:

Intersection de deux sions successives.

polygones

non convexes

par

subdivi-

- INTERSECTION

Contrairement au calcul de lintersection de deux polygones convexes, dont le comportement est proportionnel la somme du nombre dartes, le traitement des contours non convexes a une complexit fonction du produit du nombre dartes. Ce comportement est optimal car le nombre de points dintersection peut tre, dans ce cas, gal au produit du nombre dartes.

Cependant, la rduction de la complexit nest possible que si nous / liminons chaque subdivision de lun ou des deux polygones, un maximum dartes. Ceci suppose galement que le nombre dartes des polygones soit suffisamment important (>>4). Cette approche ne rsaud pas le problme de lintersection des polygones non convexes car.les contours obtenus par subdivisions successives, ne sont pas ncessairement canvexes. A cet effet, quels sont les algorithmes de dcoupage que lon peut employer pour les diffrentes oprations dintersection ? - Pour lintersection nous pouvons appliquer H0DCW.N (voir chapitre dun rectangle avec un polygone convexe ou non, la gnralisation de lalgorithme de SULHERLAND ET 4.5.2.) qui ralisera ici le dcoupage dun polygone

170 par U*S fentre rectangulaire. des deux polygones configurations : sont convexes de O'ROURKE. finaux, nous soit pouvons l'algorithme la gnralisation utiliser une DGdiffde L'algorithme peut avoir la forme gnrale qui suit.

- Pour l'intersection rencier trois grandes

a- Les deux polygones SHAMOS, soit l'algorithme

: on utilise : on utilise

b- L'un des deux polygones est convexe de la mthode de SUTHERLAND et HOKMAN. thode c- Les deux polygones sont gnrale comme l'algorithme

non convexes : nous devons de ATHERTON et WEILER.

Avanf d'envisager l'tude d'une mthode gnrale ralisant l'intersecnous devons pouvoir dterminer si un tion de deux polygones quelconques, la solution qui suit. polygone est convexe 0" non. Nous proposons Soit un polygone P dfini par la suite ordonne de ses N sommets (si)i=l N. Ayant choisi un sens de parcours arbitrairement, nous pouvons savoir de quel ct ( gauche ou droite) se situe chaque sommet si par rapport l'arte (si-2,si-,) qui le prcde : 4.5.4.2 ,Hsi / fi.-: 1-Z s. esr a gauche de'(si-2>si_,) 1-l S. est droite de'(si-2.si-,) ,' W si-2 si-, -. 'Xi - L'o.lgo&hne de ATHERTON et WEZLER Le principal avantage de cet algorthme est de conserver en sortie, la mme structure des donnes fournies en entre, c'est--dire contour ou facette polygonale oriente, permettant dans un algorithme d'limination de parties caches, de conserver la nation de faces qui pourront tre utilises ultrieurement plus aisment par des algorithmes de remplissage ou de hachurage par exemple. Les polygones traits peuvent tre quelconques, convexes, concs.ves et possder des trous (contours intrieurs). Mais sa mise en oeuvre demeure dlicate et sa complexit trs leve. Il s'avre fondamentalement diffrent des algorithmes ralisant le dcoupage de deux polygones convexes, comme ceux de SHAMOS ou de O'ROURKE. Cet algorithme de dcoupage trs complexe demeure le module de base d'un algorithme de visualisation raliste de scnes tridimensionnelles dvelopp par ATHERTON et WEILER (voir <ATHERTON-WEILER 77>,<WEILER 80)). Par consquent, nous ne le considrons pas conxx+ faisant partie de l'ensemble des traitements lmentaires.
4.5.5

Nous connaissons le demi-plan auquel appartient gne de l'quation de la droite passant par (si-2,si-,

8. en valuant le sisi, ou le 3 au point 3x3 for algoritti

) qui est le dterminant de la matrice signe de det (Si,Si-Z,S,-1 de par les coordonnes homognes des points si,si-2,si-, (voir de PAVLIDIS, chapitre 4.4.3.2.).

Sachant que dans un polygone convexe, tous les sommets sont situs du mme ct par rapport l'arte prcdente, nous dtectons si un contour est non convexe en le parcourant ds que l'un des sommets change de ct (c'est--dire ce signe (voir figure 4.15.). "

- CUNCLUSZUN

L'tude des diffrentes solutions qui permettent de raliser l'intersection de deux polygones, appele ici dcoupage d'un polygone par une fentre polygonale, a permis de dgager deux types d'algorithmes, fondamentalement diffrents de par la complexit de leur mise en oeuvre et de leur, vitesse d'excution. Nous distinguons les deux classes suivantes : (voir 1- Les algorithmes ralisant l'intersection de deux polygones convexes (SHAKOS, O'ROURKE) dont la complexit est en O(m+n) o met n sont les nombres d'artes respectifs des deux conrours ;

co""exs Figure

1
4.15.:

Recherche

de la convexit

d'un

polygone.

vexes Tm.

2- Les algorithmes ralisant l'intersectiowde (SUTRERLAND-HOnCNAN, ATHERTON-NEILER) dont

deux polygones "Y la complexit est en

Il conviendra donc d'utiliser les informations intrinsques l'application traite et aux figures gomtriques manipules afin de choisir 1'algorithme qui convient : - convexit - ncessit donnes que nous gonale oriente ou non convexit des contours, ou non de conserver, aprs le dcoupage, avions en entre ; c'est--dire contour ou no*. la structure ou facette de poly-

Par exemple, dans l'algorithme d'limination des parties caches d'une scne tridimensionnelle d'ATHERTON et KEILER, l'utilisation de leur mthode gnrale de dcoupage de deux polygones non convexes est indispensable, puisque toute la logique et l'efficacit de leur algorithme repose sur celle-ci. Cependant, dans la simple optique du remplissage ou du hachurage de la partie visible d'un polygone dans une fentre, nous verrons dans les chapitres suivants que l'utilisation de la mthode gnrale de dcoupage peut tre vite.

4.6. Dcoupage dune tache par une fentre polygonale


4.6.1 u ff z 5 2 2 g a 5 ;r & Ikl g .$ Q .. e, - INTROIUCTIUN est d'afficher la partie hachure dans une fentre envisager deux solutions visible d'une polygonale. : ou hachurage du tache, soit remplie Le problme (colorie) soit Nous pouvons 1. Dcoupage polygone rsultant points cite). 3.6.2

du contour de la tache, puis remplissage (dcoupage de la tache explicite) ;

2. Remplissage ou hachurage de toute ou les lignes de hachurage visibles

la tache en n'affectant que les (dcoupage de la tache impli-

- DECOUPAGE EXPLICITE

Dan8 un premier temps, nous dcoupons le contour polygonal de la tache, ar l'un des algorithmes de dcoupage tudi au paragraphe prcdent. p Puis, une fois le contour intrieur la fentre obtenu, nous pouvons dans un deuxime temps, appliquer un algorithme de remplissage ou de hachurage de tache sur le polygone rsultant. La complexit des complexits produit. du dcoupage explicite d'une tache, est gale la somme du dcoupage par la fentre et du remplissage du contour

2
s w

175 IMPLICITE peuvent tre utilises :

4.6.3

- DECOUPAGE

4.7. Dcoupage dune tache par une autre


4.?.1 INTRODUCTION

Deux mthodes

1. La premire solution consiste remplir ou hachurer la tache initiale, en calculant pour chaque point, ou pour chaque ligne de hachurage, leur appartenance la fentre, l'aide d'un algorithme de comparaison point-contour, ou respectivement du dcoupage d'un segment par un polygone.

Par opposition sons le dkoupage cule non seulement diffrences (P-Q)

au dcoupage d'une tache par une fentre, nous dfinisd'une tache P par une tache Q comme l'opration qui call'intersection (P6TQ) mais encore l'union (PU@ et les et (Q-P) (voir figure 4.15.).

2. La seconde solution consiste fentre simultan6ment en n'affichant droite qui sont situs l'intrieur

remplir ou hachurer la tache et la que les points ou les segments de des deux contours.

Si la fentre est rectangulaire, pour le remplissage et le hachurage vertical ou horizontal, les deux solutions sont quivalentes. Sinon pour le remplissage (respectivement pour le hachura&, plus la surface ou le nombre de lignes de balayage (respectivement plus les lignes de hachurage) de la tache dcoupe sont importants, plus l'utilisation de la seconde solution devient avantageuse. L'inconvnient rraiter la partie importante. majeur invisible du dcoupage implicite est le temps pass de la tache dans la mesure o celle-ci est

p-9 /
Figure 4.15.: Oprations de dcoupage entre deux taches P et Q.

4.6.4

- CONCLUSION Si P et Q sont convexes, nous pouvons raliser de manire explicite uniquement les oprations d'intersection et d'union sur ces deux taches en utilisant l'algorithme de O'ROURKiT. D'autre part, les algorithmes de SUTHERLAND-HODGMAN ou de ATHERTON-WEILER, peuvent tre mis en oeuvre pour produire tous les polygones rsultant (intrieurs et extrieurs) du dcoupage de deux polygones non convexes. Mais ces deux mthodes ne sont plus du type des techniques rencontres dans le cas convexe et leurs cbmplexits demerent en O(m*n). Nous proposons dans ce qui suit, de raliser les oprations d'union, d'intersection et de soustraction de deux polygones P et Q partir de ces mmes oprations effectues sur les deux taches qu'ils dfinissent : c'est--dire partir du dcoupage implicite des deux taches. Deux approches peuvent tre envisages : soit nous dfinissons la tache par l'ensemble des points qui la constituent (nous manipulons alors des matrices de points), soit nous regardons la tache comme un ensemble de segments horizontaux ou intervalles qui sont les parties des lignes de balayage intrieures la tache (nous manipulons dans ce cas, une structure d'artes et d'intervalles).

Dans le cas de taches et de fentres convexes, la mthode explicite est la plus avantageuse. Mais dans le cas non convexe, l'utilisation du dcoupage implicite devient plus favorable car la complexit du dcoupage des contours est en O(n*m). NOUS pouvons cependant formuler deux remarques :

. Si nous traitons le dcoupage d'un ensemble de taches par une fentre, la complexit de la mthode implicite peut tre considrablement a& liore en effectuant le remplissage ou le hachurage de la fentre une fais pour toutes. Seul l'espace mmoire ncessaire augmente dans ce cas. . La conservation du polygone rsultant dans la mthode explicite est par contre trs intressante, si nous voulons modifier la couleur ou le hachurage de la partie visible de la tache. Mais dans le chapitre suivant, nous verrons que les contours rsultant du dcoupage peuvent tre extraits et mmoriss lors du remplissage implicite de la partie visible d'une tache dans une fentre.

176 4.i.Z - TACHE DEFINIE Soient deux taches PAR UN ENSEMBLE DE POINTS A et B.

Aprs avoir rempli les taches A et B et mmoris les ensembles des points qui les constituent dans des mmoires d'images (matrices de pointe) respectives, nous pouvoos trs facilement extraire les sous-ensembles dsirs et les mmoriser si ncessaire. Les oprations lmentaires sont trs simples et limites : pour chaque point, nous effectuons au plus deux tests et deux accs tableau. Gis en contre-partie, la mmoire utile demeure trop importante et il faut parcourir toute la matrice image. Nous pouvons envisager une solution qu'une seule mmoire de points. Celle-ci chaque tache, l'ensemble des points qui suite la liste des intervalles de points ges). (voir figure 4.16.) Xl x8 intermdiaire o nous permet d'y la compose, puis ligne par ligne nous n'utilisons inscrire pour d'y extraire en(codage par pla-

A er B, les taches correspondant ht-A et ire-B, deux variables mes l'intrieur des taches A et B. Nous obtenons l'algorithme qui suit.
vement, et

Soient

LISTE 1 et LISTE 2 respecrilogiques indiquant si nous som-

Union Idonnes LISTE 1, LISTE 2 ; hta&at LISTE 31 Dbut ---FuConldonn&z LISTE 1, LISTE 2 ; hsuI,%& LISTE 41 CO eu tunion de LISTE 4 jg UitrA:= aux; iY&B:= aux; chen Lk 3; ZLYAELEMENT:=V& ; CO ,LISTE 4 non vide & Tant u ILYAfSEhlEm izrfz2ab.ttenih Oiment LlSTE 4; & c.ouhmttLISTE 41 E A dot2 Uzt-A: = 1 &-A; Tiziz iti-8:=l*nt-L3; LA -

~6 g Remplissage point par point Figure 4.16.: Extraction ligne Constitution des intervalles par ligne liste Liste des intervalles de points de points. Intersection(') Un point &l, ech(he ti?ehk

atoht ZZZI

ti-A: =1 .&&-A; id-~:=lint-B; LISTE 3;

CO-[LISTE 41 dans joua ILYAELEMEh(T;

de la

des intervalles

Les oprations ensemblistes sur les deux taches s'effectuent en camparanf les deux listes d'intervalles, ligne par ligne. Chaque sous-ensemble dsir sera aussi dfini par une liste d'intervalles. Pour l'union des taches', nous calculerons pour chaque ligne, l'union des intervalles, pour l'intersection, l'intersection des intervalles et pour la diffrence, la diffrence des intervalles. Si les oprations ralises sont plus complexes, que celles effectues sur les matrices de points, le gain de mmoire utile est considrable. NOUS allons dvelopper maintenant les diffrents algorithmes d'union, d'intersection et de diffrence de deux listes d'intenralles de points LISTE 1 et LISTE 2. Le rsultat sera galement une liste d'intervalles de points appele LISTE 3. Union : LISTE 3 = LISTE 1 U LISTE 2.

: LISTE p BAIIB

3 = LISlx si

10

LISTE

p SA et p BB. que prcdemment, on obtient alors

En utilisant les mmes notations l'algorithme suivant :

Nous ralisons dans un premier temps, la fusion des deux listes ordonnes LISTE 1 et LISTE 2. Dans la nouvelle liste, chaque lment est marqu par le nom de la liste initiale correspondante. Sachant qu'un point appartient l'union des taches, s'il appartient l'une ou l'autre. nous pouvons alors extraire la liste kxrespondante des intervalles.

(1) Nous trouvons un exemple de la mise en oeuvre de cet algorithme dans le programrre Texte-polygone (Ecriture d'un texte dans une tache polygonale quelconque) au Chapitre 3.,3.3.5., pages 105-106.

Algorilhmes U.C hence A-BIdonne LISTE 1, LISTE

de dcoupage 2 ; X@&L&%~ LISTE 31

179

-udanl&nne CL e-e LISTE 1, LISTE 2 ; h6~uUat t..i.nQmetin de LISTE 4 &J LISTE 41;

3; ILYAELEMEM:=vti ; CJJ LISTE 4 non vG3.e & Tant que ILYAmEm dbui I-l ULt A ~1 int Bl - ILYAELEMENT obtenin &nent LISTE 4; me.tthe jouh &-A et inCE; mdtte jouh ILYAELEMEM; -w

&.&

--7LL6tinldonn~e LISTE 1, LISTE 2 ; tresua*at LISTE 41; CO ewtnaihe A-8 de LISTE 4 & mi-: =&I~X; inA-B:=@ux; cheh LISTE 3: ILYAELEMEM: =;~CG ; CO LISTE 4 non v*de 40 Tant ue ILYAmENTaLzl+ (1 ti A oi iti BJ g ZLYAELEMEM 6aine ob.tenin &%neti LISTE 4; menthe jout inLA et d-B; menthe jowr ILYAELEMENT; %n.t-A -* et 1 ti-BI a.2 ~0~lant (LISTE 41 dans LISTE ob.teti t%nent LISTE 4;. mettrre jotitiAet*ntB; CO on a7lti.A et 1 ti;Bl & .E&ihe cowrati I7XTE 41 dans LISTE jowr A-B. 2-LISTE 1 (c'est--dire B-A) ILYAELEMEM; 3;

tdke wuhanf 1 LISTE 4 1 dan.2 LISTE 3; ohteti timent LISTE 4;. mettze jouh WA et oa2-B; CO on alltiA et ULtB) & htie CO~~I LmE 41 dand LISTE 3.; jowr ZLVAELEMENT;

3;

!i%k Fin %&hutin

&L metttle &in ~@unce 2- LISTE=LISTE

MeXaW d ut intA et inta + di couhant (LISTE 41 G A; -C&M i-A:=l.&&A; d*nan &B:=l*ntB;

Un point pGB-A si p$A et p6B. On obtient l'algorithme "diffrence B-A qui est identique "Diffrence A-B dans lequel on remplace la condition (lint-A ou ira-B) par (int_A -1 inr-B) et la condition (int-A g l int-B) par77 int.A 3 int B).

l- LISTE 3=LISTE 1-LISTE L(='est--dire Un point p e A-B si pSA et @SS On obtient lalgorithme qui suit.

A-B)

4.7.3 4.f.3.1

- TACfiE DEFINIE - lntmduction

PAR UN ENSEMBLE DINTERVALLES

Au lieu de construire la liste des intervalles en passant par le remplissage point point de la tache dans une matrice de points, nous pouvons directement l'obtenir par un algorithme de SUIVI DE CONTOUR (voir chapitre 3.3.3.2). Les diffrents traitements oprs sur les taches sont identiques ceux exposs ci-dessus. Chaque nouvelle tache rsultant de l'union, de l'intersection cm de la diffrence des deux premires, est caractrise par la liste des intervalles qui la composent, ligne par ligne. A partir de cette structure de donnes, les oprations corne le remplissage de tache ou la translation sont triviales. Mais des transformations gomtrile changement d'chelle, ncessitent la desques telles que la rotation, cription du contour de la tache, sous forme d'une liste d'artes. Cette description permettra d'autre part, d'conomiser de la mmoire.

Nous prsentons un algorithme, qui permet de raliser de manire implicite (voir chapitre 4.7.3.2) les diverses oprations ensemblistes, entre deux taches polygonales, en calculant pour chacun des sous-ensembles obtenus, la liste des artes correspondantes. En outre, cet algorithme pemt d'excuter ~irmltanment le remplissage ou le hachurage horizontal du BO,,+ ensemble dsir.
4.f.3.2

- nous attribuons contexte ; (vair

l'arte q Table 8).

aX

sous-ensembles

correspondants

grce

- nous rencontrons une singularit si deux artes sont confondues (mmes points d'intersection avec les lignes de balayage et mmes pentes) (voir figure 4.18,). L'attribution de l'arte se fait l'aide de son conrsxfe par rapport aux deux polygones A et B (voir Table 9).
0

- kegotihme

de dcoupage

de

deux

taches

Soient A et B, deux taches polygonales, dfinies par des coordonnes des sommets de leurs contours respectifs, cran. Le problme : nous dsirons tablir tuent les contours des taches polygonales c'est--dire An%, AUB, .A-B et B-A.
1)

la liste ordonnde dans le systme

GCB

GA,,8

et B-A

les

listes obtenues

des artes, qui consti partir de A et B :

L'ide

En utilisant la technique du suivi de contour, nous dsirons calculer les artes q engendres par A et B en le 8 attribuant aux sous-ensembles correspondant, par un dcoupage iyplicite de A et B (voir figure 4.17).

qcA (ou B): 0 0 qcA (ou B):

q appartient q appartient
(A-(contour

au contour l'intrieur
A)) (ou

de A (ou de B)

; ; c'est--dire

de A (ou de B) (B-(contour B))).

Table

I i+l et et l A-% %-A

q8

AnB,

A-%, B-A

PigureC4.17.: 2) L'algorithme

Dcoupage :

implicite

par

suivi

de contour.

(b)

q e An%,

AU%

Corinne pour le remplissage les, nous constituons ligne de B qui la coupent. Le calcul suivante : des artes

par

simultan d'un ensemble de taches polygonaligne la liste ordonne des artes de A et par A et % se fait de la manire / Figure 4.18.: Cas particulier o qeA et qeB.

q engendres

- nous dtectons u,e arte q lorsqu'une arte change de contexte entre deux lignes de balayage conscutives. Ceci peut se produire lorsque deux artes se c0upent ou lorsque des artes se terminent ou coormencent. Pour ce faire, nous devons mmoriser les coordonnes du dernier changement de contexte de l'arte et son contexte sur la ligne prcdente, savoir si elle est l'inrrieu; ou l'extrieur de l'autre polygone correspondant;

182

4.8.
@A q bord gauche de A et bord _____-____-------*_________________ q bord droit de A -et de B B droit de B qM-lB* et B-A ___---_________-__ t qeAnB q'GA,-,B* qWJ?B* et AUB et B-A et A-B 1 4.8.1 tache

Gnralisation

auxtachesnon-polygonales no" polygonale sont fornS

Nous supposons que les contours de la tache de segments de droite et d'arcs de cercle - COMPARAISON PUZNT-CONTOUR NON WLYW)NAL Le problme est de savoir dfinie par un contour si un point non polygonal

de A -et de t q bord':auche .-___--__---____-_______________________-----------------------

q bord droit de A et bord gauche de B --------------------~-----------------------------------q bord gauche de A et bord droit de B qeB -----------------------__________________-_--___-------_-___ q bord droit de A 0 de B q bord 1 * cas dgnrs ga::he de A -et de B q AOB)

appartient l'intrieur et non convexe.

d'une

qSAAAB et AUB

(ne pas affecter

Parmi les algorithmes que nous avons recensspour point et d'un contour polygonal, seule la mthode du tre gnralise. Le principe est donc de rsoudre le pour le point tester, en utilisant le raisonnement che non polygonale par la mthode du suivi de contour
3.3.3.2.).

la comparaison d'un suivi de contour peut contrle de parit du remplissage de ta(voir chapitre

3)

Conclusion mthode prsente les avantages suivants :

Cette

.-Le dcoupage et le remplissage du ou des sous-ensembles dsirs peuvent etre excuts simultanment. Nous remplissons AnB, AUB, B-A ou A-B en ralisant respectivement l'union, l'intersection ou les diffrences des listes d'intervalles horizontaux intrieurs aux taches A et B sur chaque ligne de balayage. Ce rsultat demeure intressant pour la manipulation d'inages j . Les structures de donnes obtenues en sortie sont compatibles avec des traitements ultrieurs raliss par la mthode du suivi de contour (remplissage, hachurage horizontal , comparaison point-contour quelconque) parce que nous avons un ensemble de bords gauches et un ensemble de bords droits. Nous relevons trait tels ligne cependant deux inconvnients :

Le problme lmentaire rsoudre est le calcul de l'intersection de la demi-droite horizontale situe .gauche du point avec les primitives est un segment, nouS oprons comme dans l'aldu contour : si la primitive gorithme du chapitre 4.3.3.2. Si la primitive est un arc de cercle, et si le point n'est pas situ au-dessus ou au-dessous du cercle entier, nous le par quadrant <voir dcomposons en un ensemble de bords gauches et droits IWUS chapitre 3.3.3.4.). Puis pour chaque morceau d'arc de cercle obtenu, uivant : effectuons le traitement 81 droite Le calcul se fait de l'intersection de la faon qui du morceau suit. d'arc de cercle avec la demi-

Soient (Xd,Yd),(Xf,Yf) les coordonnes des extrmits dbut et fin du morceau d'arc, et D son sens de rotation (D:=si sens trigonomtrique alors 1 sinon 0). Soient R le rayon et (Xc,Yc) le centre du cercle associ, et (Xp,Yp) les coordonnes du point tester. 2 Yp>Yd ou, YpsY ou Xpcmin Llxou pl.4 d'.i.ntehheoon; lXd,X,$l

. Il faudra tenir compte ou certains traitements que le hachurage vertical . L'intersection de balayage,

des artes horizontales pour le dessin au ultrieurs sur les sous-ensables obtenus ou oblique et la rotation ; rarement : sur une La complexit est proportionnelle au nombre de primitives. si le point deux points est exd'in-

de deux artes de A et B se produit mais le plus souvent entre deux lignes

Nous pouvons cependant tirer trieur au contour : on s'arrte tersection. L'approximation utilise engendre une erreur en fonction de la pente des artes concernes. plus ou mains importante

parti de la convexit ds que l'on a dtect

185

4.S.Z

- PECOUPAGE

DUN

SEGMENT

PAR UN CONTOUR

NON

POLYGONAL

Le problme est de calculer la partie l'intrieur du co"tour "on-polygonal. Nous proposons pour le dcoupage polygonal. de gnraliser (voir chapitre

du segment

de droite

situ

la mthode du suivi de contour employe 4.4.4.(Z)) d'un segment par u" contour

Le problme lmentaire rsoudre est le calcul de l'intersection de la droite support avec les primitives. Si la primitive est u" segment de droite, nous effectuons le mme traitement qu'au chapitre 4.4.4.2. Si la primitive est un arc de cercle, nous pouvons oprer de la manire suivante : y=nm+p l,'quatio" de la d~roite support : R le rayon et C=(Xc,yc) le centre du cercle ; Ed=(Xd,Yd) et Ef=(Xf,Yf) les extrmits dbut et,fin, sens de parcours de l'arc de cercle. Les points coordonnes : d'intersection de la droite kTX+p o A=pzm2-(l+m2)(pz-R2)
Nous pouvons rencontrer

t
pas d'intersection (point de mort Deux cas de figures en Ed :t) se prsentent par une seule
E*=(x~,Y~)

Intersection en Ed (point de naissance :*) : des extrmits


extrmit E, et D

Soient

et D le ont pour cours

a) La droite
soient E,=(x,,YI),

passe (E,,E2). "e

lautre

le sens de par-

support

avec

le

cercle

de l'arc - la droite

. Y,-mx,Y2-~2
. y1-1>y2-2

coupe l'arc qu'en E,: : pas d'i"tersec;io" : intersection

en E, (point

de mort)

en E, (point

de naissance) avec E,=Ed


:

trois

cas

- le droite : pas d'intersection. distincts (Ik=(~k,yk))k=, des angles 2. . X,>Xi

coupe : D'=O, D'=i,

l'arc

e" E, et au point en E, (point en E,

I=(X;.~~),

. 9, . 00,

la droite la droite

"e coupe coupe

pas le cercle

intersection pas d'intersection

de naissance)

le cercle si

e" deux points

On a IkS respecte cle la le

arc(Ed,Ef)

<R*%><(E%), D de l'arc

sens de parcours

o l'orientation de cercle. appartiennent des extrmits point(s).

Si l'un ou les deux points d'intersection deux cas peuvent se prsenter :

l'arc

de cer:
. x,<xi : D>=l,

i- Le(s) point(s) d'intersection diffre("t) droite support coupe l'arc de cercle en ce(s)

de l'arc

xi intersection pas d'intersection

x1 en E, (point

de naissance)

2- L'un ou les deux points d'intersection sont confondus avec les extrmits de l'arc : comme pour les segments de droite, on ne prend pas en compte l'extrmit o les sous-parois finissent :

D'=O,

e" E,

D'=O E -J-42
X1 Si SI=EE, ce~f le

: D=l ..,

I I xi

contraire.

186 b) ~a droite passe par les deux extrmits E, et E2 avec ~~=Sd(l) . XI<X2 : D'=O, pas d'intersection en E, et E2 (points de mort) D'-1, intersection en E, et E2 (points de naissance) D'=O :
4. a.3 - DECOUPAGE V'UN ARC DE CERCLE PAR UN CONTOUR
NON

POLYGONAL

Le problme est de calculer la partie l'intrieur du contour no" polygonal.

visible

d'un arc de cercle situ

L'algorithme se dcomposeracormae prcdemmenten deux temps : 1. Calcul des points d'intersection du contour avec le cercle supportant l'arc. 2. Extraction des parties visibles.

I Xl

x2

'jt

l- Calcul des points d'intersection - intersection du cercle avec un segment de droite:

. x,>x2

: D'=O, intersection en E, et E2 (points de naissance) D'=l, pas d'intersection en E, et E2 (points de mort)

e
x2

D'=l

On calcule l'intersection de la droite support avec le cercle. Puis s'il y a deux intersections distinctes, on rcupre les points d'intersection appartenant au segment de droite. Comme pour le dcoupage d'un segment de droite, pour viter les singularits (cercle passant par un sommet), on oriente les segments vers le bas et on ne prend pas en compte les points d'intersection confondus avec l'extrmit fin :

x1

. e, la droite est tangente au cercle au point T. Deux cas peuvent se prsenter : l- le point T diffre des extrmits de l'arc de cercle : il "'y a pas d'intersection. 2- Le point T est confondu BYPCl'une des extrmits de l'arc : soient E,=(x,,y,) cette extrmit et E2=(x2,y2) la seconde. . Y,-~,<Y2-~2 f Y,-y'Y2-==2 : pas d'intersection au point T (point de mort) : intersection au point T (point de naissance).

atio"

@J

d'intersection

- intersection

du cercle avec un arc de cercle: y a deux inrerqui appartien-

L'ensemble des intersections de la droite support dfinit sur celle-ci un ensemble de segments de droite intrieurs la tache et joignant ses bords. La partie visible du segment dcouper sera calcule en effectuant l'intersection de celui-ci avec l'ensemble des segments intrieurs au.conto"r "on polygotil (vair chapitre 4.4.4.2.). Si le segment de droite des Y. est vertical, on inversera le rle des X et

0" calcule l'intersection des deux cercles. Puis s'il sections distinctes, on rcupre les points d'intersection nent l'arc de cercle (voir chapitre 4.8.2).

Si l'un des points d'intersection rcupr est confondu voc l'une.des extrmits de l'arc de cercle, on vrifiera c-e prcdenment si c'est un point de naissance (on le garde) ou un point de mort (on le supprime). Un poinsdu cercle support appartient l'arc dzcle (g,,E,), si l'angle e=(E,CI) est infrieur ou gal -l'angle S2=(E,CE2) o C esf le centre du cercle.

La complexit de l'algorithme est proportionnelle au nombre de primitives. Nous pouvons galement tirer parti de la convexit e" arrtant la comparaison de la droite support avec les primitives du contour ds que l'on a trouv deux points d'intersection. L'inconvnient de cette mthode est l'utilisation de la fonction gonomtrique inverse arctg pour le calcul des angles.
(1) Si E,=Ef c'est le contraire.

tri-

189 4.8.4 - CONCLUSION

($jiJ D=l, cm2


1 e arc 2- Extraction de cercle visibles des parties

(Y-&
D-O, .9X32 1 e arc

DC0
de cercle

NOUS constatons ne fois encore que lapplication des ides du suivi de CO~~U= permet de sumonter simplement les singularits rencontres dans la gnralisation des trois problmes lmentaires (comparais Pointcontour, dcoupage dun segment et dun arc de cercle Par cto=) a= COtOrS non polygonaux. 0 remarque galement que les COtO=s peuvent tre co*sxss 0 non.

4.9. Conclusion.
Sur les algorithmes lmentaires de dcoupage, nous pouvons faire pluremarques : , Nous constatons que la complexit des algorithmes dpend essentiellement de la nat=e des figures traites : savoir rectangulaires (bords parallles aux axes), convexes ou on convexes. Dans toute application, il conviendra donc de choisir en fonction de la nature de la scne et de ses manipulations, lalgorithme adquat. sieurs . Nous remarquons galement que le bon fonctionnement des algorithmes, et en particulier le traitement des singularits spcifiques chaque problme, repose la plupart du temps pur une analyse rigoureuse de la dfinition de lintersection de deux segments de droite, celle-ci variant dune application une autre. deux . Lorsque nous traitons une tache par opposition so=fes dapproches peuvent tre envisages :. a dessin au trait,

Soit (Ik)k=l,...,l? lensemble


2 ordonne cet si wk)k=l,...,N On regarde 4.8.1.1.).

de N points

dintersection. des angles (E,,E2). (voir chapitre

ensemble dans le sens croissant en tem~lt compte du 88s de larc E, est intrieur ou no

au C~~OU=

Sachant si en E, us sommes lintrieur ou lextrieur, nous appliquons le contrle de parit su= la liste o~nebl;sitersectias appartenant larc (E,,E2) +d. tant que (E,cI~)L(E,CE~)). Chaque fois que nous =~CO~=S un Po=t, nous entrons ou so=tos de la tache (voir figure 4.19).

- le dcoupage implicite : nous raisonnons ici su= les surfaces engendres par les contours des taches. Les taches rsultant du dcoupage, sont caractrises par u ensemble de points (surface) et no par leurs contOs. - le dcoupage explicite ches, corane pour le dessin par la description de.leurs : nous au trait. coto=s. travaillons Les taches su= les produites contours des tasont dfinies

a) E, B tache Figure 4.19.: Exemple dextraction

b) E, B tache des parties visibles (D=l) rri-

, /

Une mthode danalyse gnrale 88 dgage de cette tude : il sagit de 1, technique du suivi de contour. En effet, elle permet de traite: indiffrenrment, des coto=s convexes oll quelconques, en srmtat simplement toutes les singularits. Dautre part, les analyses des cto=s effectus pour le dcoupage, pour le remplissage ou le hachurage laide de cette technique tant identiques, nous pouvons effectuer e partie de ces traitements simultanment, en utilisant et en produisant des stl~ct=es de donnes unifortis. Nous gagnons alors en espace mmoire et en vitesse dexcution. Dans le cadre des contours on polygonaux, la logique du suivi de CO~U= nous permet galement de traiter simplement certains problmes lmentaires (comparaison point-contour, dcoupage dun segment et dun a=C Il serait aussi intressant denvisager ltude dautres opde cercle). rations comme lintersection de deux ~tours on polygonaux convexes Par exemple.

Linconvnient gonomtrique arctg

de cet algorithme est lutilisation pour le calcul des angles.

de la fonction

'LUXLAND-WESTE

81> B. *cuAND, WESTE N.


The edge-flag
Trans. coq..,

Bibliographie
method
~anuary

algorithm.

A fil1
no 1,

for
1981.

raster

scan displays.

IBEB

vol.

c-30,

<ALLIAUME

812 configurations de Nantes, Mai gomtriques


1981.

F. ALLIAUME Algorithmes pour identifier les ments de droite. Rapport de recherche, Universit <AnlERTON-UBILER 77>

de 2 seg-

P. *THERToN et K. WEILBR Hidden surface removal using polygon vol. ll(2) : 214, Sumer 1977. CBENTLEY-OTTMAN 79>

ares

sorting.

Computer

graphies,

J.L. BENTLEY, s. UTTMAN Algorithms for reporting and counting Trans. Camp, Vol. C-28, n-9, &eptember
<BLOCH SI>

geometric 1979.

intersections.

IEEE

M. BLCCH Gnration de taches bicolores - applicaion rie - problmes de nature ordinale. Thse Docteur-Ingnieur, St-Etienne, Juillet <BP.ESENHAM 65> J.E. BRESENHAM Algorithm for computer control of a digital IBM System Journal, Val. 4, n-1 pp. 25-30,
CBRESElGl4l-l J.E. 77, BRESENHAM

aux caractres
1981.

d'imprime-

plotter
1965.

A linear algorithm for incremental CGIP, Vol. 20, n02, Fvrier 1977. <LUCAS et a1.79> M. LUCAS et a1. LB ralisation des logiciels Ecole d'EC du Br&u-sans-nappe
Ed. Eyrolles 1981.

digital

display

of circula

arcs

graphiques - Juillet

interactifs 1979.

<BRASSEL-PEGEAS

79, on vector
126-133.

K.E. BRASSEL, R. FBGEAS An algorithm for shading of regions Computer Graphies, Vol. 13, n'3,rpp.

display
1979.

devices.

CCOEIGNOUX-GEDJ

80, planar parterns on TV-like 68, n-7, July 1980. masters.

<HEGRON

83c>

P. COEIGNOX, R. GUEDJ Computer generation of colored Proceedings of rhe IEEE, Vol. CCOUEIGNOUX Si>

G. HEGRON Etude comparative d'algorithmes par ordinateur. Thse de 3me cycle, Universit <JARVIS et al. 76)

l&mentaires de Rennes,

pour Septembre

la synthse
1983.

d'image

P. COUEIGNOUX Character generation by computer CGIP, 16, pp. 240-269, 1981.


<EDMOND8 E.A. et al. 82> A. SEHAPPO, S.A.R. SCRIVENER Vo1.2, na5,

J.F. &IR"IS, C.N. JUDICE, W.H. NINKE A survey of techniques for rhe display bilevel displ~ays. CGIP, ~01.5, pp. 13-40, 1976.
<LIEBERMAN 78>

of continuous

tone

picfures

on

EDMONDS,

Image handling IEEE Computer <FOLEY-VAN


J.D. DAM 82> et

in-two-dimensiona design Graphies and Applications,

Juillet

1982.

H.

LIEBERMAN

How to color in a coloring book Camp. graphies, Vol. 12, August


A. VAN DAM

1978.

FOLEY

Fundamentals Addison-Wesley
<FRANKLIN 79>

of Interactive Comp~ter Graphitis Systems Programming Series, 1982.

<LITTLE-HEUFT

792

W.D. LITTLE, R. SE"PT An area shading display IEEE Trans. Cap., Vol.

system C-28,,n"7,

Juillet

1979.

N.R. FRANKLIN Evaluation of algarithms to display CGIP, Vol. 11, pp. 377-397, 1979.
(HEGRON C. 82a> HEGRON

vector

plots

on raster

devices

<LUCAS 772 M. LUCAS Contribution l'tude des techniques de co~nications graphiques avec un ordinateur. Elments de base de logiciels graphiques interactifs. Thse dEtat, IMAG Grenoble, Dcembre 1977.
1982.

Algorithmes lmentaires Etude bibliographique. Con~. P et T n'S2 35068, <"EGRON 82b> G. HRGRON Techniques de remplissage Con~. P et T n'82 35068, bre 1982.
<HEGRON G. 83a> EGRON

pour

la production

d'images Universit

par

ordinateur. Juin

RR IMI-info-3,

de Nantes,

<MAXWELL-BAKER

79> circles, ellipses and hyper-

de taches sur une surface RR IMI-info-4, Universit

pointillage. de Nantes, Septem-

P.C. MAXWELL, P.W. SAKER The generation of polygones representing boles. CGIP, Vol. 10, pp. 84-93, 1979. <MARTINE2 82> systmatique et matriel.

F. MARTINE2 Vers une approche

Aspect de dcoupage et traitements d'images par ordinateur. RR IMI-info-7, Universit de nature de Nantes, gomJanvier
1982. <MERIAUX M. 79,

logiciel

de la synthse d'images. Thse d'Etat, INPG, Grenoble,

Novembre

Algorithmes lmentaires trique pour la production Con~. P et T n-82 35068,


1983. CHEGRON G. 83b> REGRON

MERIAUX

Etude et ralisation d'un fonctionnant par taches. Thse de Docteur-Ingnieur, et ses applica<MORVAN-LUCAS P. MORVAN, cages et 762 M. LUCAS

tet%inal Universit

graphique

couleur

tridimensionnel 1979.

de Lille,

Janvier

La technique du suivi de contour en synthse d'images tions. PI IRISA no 209, Universit de Rennes. Octobre 1983.

ordinateur Ed. Larousse, Srie

- Introduction informatique,

l'infographie Paris, Septembre

interactive
1976.

Bibliographie

195

G-mmui-sPRouLL w. NEWMAN,

73, R.F. SPRoLL

CSHAMOS M.

75> SHAMOS

Principles of interactive Mc. Graw-Hill, New-York, aiEwn4N-sPRouLL,79> w. NEWMAN, R.F. SPROULL Principles of interactive Mc. Graw-Hill, New-York,
IOROURKE J. A et al. 82, C.B. CHIEN,

computer graphies First Edition 1973.

Geometric Proceeding 1985. <S*AN1 BO>


SHANI

complexify of the 7th ACM symposium

on the

theory

of Camputing,

tiy

computer graphies Second Edition 1979.

H.

Filling regions Camp. graphies, <SHAMOS-HOEY 76>

in binary raster images : a graph-cheorie Vol. 14, n03, pp. 321-327, July 1980.

approach

OROURKE,

T. 384-391,

OISON

et Aot

D.

NADDOR

ne"

algarithm
01.19, n-4,

for

intersection
pp.

canvex

polygons.

CGIP,

1982. <SIC0

M. S"AMOS, s. HOEY Geomtric intersection 17th FOCS Conference,


82> c. SIC0

problems
1976.

<PAVLIDIS

79) for
126-141,

T. PAVLIDIS Filling algorithms CGIP, Vol.10, pp. CPAVLIDIS Sl>

raster
June

graphies 1979.

Gnration de taches bicolores - Applications merie - Problme de nature gomtrique. Thse de Docteur-Ingnieur, Saint-Etienne,
<SMITN 79> SMITH

aux caractres Mars 1982.

d'impri-

T. PAVLIDIS Contour Filling Camp. graphies, (PAVLIDIS 82>

in raster graphies Vol. 15, n'3, August

1981.

A.R.

Tint fil1 Proc. SIGGRAPK-ACM, CSUTHERLAND-HODGMAN 742

pp.

276-283,

Ayqust

1979.

T. PAVLIDIS Algorithme for graphies and Image Processing Ed. Springer-Verlay, Bell Laboratories, 1982.
<ROGERS-ADAMS D.F. 76) .,.A. ADAMS

I.E. SUTHERLAND, G.W. HODGMAN Reentrant polygon clipping Janvier 1974. CACM, Vol. 17, nl, <SUTHERLAN&PROULL 68)

ROGERS,

Mathematical Mc Graw-Hi11 <ROY 83,

elements for computer graphies bmk company, New-York, 1976.

I.E. SUTHERLAND, R.F. SPROULL A clipping divider FICC 1968, Thompson baaks, Washington, au trait Janvier <WEILER 80> K. WEILER Polygon comparison using a graphe Camp. graphies SIGGRAPE-ACM, Vol. Notation ; CLIP = Computer Graphies

D.C.,

p.765.

M.A. ROY Etude comparative d'algorithmes pour l'amlioration de dessins sur une surface point par point IRISA Rennes, PI n'189, Universit de Nantes, RR IMI-Info 10, 1983.

representation 14, na3, Juillet

1980.

(SECHER 83) E. SECHER Conception et ralisation cartes lmentaires. IRISA Rennes, PI "'188, 1983. d'un Universit logiciel de saisie et restitution de

and Image Processing.

de Nantes,

RR IMI-Info

9, Janvier

Liste des algorithmes

GENERATION DES COURBES Mthode gnrale : IORDAN et a, ......................................... Segments de droite : LUCAS. ............................................. BRESENHAM.. ...................................... Ensemble de segments de droite : compression. ............................... rptition .................................. Cercles : BRESENHAM .................................................. Arcs de cercles : BRESENHAM ........................................... Ellipses simples : ROY. .................................................. quelconques:ROY ............................................... Arcs de paraboles : ROY ................................................. Hyperboles ............................................................. GENERATION AMELIOREE DES COURBES Segments de droite : ROY ................................................. Ellipses simples : ROY. .................................................. qe,conqes:ROY ............................................... Arcs de parabole : ROY. ................................................. SIMULATION DE GRISE Cellulesp~finies ...................................................... Elimination deffets secondaires : ROY ...................................... REMPLISSAGE DE TACHES Coloriage :SMITH ..................................................... PAVLIDIS ................................................... Balayage ligne par ligne taches polygonales : LUCAS. ......................................... tachesnon-polygonales ............................................... Suivi de contour algorithme YX : NEWMAN et SPROULL ............................... suivi de contour : taches polygonales. ................................... tachesnon-polygonales ................................ Hachurage verticalethorizontal.............................................~ oblique..................... ...................................... Dkxnposition en lments simples. ........................................

15 22 23 24 24 26 30

DECOUPAGE Dcoupage dun segment de droite par ne fentre rectangulaire : SUTHERLAND et SPROULL. ............................. PAVLIDIS ............................................. polygonaleconvexe :PA"LIDIS ....................................... polygo*eo-coexe ............................................... non-po,ygonalenon-convexe ........................................... Dcoupage dun arc de cercle pa ne fentre non-polygonale non-~nvexe. .......... Dcoupage de contours polygonaux dcoupage dun polygone par ne droite : SUTHERLAND et HODGMAN ...... imersection de deux polygones convexes : SHAMOS........................ ................. OROURKEetal.. Dcoupage de taches dcoupage implicite et explicite ......................................... dcoupage dune tache par une autre tache dfinie par un ensemble de points .............................. dcopage&dex(aches .............................................. TRAITEMENTS DE NATURE GEOMETRIQUE ................................. Comparaisonpoint-segmentdedroite.. Comparaison point - contour contour polygonal conveke : SHAMOS. .................................. contourpo,ygonalnon-convexe ......................................... contour non-polygonal non-convexe ..................................... Itersectio dedeuxsegmentsdedroite ............................................. dun ensemble de segments de droik : BENTLEY et OTTMAN. ............... Unpolygoneest-ilconvexe? ............................................... DIVERS Opration entre deux listes dintervalles union.. ........................................................... intersection ......................................................... di~rence .......................................................... Inscription dun texte dans un polygone non-convexe. ............................

139 141 145 149 184 187 152 153 164 173 176 180

134.143 134 135 183 168 109 170

49 52 54 57 60 61 70 74 81 83 86 89 94 ... II3 117 Il0

177 178 179 96

Index

Linformatique . Ainsi naquit Iinformatique, par R. Moreau . Principes des ordinateurs, par P. de Miribel . Emploi des ordinateurs, par J.-C. Faure l Aide-m6moire dinformatique, par Ch. Berthet . Lets talk D.P. ; lexique dinformatique, par J.-P. Drieux et A. Jarlaud l D.P. words ; dictionnaire dinformatique anglais-franais, franais-anglais, par G. Fehlmann La microinformatique l Micro-informatique ; architecture, interfaces et logiciel, par J.-D. Nicoud . Le choix dun microordinateur, par H.-P. Blomeyer-Bartenstein . Introduction aux microprocesseurs et aux microordinateurs, par C. Pariot . Microprocesseurs : du 6800 BU 6809, modes dinterfaage, par G. Rvellin . Interfaage des microprocesseurs. par M. Robin et T. Ma~rin Les applications de linformatique l Analyse organique. tomes 1 et 2, par C. Cachet et A. Galliot . Les systmes dinformation ; analyse et conception, par Galacsi l Systmes dexploitation des ordinateurs, par Crocus . Bases de donnees, mthodes pratiques sur mai et mini-ordinateurs, D. Martin . Les fichiers, par C. Jouffroy et C. Ltang . Bases de donnes et systmes relationnels, par C. Delobel et M. Adiba . Systmes informatiq&s tipsrtis, par Comafion l TKinformatique, par C. Macchi et J.-F. Guilbert . Bases dinformations gn&ali&s, par C. Chtisment. J.-B. Crampes et G. Zurfluh Lart de programmer l Initiation B Ianalyse et la programmation, par J.-P. Laurent . Exercices comment& danalyse et de programmation, par J.-P. Laurent J. Ayel . Les bases de la programmation, par J. Arsac . Proverbes de programmation, par H.-F. Ledgard l Programmation, tomes 1 et 2, par A. Ducrin . Thhie des progmmnes, par C. Livercy . Algorithmique, par P. Berlioux et Ph. Bizard . Synchronisation de programmes parallles, par F. Andr, D. Herman J.-P. Vejus . Algorithmique du pamll&me, par M. Raynal 0 Synthse dimage : algorithmes &lmentaires, par G. Hgron Leslangages de programmation . La programmation en assembleur, par J. Rinre . Exercices dassembleur et de macro-assembleur, par J. Rivire . Basic : programmation des microordinateurs, par A. Checroun . Introduction B A.P.L., par S. Pommier . Cobol. Initiation et pratique, par M. Bars et H. Ducasse . Fortran IV, par M. Dreyfus . La pratique du fortran, par M. Dreyfus et C. Gangloff . Le langage de programmation PL/I, par Ch. Berthet . Le langage ADA : manuel d&aluation, par D. Le Verrand

par

et

et

il

Vous aimerez peut-être aussi