Académique Documents
Professionnel Documents
Culture Documents
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
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
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.
SOMMAIRE
pREF*CE. SOMM*IRE
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
...................
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.
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. ..............................................
184 187
189
4.9.Conclusion BIBLIOGRAPHIE
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.
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.
%We
L-PLYLJ~
1.1.: Schma gnral <LUCAS 772).
dTun
logiciel
graphique
interactif
(tir
de
et
traitements reprsenter
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 :
de
1.2. Linformation
sur Limage lcran est ont
image
structur pour dinformations loeil humai. qui aprs affichag
contour droite,
dune arcs
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
de
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
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
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
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
ligne trams
suivante
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
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
- 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.
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
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
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
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
et les Gnration
extrmits d'un
du segment
b- Segment de droite.
engendr
Y+1
1
3
Y+1
0 Y y-1
point
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
Pour les mthodes numriques, numrique de la courbe en utilisant ses drives partielles.
les
calculs de faon
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
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
,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.
. La qualit premire des algorithmes de DANIELSSON, COHEN demeure le cadre thorique gnral dans lequel ils peuvent donc sappliquer & une grande famille de courbes.
- 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.
gnrales implicites
C-
2.3.2.2 Soit
- La mthode la courbe
?3>1 : (1)
implicite
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*
propose
de suivre
s~pp0~~
dons alors
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
x-l
le point
P et les
parcourir Y
la courbe
du signe du signe
+: ou 4
on rduit
les
8 pas possibles
(3)
AX = +t ; AX = -, ;
(4)
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
le prochain
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)
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+
(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
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
possdent
A une arithmtique ;
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
dplacons
dans
le premier
octanf
(voir
figure
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
relatives des points candidats idale (premier octant). de la courbe idale d'abscisse
D(r,q) y,-q.
une expression
arithmtique
qui
nous permette
d'valuer La pente de
figure
pour
l'tape
suivante au mouvement
seront
donc ;
: (voir
particulirement
intressants,
celui
de
au mouvement
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
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;
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;
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
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.:
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
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
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
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
1. M3 := MZ+l; 2.5.2
Exemple
gnration
de cercles
par
1; mthode
de BRESENHAM.
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
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,)
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;
xi
- x,, - X1'
xc - 2 Yi
Yi Yc = yi-y,, = y,-Y,
Yc
= 0,
i=2,3
i-2,3
translate
+ 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
dans
le si initial.
ler
qua-
de {[(xi+l)*+(yi-1)1-R') l'intrieur
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)
des
ou (xi+l,yi-1)
le plus
a : valeur
; le signe
est le
des
deux points
du cercle.
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
et : q,Y;)=k,,Y,).
Exemples
: Gnration
d'arcs
de cercle
par
la mthode
de BBBSENiIAN.
Gt%.km%n Vebui
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
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'
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 := := := := :=
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.:
simple
(Mthode
de ROY)
forme
L'algorithme suivante
de gnration
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
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
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 - $, ;[,
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
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:
sg := l f TRACER-@LAURANl
37
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
de lorigine
de de
de (i.e.
courbe de la
tracer droite d-
* (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
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
YC
dbut -. s
E :EtT+S*Cd
-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 [,
angle
GF.F
appliquer
elaiL-
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
de la des
";
;f?:",
de ,uente
2.8.1
- GENERALISATIUN
"SIMPLES" Nous
,*
T e,,*
paui
*/
considrons 'Y=
=l o
centre
tion
: $-,
a et
arial diagonae
', 8,
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
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
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
que la quantit E dfinie entre le mouvement axial (cas (cas (a) (c) et et (b)) (d)) alors alors
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
la que
appartiennent
1 [ , ce qui
Le a) Les On
se
fera
en
X.
avec
= T(r) = S(q)
tangentes arriv
&iE<=O cl&md
mouvement
c7Xidlen
Y1
Linon
S:=S+Za; T:=T-Zbf:
42
e]+
;,
au point
= T(r) = S(S) :
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
dter-
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)
+ 2 T(r)
+ 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 :
+ 2*S(q) = +2
+ 6 b'
- 4 a*
br
initialisations +a2
= -2 a'q
ea X ou en Y, OU bien
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).
KYl;
s := 0;
E := T+Z*AZ-82; CA:= PAZ; CD:= CA-4*B2;
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--*
des ab&&bes
&J
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
&
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,
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
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-,)
e z*
. 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
De mme, une tangente de pente nulle Dans ce cas, les coordonnes des points (-mo-DYo) o
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-
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.:
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
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
&
debut si
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
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
IrttWAti
atthibute
au POti
2.9.3 2.9.3.1
- AMELIORATION - La dthode
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
D := D-S-AZ S := S+DS
YS: =
Y+Yinc
:= il
:= -1
1'
len
quti
'1
DYT 6"e
3 qund>rant
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
&& 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*
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
ut := ABSIX-Xe-XuzcDtil
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 := 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
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
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
y:; x+xinc
pcmabok.
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.).
dvelopp
suivante : entienl
(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~
-.
x := XIJ Y := Y0 A&$ischeh
point
(X, Y, Ztm~Xl
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
i-: 1 Y&ZNC
v := o-vsx
VS := Y+YZNC V := D-USX
16 := cp*im&
61
2.9.4.1
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
tous
les
lments
sont :
gaux
1.
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
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 :
. , (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
associe
, ,;
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
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.
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 ;
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).
defini
point
par
point
Gnralement,
se dcompose
: 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
du coloriage,
La gnration du contour engendre parfois che n'est plus connexe) conduisant des erreurs importantes selon le nombre de ces points (voir
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
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
rencontre amliorer
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, ,
(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,
; CO tremptiage ; - umptimge
&~.&?a gauche
- LALGORITHME
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
= 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
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-
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
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
a faire
76
77
point P
pnext p*Cit
est
dtermind
ci-dessous
1 = e2 pbelow b=O pnext=LEPT(pother) le cas o nous dtectons de remplir. un extrmum droite horizondu :> '~ pnext
d'une du plan
~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
: "ambre
pair
,,,
Figure
3.10.:
Contrle
de parit. dans
de cet algorithme donne des rsultats errons car il ne tient pas compte des singularits :
artes
sommets
horizontales
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.
remplissage du remplissage.
correct
78
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.
. 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.
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
b- Sommet CO-~ deux cts situs passant par ce sommet : code impliquant tien du contexte (code 2) ;
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.
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
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).
. Rewlissage tache
non polygonale
izon
3.3.2.4
Conceushn
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
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).
Figure
3.14:
Affichage
par
suivi.de
contour.
87
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
et la Log nbam)).
taches
po~ygoi,a&a
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
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 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
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.
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
- 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
? ? 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
~. 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. _
L:=Yd;
Uxy(kJ:=IXd-Y6l/iY6-Ydl,
les lignes de balayage selon l'ordre modules s'crivent par consquent : y:=YMX; : y:=y-1; : YGYti;
dcroissant de la facon
des qui
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).
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
remplir
chaque
(1)
(2)
3- Comparaison
des algorithmes
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.
,~
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
i: ,,,~., 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
b) Structures Description
d'anneau de l'anneau
et d'arbre
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
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
intervalle inclus
d'criture
dans le polygone.
98
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
et d'intersection 4.
de deux listes
Nous donnons une version du HP 9345 qui permet d'crire contour polygonal quelconque.
. -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)).
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
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
3.4.2
NOUVEL
ALGORITHME
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
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-
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
de traitement.par
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,
ptie
de L'atgokLthme
en lments
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) ;
On fait la mme chose que prcderment, puis aucune des extrmits nest comrmne, on dcoqose triangles :
Complexit
thorique
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-
colinarit
~
! 1 1
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
0 -----__
3.5.2 3.5.2.1
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.
de
=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.:
d'une
ligne
de hachurage
et position
relative
1. m pent
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-
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]}.
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
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
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
&:=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 &
7&7 6"e
; Nbd:=N&$
120
121
Hachurage LB ligne
proprement de hachurage
si
<j-cotul>y.6ti.
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
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
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,
de remplissage,
nouS pouvons
. 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
Figure
4.1.:
Dcoupage
dune
scne
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
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
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
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
demeure
le dcoupage
d'un
segment
de droite il
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,
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).
On peut ~
4.
aussi
obtenir tache
Dcoupage
d'une
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,
130
Svnthse
d image
: Algoriihmes
l&enroires
qui
ainsi
dfinies
et fa tache
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>).
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
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.2 4.3.2.1
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>)
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
NON CONVEXE
par
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
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".
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.
136
Synrhse
dimoge
: Algorithmes
~,&,w,,oires
L'algoriebme ---------_
4.3.4
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.
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.
- 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).
- 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
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
simple
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
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-
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
&u3 -
Pour rester cohrent avec les prendrons w=l o (~,y) reprsente le plan xoy. Le problme ; XI:=~X; dw,dy et dxy; :
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
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
elles sont nulles et les autres droite passe par l'un des cts du polygone tres cts (convexit ).
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
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;
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)
; 0 ; ; ;
Q&ti
2 40
utiliser
les structures
: des N sommets
X(l..N)
ef (x,y2)
des points
146
Algorilhma
de dcoupage
147
des
singularits
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 _,
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.).
Le problme par un polygone (entre parenthses: signe du point p' par rapport Lp'; sinon signe du point p' par rapporr LP).
Figure Critiques :
4.5.:
appartient
au con-
segment
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).
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
o lai>-lbl. x et y.
cas,
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
(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-
@;
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)
Figure
4.8.:
Intersection de la premire
du segment phase
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-
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
: 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
quelconque,
situ
dans
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
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
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
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
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 :
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-
154
155
l-
Le
A partir d'un point q.infrieur secteurs angulaires (voir mthode et d'un contour convexe). \
du contour,
il
y a intersec-
origine
des secteurs
rents
b) les :
deux
extrmits
4
pi+l 9
pi+l
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
a pas d'in-
. Si le point i)
On cherche
- si tersection.
9
elles
sont
&
situes de iar k situes 4
ici
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
P en parcourant :
(pi,pi+,)
appartiennent
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
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
nulle
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
de signe
159
der
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
6 PIIQ. au
est-ce
Cas o les de Q.
extrwits
de P appartiennent
-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-
- 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)):
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-
appartiennent
a deux
secteurs
diffrents P
(contourl)
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.
-I/-.
Q sq2 sql -3
7int
et
1int
"94
e) colinarit tien) .
: on se considre
Figure
4.12.:
1 ou co*toI
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).
4.13.c)
b) On rentre dans Q : l-une seule itersectio(WJQq) Z-deux intersectirjns identique* : on passe par un sommet de Q (6P,,Q).
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:+
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
intersection
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
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.
Nous Utilisons
Figure
4.13.:
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------------
Table
6 : Rgles
de progression
autour
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
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
du paramtre
indique
la position
du point
(X,Y)
SUT la droi-
(cl). B
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 /
- 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-
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
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
(2) RZcRl
Pl P2 (b)
R2
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.:
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.
: 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
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-,
) 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.
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.
- 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
4.6.3
- DECOUPAGE
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.
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
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
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
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.
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;
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
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
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)
GCB
GA,,8
et B-A
les
listes obtenues
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).
q appartient q appartient
(A-(contour
au contour l'intrieur
A)) (ou
de A (ou de B)
; ; c'est--dire
Table
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
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
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)
d'une
qSAAAB et AUB
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)
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-
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
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~)
Soient
a) La droite
soient E,=(x,,YI),
lautre
le sens de par-
support
avec
le
cercle
de l'arc - la droite
. Y,-mx,Y2-~2
. y1-1>y2-2
en E, (point
de mort)
en E, (point
trois
cas
l'arc
I=(X;.~~),
. 9, . 00,
la droite la droite
pas le cercle
de naissance)
le cercle si
arc(Ed,Ef)
<R*%><(E%), D de l'arc
sens de parcours
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
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
visible
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
. x,>x2
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
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-
(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,
de N points
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
, /
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.
de la fonction
'LUXLAND-WESTE
Bibliographie
method
~anuary
algorithm.
A fil1
no 1,
for
1981.
raster
scan displays.
IBEB
vol.
c-30,
<ALLIAUME
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
<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
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,
Juillet
1982.
H.
LIEBERMAN
1978.
FOLEY
Fundamentals Addison-Wesley
<FRANKLIN 79>
<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
P.C. MAXWELL, P.W. SAKER The generation of polygones representing boles. CGIP, Vol. 10, pp. 84-93, 1979. <MARTINE2 82> systmatique et matriel.
Aspect de dcoupage et traitements d'images par ordinateur. RR IMI-info-7, Universit de nature de Nantes, gomJanvier
1982. <MERIAUX M. 79,
logiciel
Novembre
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.
- Introduction informatique,
interactive
1976.
Bibliographie
195
G-mmui-sPRouLL w. NEWMAN,
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,
on the
theory
of Camputing,
tiy
H.
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
problems
1976.
<PAVLIDIS
79) for
126-141,
raster
June
graphies 1979.
Gnration de taches bicolores - Applications merie - Problme de nature gomtrique. Thse de Docteur-Ingnieur, Saint-Etienne,
<SMITN 79> SMITH
d'impri-
1981.
A.R.
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,
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.
1980.
(SECHER 83) E. SECHER Conception et ralisation cartes lmentaires. IRISA Rennes, PI "'188, 1983. d'un Universit logiciel de saisie et restitution de
de Nantes,
RR IMI-Info
9, Janvier
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
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