This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
De même, une tangente de pente nulle Dans ce cas, les coordonnées des points (-mo-DYo) où
égale
où
P, =s, : comme pour l’ellipse, le changement de quaoù la pente de la tangente est soit nulle,
de pente
à +l existe des points
si et seulemeat sont données par
- ~JWRODUCTION
La qua”tification,p=oduit un “effet d’escalier” relativement désastreux du point de vue de l’esthétique des images. Plusieurs méthodes sont employées pou= réduire ces défauts. En particulier, l’idée de BRSSENHAM est de répartir l’intensité maximale su= deux points (un point principal sélectionné COauraparavant et un point secondaire dans des proportions fonction de leurs distances respectives à la courbe). M.A.WY (
:
48 qui
utilisent
des filtres
numériques.
de faire possibles.
"éclater"
ces regroupements
pour
obtenir
tous
les
cas de figure
Les opérations effectudes restent des opérations entières (addition Seul le coefficient donnant la réOU soustraction) et des comparaisons. partition de l'intensité entre les points principal et secondaire est un rdel. Il est le résultat de la division de deux variables entières. L'intérêt de cette méthode réside dans le fait que ces deux variables entières sont déjà calculées dans l'algorithme initial, et ne sont par conséquent pas introduites spécialement pour le calcul des intensités de luminwité.
Nous redonnons la version de ROY, (
. segment de droite
Figure
2.9.2 2.9.2.1
.*rc
2.14.:
de parabole
.cerc1e
.ellipses
Amélioration du dessin au trait (grisés cellules 3x3) (tiré de
obtenus
avec des
- h4ETHOUE DE BRESENHAM - Le Pnhcipe
Cette méthode d'élimination de l'effet d'escalier dérive directement de l'algorithme de génération des segments de droite de BRESENHAM. Cetté méthode sélectionne 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 théorique. L'intensitG attribude à un point est fonction de la distance de ce point au segment. La somme des intensités de luminosité des points principal et secondaire est égale à l'intensité maximale (notée Imax) pouvant être attribuée à ua pixel. Aucune BRESENHAM. effet, les ries : cas
modification fondamentale n'est apportée A l'algorithme de On se contente d'exploiter toutes les informations données. En différents cas de figure avaient été regroupés en deux catdgodu mouvement axial et cas du mouvement diagonal. Il suffit donc
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)
51
Suivant CilA ti -TZTAX>= 7Jhm D[b -4
:= a Poti 1 := I e I judq(r’a ïmzti x := xixtic 0 := V+VELTAY
&
VELTAX &
debut si
Z’V-VELTAX<=O sinon ?zilnA dbs Y YtYtic -7:.
VELTAY>VELTAX D&b& 0 := 0 Pow 1 := 7 t-0 1 jll6q
Y Y := Y+Y.inc V := V-DELTA%
$ : i=&&,
V := V-VELTAY
-Y*:= Y+Ytic V := V-VELJAX ~
x := x+Kiblc XA := x+x& V := V-VELTAY
Le?
Cp := AESIVIVELTAXI 16 := ARRUMVI (Cp’Zmaxl Ip := rmax-IA Ab,$khut poti IX, Y, lpl Ad&cheh poti (X,Y~,IAI
cp := ABS [V/VELTAYl lb := ARRONVI ICp’In?anax)co
2.9.3 2.9.3.1
- AMELIORATION - La dthode
IrttWAti
atthibute
au POti
VU TRACE DES CONIQUES de ROY
Par applicatioa méthodologique du procédé d’élimination des effets d’escalier employé par BRESENHAM pour le tracé des segments de droite, ROY a développé de fwan détaillée dans (
53
2.9.3.2
- AmW.ot&ion
du
.î.tac~Z
. Ellipses simples Nous considérons une ellipse (X-XC) 2 (Y-Y02 -y--= 1 A?+ L'algorithme
donné
par
dea
eeeipdes
centrée
ROY, a la forme
en C(XC,UC)
suivante
et d'équation
:
:
MC,YC,A,B,Zixsr
: er&&zl
YS: =
Y+Yinc
D := D-S-AZ S := S+DS
B2 := BV US := 2'AZ UT := 2'82 T := T-LT Cp := ARSID/SI Id := Cp%!.%x Ip := Imax-r*
UXT := ARRONDI lAZ/SQR(A2+82)) xinc
:= il
Yinc
:=
1'
len
quti
'1
vim := .I 1' TRACER-QUAURNJT m :' -, 1' TRACER-QUADRANT
2è
quadtrant
*/
DYl := ABSIY-YCI POWL I := ï, 2 1 juapu'b
3è qund>rant
*/
!?ET?&
-1
TRACER-@lAVRANT
Y.iYlc := -1 1' 4s quadMti TRACER-@lAL'&WT
DYT 6"e
Y := YIYinC
V := D-S-AZ
*/
si D<=O
Pnocédwre TRACER-@lAlXANT v-6 -: := " S := -2'AZ'B D := 0 x := xc
D := T-BZ+?J T := T-VT
Y := YC-Yinc*B A6&Lckm(X,Y,Znmrl
hi!!
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 dïmage
. Ellipses
: A lgorirhmes
é/imenraires
55
quelconques
Dans l'algorithme de ROY qui simples auxquelles nous appliquons la tangente est donnée par :
suit, nous ccnsiddrons une rotation d'angle
les ellipses 88 1-r +;[ 2'
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 /*
zk%iLkaAaüon
AZ a2 MZ P2
:= := := :=
~'
*/ ~
YA := Y-Yinc YA := Y+Y&c
CP := A-%SID/S) IA := cp*zmax Ip:=znklx-IA A&Wm Ad&heh
point ~O*nt
* (X,Y, Zpl IX, YA, 16 l
ut := ABSIX-Xe-Xuzc’Dtil
x := x+x.&c Vu:= U+T-a &4 D>O cVk%A YA := Y-Y.&2 duton débat s* D+s-6tvAa>O LUWLA début SL 2’V+S-E+VAa>O aLoM YA := y+yinc X2iüïiï déLui YA := Y Y := Y+Yim 77 := u+s-B+uti T := Md+T S := VAd+S
:= A2’82*(PZ+M21 2*y0
VX0 := ARRONDI Ill) si y0 = 0 &hA vyo := B &&on Uyo := ARRONDI Irr’Ufyo) OY- := ARRONDIllyo/61’S~Rlk*%I16*a-yo’ll) Dl := k-a’VXO’-~‘DYO’+y’UXO*DYO TO := 2*o’VXO-y’VY0
SO := Z*B*vYO-ywo 1’ 3s quadhant x := xctuxo Y := Yc-UYO X&c := -1 Dti := lktz
:= +7 := -1
‘1 A.&On
ii%.t YA : = Y+Y*nc
V := U+S-B+Uid T := V.td+T
TRACER-2llAURANT 1’ 4s quadhani x : = Xc-~XO Y := Yc+DYO Yinc := -7 77x.t := uxm sg := -7
‘/
sg := -1
TRACER-@M%‘ANT -Fin
@
Y := Y+Y.&c
sg := 7
sg := I TRACER-OUADRANT
TRACER-@lADRANT
T:=TO%g S:=SO si 020 doJLA Ainon
A’A B’B M*M P’P
/* 28 qlulti x := xc+vxo Y := Yc-DYO Yutc := t7 Dti := Util
:= Sg’y Vsd := -2.6
lXC,YC,A,8,M,P:tienl
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 := yo’S~RlklL8*a’-a*yo*ll
xinc Yim
dont
~
c1 := PZ*BZ+MZvAZ B := U2W+P2*AZ y0 := (82-AZI’P’M b
PMc&i&W TRACER-@l4ûRANT :’ ma := -2% ” := Sg’y
‘/
&rl
d
:= DAd+S
s := s+lh
RetWW'Z
T := l+Uti
16:; cp*hax rlmx-IA
A66tihti
IX,
Y, 1.~1
AL!? vti := Sg’y VAil := -2.6 vzd := -2% R&d := Sg'y := ABS(Y-Yc+Xim*Dym)
accentuée.
Il est possible de remédier à ce phénomène Ip et Is de la facon suivante :
POW I := I &l?yiW ïmüt Y := Y+Y.inc
-
X-tic D+T-a+Uti
y:; x+xinc
D := U+T-a+Uti T := T+Utd s := S+VAd Ahml4&u= x6:=
2.9.3.3.
AIX!&&~
du .thac~
G@~(&,,
xtxinc
Mat CO methode ~~-l-&4~Cd~~C”“’
des
ahcd
de
de
pcmabok.
mfis~ée
par ROY a la forme
ARC DE PARABOLE de ROY & ou
IXB<XC
et
suivante
(XA,YA,XE,YB,XC XC441
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
T := T+O& s := S+uAa Cp : = ABS IU/Tj IA := cp*hzx rp := Imau-IA
TRACER-@lADRAM
développé
x+”
ainon %Lu ~-----q-xc~xA
point
le calcul
L’arc de parabole est défini par ses extrémités de coordonnées (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.).
A&
iX,Y,Ipl;A6&Lche/t
en modifiant
1, := cp&L Ip := Imax-16
0 := U+T-~+D&Z T := T+U.td S := S+u&d
A6&tchet point
proches de Dxo ou DP A et B ont des valeurs
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
L'algorithme
hi'!
très
On constate dans ce cas que les intensités Ip et Is associées aux ne sont pas correctes.~E* fait, points où la courbure est très prononcée, ces intensités sont inversées (c'est-à-dire q-e Ip est associée à S et Is est associée à P).Ceci provient du fait que dans ce cas la quantité T ou S diminue rapidement (jusqu'à devenir nulle dans certaine cas). Cette décroissaitce rapide n'a aucune incidence dans le cas de la version "escalier".
A~&+heh iX,Yd,ldl
Oyi
courbure
Ceci se produit lorsque m
Cp: = ABS iD/Sl Ip:=
: Cas d'une
et
atohd iZï%
h,Y,IAl &n-
-Fin
xA<xBl
ou
lXC>xA
TRACERIXA,YA,XB,YBI TRACERfXB,YB,XA,YAi
et
xA>xBI
: entienl
59 TRACERMD,YD,XF,YFl x:= DY := YF-YO DELTAY := ABS(UYI VT := ZVELTAY DSX := UX*lXF+XU-Z*XCI
PwJLZ:=
I~ljllsqu’àDYT~
UXT := ARRONUlWSX/DTl g
2
vx>0 &%A ZZ%
? XINC := ii XZNC := -1
-.
DYXI aLoILA YlEiC := +I dinon YZNC := -1
x := XIJ Y := Y0 A&$ischeh
point
:= i’+YINC u := v+vsx Si lJ
(X, Y, Ztm~Xl
-d@buf
T := DT*ABSIX-XC1 D := 0
:=X X := X+XZNC XA
I
GABSIX-XC)
ca6 des tangenXed de pente MIN(ABS(DXI,-ABFIX-XC)+UXTI := leIjLL6sLI’àBT&
c[O,l]*/
:= X+XlNC := D+T+UELTAY V<=O ohm YS := Y-YZNC 6*non début SA D-USX
---VT
‘i
Y
i-: 1 Y&ZNC
v := o-vsx
VS := Y+YZNC V := D-USX
1’6 := cp*im&
l
0 := U+T-DELTAY T := T-VT
Cp := ABSID/Tl IA := Cp’Zmx Ip := zmx-IA Ad,@cheh A~~.icheJl
point p0.in.t
IX,Y,Zpl IXS,Y,ldl
61
2.9.4.1
- IntzoducLkm
Les algorithmes traitant les effets d'escalier appliqués à des écrans à luminosité variable. Si nous ne disposons simulation.
pas d'un
tel
matériel,
sont nous
CO~CUS pour
avons
recours
être à la
Parmi les diverses techniques existantes (méthodes des seuils bruités, de Floyd et Steinberg,...,voir <JJN 76>,
Le pticipe L'idée des points négligeable l'écran.
de base de cette méthode est de remplacer un point-écran contigüs formant une matrice carrée nxn. Une conséquence de ce procédé sera la diminution du pouvoir de résolution
La technique
de cette
- à chaque point tensité de luminosité
(r,q) In.
méthode que l'on
est
la suivante désire
Soit que l'on être par
associée
s'effectue la matrice
eAt é.teiYu. varient entre 3x3. La matrice
0 et 9 et L3 pourra
montre
pour
chaque
intensité
quelle
cellule
lui
est
d'intensité.
--_---_---__~_-----_______ 1
m=n/Z
En notant
L2
4 3
2.15
=
et Um matrice Ll=O,
carrée
on obtient
par compade référen-
(3’h+i,3*q+Z-j]
9
8
7
des 9 niveaux
14L,+2Um Ln
une in-
[ 1 La figure associée :
6 : Simlation
mxm dont les
I 0
par exemple une image où les intensités veut représenter à l'aide de cellules exemple :
6 8 10 527
5 2.15
Un des problèmes que l'on rencontre en définissant une telle matrice est celui des figures parasites. En effet, certaines configurations de points dans une cellule peuvent donner un hachurage non désiré ou d'autres effets secondaires gênants. Une méthode 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 manière suivante :
avec
est
- l'affichage des n2 points-écran correspondants raison de l'intensité 1, avec la valeur donnée par ce 41 :
rdLM.4 Le point-éc>ran C&i aeûuné &iYlon ce point-blw7
Figure
par non de
:
afficher
:!
=
L4
311 15 = 12
De l'emploi d'une seule matrice effets qui détériorent la symétrie ellipses). La Figure 2.16.a montre à partir de la matrice L.
tous
matrices 8
les
éléments
sont
L2 et L4 suivantes
2
10
1 7 13 414
9 5 6
égaux
à 1.
:
1
résultent des effets de torsade et des des courbes (notamment dans le cas des les résultats peu concluants obtenus
62
63
[ 1 7
L4=3
0
4 1 5
2 6 8
associée
eux Sème et
6ème octants
Mais ceci ne suffirait pas à préserver la symétrie des courbes. Aussi, noUs utilisons le fait que les algorithmes de t=acd utilisés nous donnent second ares la position des points relativement aux points principaux. ROY a adopté la "stratégie" 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
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 référence.
b-Simulation res.
~rovmant
des niveaux
de l'utilisation
d"'"e
uniWe
matr :ice
LI=L=
2.16.:
Ce* affectation*
0 5
3 1 6
7 4 2
des effets
associée
aux 3ème et 4ème octants
associée
aux 7ème et Bèms octants
850 [2 4 71 associée 6
1
3
de la manière
suivante
:
secondai@
Les mises à jour de Ilb, temps que celles des variables Yinc.
, ,;
L3=
S'effectuent
de grisé=1
elimination
L 1
des matrices de à P ainsi que
de
. , (tire de
de référence noté Ilb),
aux
ter
et
2èm.s
octants
2 J
Ile,
Ile, Ild et Ilg sont effectuées en même d'incrémentation des coordonnées Xinc et
6.5
64 L'affichage
des points
suivra
donc
l*algorirhme
ci-dessous
:
- sa complexité
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~ ïmüt /’ TA8 contient -5% coohdonntes, Xo := TABi7,71*3 e’intetix 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
Pour toutes ces que de BRESF.NFlAH.
+l ',
~1
H : : : :
Lx Lx Lx Lx
:= := := :=
LI 12 13 L4
POILA k := 1 a 3 e taiït Xe := x0 POUA J:=J fi 3 & rz6iü -STIn>Lx~K,Jj afzoti
a&&Lchen(Xe,Ye)
Après élimination des effets secondaires, présentation correcte de ce que serait l'image uariable. La figure 2.16.b montre l'amélioration de la solution proposée initialement.
la simulation donne une ïesur un écran à intensité obtenue après utilisation
2.10. Conclusion Sur la famille des courbes que nous venons d'étudier, conclure en disant que la méthode de BRESENHAM s'avère des techniques incrémentales : - les tion
points
calculés
- elle n'utilise et de soustraction
sont
les
plus
qu'une arithmétique pour le calcul
proches entière des points
la
nous pauwns plus avantageuse
de la courbe et les ;
théorique
opérations
;
d'addi-
pratique
est
raisons,
il
la plus est
donc
intéressante. intéressant
de retenir
la
techni-
Cependant, si l'idde de SRESENHAH n'est pas généralisable pour toutes les familles de courbes, nous savons que la plupart d'entre elles peuvent Erre approchées par un ensemble de segments de droite, d'arcs de cercle ou d'arcs d'ellipse (voir "courbes évoluées" dans<SICOSl> ou bien engendrées par l’une des méthodes incrémentales générales (SOFtDAN ou COXEN). Difiérents auteurs ont généralement développé les techniques d'approximation polygonale des courbes et en particulier des coniques : on citera D. COHEN dans (
Chapitre 3
Remplissage de taches
3.1. Introduction trois
pans le terme générique types de traitement - le coloriage, - le remplissage - le hachurage.
de remplissage
de taches,
nous
distinguons
:
proprement
dit,
. Lorsque nous venons de dessiner point à point sur l'écran le contour d'une tache, l'idée première pour la peindre d'une certaine couleur est de la colorier à partir d'un point intérieur 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 frontière est définie soit par un contou polygonal ou autre dans l'espace utilisateur (figure 3.l.a), soit par un contour préinscrit point par point dans une m&oire d'image représentant l'espace écran (voir figure 3.t.b).
Contour Figure
polygonal 3.1.: Représentations
Généralement,
l'algorithme
b- Contour
defini
point
par
point
du contour. de remplissage
se décompose
en deux phases:
1 l'on tour
: constitution d'une liste d'arêtes l- Préparation du contour raisonne dans l'espace utilisateur, ou inscription et codage dans une matrice image représentant la surface de tisualisarion.
lorsque du con-
2- Remplissage
proprement
dit
de la tache
avec
la couleur
désirée.
. Le problème du hachurage d'une tache et les solutions envisagées sont très 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 développerons une méthode de hachura-', ge oblique sans rotation. Dans ce qui suit, la notion de "contexte" attribuée à 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
Dans de par point en à partir d'un teindre tous (vair figure
nombreuses applications, le contour à remplir est fourni poin mémoire d'image. Le principe de base est ici le suivant : point intérieur à la tache qui sera connexe, il s'agit d'atles points intérieurs à la tache qui sont "reliés" à ce point 3.2.).
* point intérieur (~,y), ou germe ("Seed")
Figure
3.2.:
L'algorithme
Contour
préinscrit
de base est
développé
et point par
Figure Lors
3.3.:
du coloriage,
<SMITH
du coloriage
deux
problèmes
peuvent
survenir
La génération du contour engendre parfois che n'est plus connexe) conduisant à des erreurs importantes selon le nombre de ces points (voir
:
des points isolés d'affichage plus figure 3.4.).
(la taou moins
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 dépassons les limites de la mémoire, soir agrandir la mémoire sur les bords pour supprimer a priori tout risque d'erreur. Si la seconde idée nécessite plus de mémoire, elle n'implique aucun calcul supplémentaire. points
intérieur. SMITH,
Illustration
points
isolés
/
/
de la tache non cploriés
79> :
Ayant déterminé un point intérieur ou germe ('seed') de coordonnées (seedx,seedy) à l'intérieur de la tache, nous remplissons d'abord tout le segment horizontal auquel appartient ce point (c'est-à-dire tous les point1 de même couleur reliés entre eux et au germe, appartenant à la même ligne de balayage). puis à partir de ce segment nous cherchons dessus et dessous les segments qui lui sont "reliés", c'est-à-dire possédant un point ('pixel') ayant un côté CO-~ avec un des points du segment horizontal courant : c'est la propriété de la connexité. Ce point caractérise le nouveau segment et devient un nouveau germe. Pour chacun de ces noweaux germes, nous répétons le processusdécrit ci-dessus pour le premier jusqu'à ce que toute la tache soit remplie. Pour mémariser et réutiliser les germes nous nous servons d'une pile. La figure 3.3. montre les différentes étapes du remplissage ci-dessus : les carrés noirs représentent le contour, l'koile intérieur de départ, les points noirs indiquent les germes qui lés.
décrit le point sont empli-
après
COlltO”I Figure
3.4.:
Deux idées rithme de base
Exemple de singularité non connexe). ont été utilisées :
pour
coloriage
rencontrée améliorer
lors
du coloriage
la complexité
de l'algo-
(tache
71 - éviter (algorithme
l'exploration redondante des segments de SMITH, <SMITH TV>, et de LIEBERMAN,
- modéliser la tache sous forme <%AN1 80>, et de PA"LIDIS
d'un graphe 81>).
horizontaux
(algorithmes
contigiis 70, de SHANI, ,
:
Si NB1 est le nombre de points intérieurs 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'avère a priori plus avantageux. puis
A cet celui
3.2.2
effet, ,,a,8 redonnons de PAVLIDIS.
- L’ALGORITHME
Pour éviter chaque segment lution suivante
l'algoritbrce
de base développé
P2ï SMITH,
SP
-RLLRlGHT FILLLEFT ≷
pvaleur(x,y)
nous donne
; CO tremptiage ; - umptimge
la valeur
à &~.&?a à gauche
VE SMITH
de rechercher systématiquement au-dessus et au-dessous de horizontal ceux qui lui sont adjacents SMITH propose la so:
•l
I ,
t
-
SP
SC au-dessus 'Figure
~a fonction
FILLRIGHT
Si le segment horizontal courant SC est adjacent au segment Sp précédement traité, et si les extrémités de SC sont à l'intérieur 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 "reliés" (voir figure 3.5.). SC
newpv = nouvelle valeur des points de la tache i old = ancienne valeur des points de la tache ; (seedx,seedy)=coordonnées du point intérieur : lx et TX = extrémités gauches et droites des segments horizontaux x min, x max et ymin, ymax sont les bornes de la mémoire d*image.
3.5.:
de Sp positions
SC
SC au-dessous relatives
des segments suivante
FILLLEFT Début *lu”c?h x ; x := r-l . ipv&uaix,yl
adjacents
pv&uIlx,yl Y := x-l
de Sp Sp et SC.
4$:= Xi, ;
: SCANHI Début
= oLd := new ;
:
x>mkl
6”e
du point
(~,y).
;
73
La fonction logique HIVOISIN(LOVOISIN) vérifie si le segment horizonta1 courant est voisin du précédent, s'il est au-dessus (au-dessous) et détermine si aucun nouveau segment lui est relié audessous (au-dessus). Lo&ue
,,
Ffgure
3.6.:
Définition
de C-LAG et de I-MG.
A partir du noeud (segment horizontal) auquel appartient nous définissons les germes des noeuds qui lui sont térieur, examinant le contour 2 chacune de ses extrémités, puis ainsi chaque segment déterminé (les germes sont mémorisés dans une
HIVOISIN
Le nombre de situé à l'une des de déterminer si mes des segments
-
k remplace yref+l par yref-1 pour obtenir LOVOISIN . Nous pouvons remarquer que cet algorithme de remplissage peut servir à remplir une tache monochrome déjà existante avec une nouvelle couleur ou une tache définie par un contour préinscrif (avec la nouvel('newpv'), le couleur), dont l'intérieur est monochrome. Si l'intérieur du contour possède plusieurs couleurs cet algorithme est toujours utilisable après quelques modifications des tests sur la valeur des points.
2- L'algorithme dures
- L’ALGORITHME
DE PAVLIDIS
l l
J- Le phincipe Pour modéliser la tache, PAVLIDIS utilise deux graphes où les éléments sont les segments horizontaux formés de points ("pixels") de même couleur et où les arcs sont les couples de segments adjaaents de même couleur. Ces deux graphes sont : - celui graph"),
associé
- celui
associé
au contOur
appelé
C-LAG ("contour-line
de PAVLIDIS
Avant d'exposer auxiliaires.
l'algorithme
Soit p définissant l'adresse point de l'écran. L'expression sur la même ligne horizontale, gure 3.7.a).
du contour
appelé
principal,
nous devons
définir
les
pracé-
: (coordonnées p-l nous donne et p+l désigne
(~,y) par exemple) d'un le point situé 'à gauche le point situé à droite
de p (fi-
1: +
P
adjacency
(b)
(a) à l'intérieur
inen pour
noeuds du contour (ou degré) reliés au noeud du contour extrémités du segment horizontal (noeud de 1-LAG) permet nous sommes arrivés à un extrénum et de calculer les gerde 1-LAG adjacents au segment courant.
Les-procédures auxiliaires ______---_-___-_---__ 3.2.3
le point adjacents de suite pile).
1-LAG.
I vM!i 1 I I
Si nous supposons que deux segments de l'inc6rieur sont reliés (ou adjacents) s'ils possèdent deux points ayant 1 côté conman, les segments du contour restent reliés même si ces 2 points n'ont qu'un sommet (ou coin) commun (voir figure 3.6.). L'idée 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 contrôle de parité et la possibilité d'améliorer la rapidité du remplissage.
LRIGHT(p) $ ) 3:, d %
P (cl
Figure
3.7.:
Définitions.
La procédure LEFT(p) (respf gauche (resp& le plus à droite) P (figure 3.7.b).
RIGHT(p)) nous délivre le point de l'intervalle de même couleur
le plus à contenant
74 On a aussi LRIGHT(p)=LEFT(p)-1)-l situé à gauche de p et de même couleur, couleur différente.
(figure 3.7.c) immédiatement
qui calcule le point après une plage de
Les degrés du noeud (intervalle) d'un graphe, contenant le point p sont calculés par la procédure LINK (p,v) qui renvoie le vecteur v défini par : v-(a,b,pl,pZ,el,eZ) où a et b sont les degrés au-dessus et au-dessou8 du noeud contenant p et pl,p2,e2 sont les points définis sur la figure 3.8. (si ces points ne sont pas définis on retourne la valeur NIL).
---_ Figure
3.8.:
Définition
de pl,p2,el,eZ.
--
/
____
Le point
COULEUR; !&
p B ]p2,pl[
. Notations
:
- pnexr come - Pather immédiatement - empiler sonmet de la - pi est tache.
est le point qui sera utilisé pour remplir le prochain inrerpoint de départ. 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 intérieur et 'couleur' ssf la couleur attribuée à la
valle
?
Remarques
:
Dans l'algorithme de PAVLIDIS, le test (1) contrôle si nous avons BTteint la fin de l'intérieur 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 nmntrées sur les figures 9aa et 9ab. On vérifie le premier cas si le point courant p est à droite de pright, et par conséquent hors du contour (sinon p est à l'intérieur).
(ab) Figure
3.9.:
Coofiguratioos
En (21, nous vérifions si germe p en cours de traitement
détectées nous :
avons
par
(1).
a faireà
un extrémum,
à gauche
du
76
77
Le prochain direction
point
pnext
est
détermind
ci-dessous
SUT deux exemples : Point empilé (directio,
3.3. Le remplissage de taches
p*Cit
P
3.3.1
1 = e2
pnext
pbelow b=O pnext=LEPT(pother)
En (3) nous traitons segment que l'an vient ta1
le cas où nous détectons de remplir.
Pour la procédure LINK nous utilisons la couleur examiné donné par v(p)=couleur du point p.
un extrémum
à droite
C du segment
INTRODUCTION
Le remplissage remplir une zone CO"fO"rS.
la a=0 pnext
-
du
:>
horizon-
d'une du plan
tache monochrome dont la frontière
'~ .
point intérieur d'intersections.
: nombre
impair
0
point extérieur d'intersections.
: "ambre
pair
LINK lp, In,b,el,e2,plll c := vlpl; b := 0; e2 := pl LEFTlpl, [pu-Il-c I~f-;l=y=G&:=
:= nie; pa := pabove ; pb := LLLom a := a+i 6.t b+l &
pbdow;
qui consiste à un ensemble de
~a bonne exécution de l'algorithme implique que l'on sache si on est à l'intérieur ou à l'extérieur de la tache. Sur une ligoe joignant le point en partant de la gauche le "ombre de frontières rencontrées indique si l'on est à l'intérieur du polygone ou à l'extérieur : c'est le "contrôle de parité" (figure 3.10).
Debut
a := cl:= p := hi ” &&y
esf une opération est définie par
,,,
‘ vaü+
Figure
Contrôle
3.10.:
de parité.
: ,:
Mais l'application la majorité des cas, l-
arêtes
2-
sommets
de cet algorithme donne des résultats erronés car il ne tient pas compte des singularités :
dans
horizontales
3- recouvrements d'arêtes 4- points doubles, etc...
3.2.4
- CUNCLUSION
En conclusion, les algorithmes de coloriage "e remplissant que des taches con"exes à partir d'un point intérieur (germe) souvent difficiles à déterminer automatiquement, sont avant tout utilisables de manière interactive.
D'autre part, la comparaison mis d'affirmer que l'algorithme cas, le plus avantageux, celui-ci contour plutôt que sur l'intérieur
de la complexité des méthodes nous a perde PAVLIDIS s'avère dans la plupart des raisonnant sur l'ensemble des points du de la.tache.
srreurs de remplissage dues au "contrôle de parité"
singularités du COOtOUr Figure
x.11.:
Singularités
rencontrées
lors
remplissage du remplissage.
correct
78
79
Aussi, un certain nombre de solutions insuffisances de cet.algorithme. Nous les tégories. Nous distinguons ~:
a été avons
proposé classées
pour remédier aux suivant deux ca-
,&
- les techniques de "balayage ligne par ligne", basées essenriellemeot sur le codage du contour dans une matrice représentant la surface de visualisation : on raisonne donc dans l'espace image ; - les techniques de "suivi de contour" ,, pour lesquelles de la tache est réalisé à partir d'une description structurée tour : tous les calculs se font dans l'espace utilisateur.
3.3.2 3.3.2.1
On peut
le remplissage de son con-
Nous trouvons
Le problème
par
lignes utilisent tous une mémoire le codage et le remplissage.
Si nous appliquons l'algorithme de parité sur le contour quantifié dans la matrice image, on obtient des résultats erronés 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'intérieur ou à l'extérieur de la tache) : points
successifs
quantification (3).
en trois
classes
:
dans cette
classe
deux algorithmes
:
la quantificade balayage,
2- _______-________-______________ Inversions successives de l'image Dans cette solution, définie par MARTINEZ, CUARTINEZ 822, la quantification d'une~arête s'accompagne d'une inversion des points situés à droite. La quanrification ayant lieu au cours du remplissage la perte d'information demeure sans conséquence (voir figure 3.12).
sur (2)
Figure
Nous allons exposer les différentés techniques qui pallient larités dans le cadre des taches polygonales, et la généralisation layage ligne par ligne aux taches quelconques.
existant
. Celui d'ACKLAND et "ESTE,
:
- la quantification engendre souvent plusieurs la même ligne (1) - superposition d'arêtes, très voisines après - certains sommets qui conserve*t le contexte
algorithmes
. Celui de LUCAS,
- z~tidutin de balayage s'effectuent
les
Chaque arête est engendrée point par point dans une matrice image, mis la perte d'information est compensée par un codage qui indique les cbangewnts de contexte. Fuis on applique l'algorithme de parité.
- LE BALAYAGE LIGNE PAR LIGNE
Les algorithmes d'image dans laquelle
regrouper
ces singudu ba-
3-
3.12:
Remplissage la mémoire.
d'un
triangle
par
inversions
successives
de
R~~l~s~~g~~lia~~ ea._liane_bl~_conro~~-e~~~~~~~~~-~~~~~-~~~~~~~~ en ménoire-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 développé dans
Comparaison
des algorithmes
Si les algorithmes de LUCAS ef de ACKLAND et WESTE sont similaires, le comparaison de leur complexité pratique permet de constater que la méthods 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'opérations (te~ts,,!~! accès tableau en particulier). Cependant, si ce codage du contour améliora@ la vitesse d'exécution, elle détériore l'aspect du contour et entraîne de.z?j effets désastreux au niveau de l'esthétique (problèmes de raccordements ‘k ,ivz8 ~, entre les taches par exemple). 'Y; Le principal inconvénient de l'algorithme de MARTINEZ concerne le grand nombre de points traités inutilement. MARTINE2 argue dans GfARTINEZ SD c(u'une réalisation câblée, pour laquelle l'opération d'inversion est quasi-instantanée fait disparaître cet inconvénient.
',_ ~, ~:,
2. L’atgoh.ithme
:
Les difficultés rier
a- Segments le segment
de LUCAS rencontrées
sont
surmontées
horizontaux : on utilise un code mais ne changeant pas le contexte
b- Sommet CO-~ à deux côtés situés passant par ce sommet : code impliquant tien du contexte (code 2) ;
de la fasan disant (code
suivante
qu'il 2) ;
:
faut
colo-
>l :>, _I
;,‘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
UPM:=V(LI
2
c- Recouvrements : dus soit au croisement de deux côtés, soit précision moindre de la projection. Si ce nombre de recouvrements modifier le contexte, sinon ne pas le changer. noter
Segments horizontaux que les changements
de depaU
$ c .$ ! du même côté de l'horizontale un coloriage mais pas de modifica-?i,~! :!.
LIlhz&
d-
CôZéé hohizontauxl
créés par l'approximation d'ordonnée (code 1) :
point
par
6L%
à la est
point
lNTERIEUR:=,jaux; ~I:=XMIN~I Lia!uL
j&&&YhbU
&i&
INTERIEUR:=7 INTERIEUR.; Iht4GEII,Jl:=COULEUR &,on L'algorithme
de LUCAS qui
suit
traite
ces difficultés.
&?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
~0%)
Les singularités à surmxtter - les segments horizontaux, - les extréma, - les recouvrements, etc...
.,
L'idée
& lYPi%fYl *u (Y-Y81 abt~ déb" 'méme Y1 0 ZMAGElX,Yl#J &i& &bwn debut (nouuo! Y) ZMAGEIX,Yi:=l& YQREC:=Y
point
&
a
2 suton
taux
Liz
début (pas de phob&Sme 6.i on 6e deplwz CUMUL:=DELTAY/Z; &?&Z:=l m J j~&!& DELTAY r(aihe
en y1
Soient (xp,yp) courant. Soir
1);
IMAGE(*,*)
&l oi-
ZMAGElX,Yl=J
ti
le codage par rapport
:
se fait pas à pas en analysant la posiau point courant qui vient d'être cal-
coordonnées
la matrice
Les variations des ordonnées et les extréms.
du point
image
précédent
initialisée
permet
2 a*non
et kc,yc)
de détecter
les
deux codes : les changements de contexte, les points du contour qui n'indiquent
de la codification
sont
les
celles
du
à "0".
Un seul code peur suffire, mais comme dans 'dESTE la tache obtenue est légèrement déformée, blèmes de raccordement. Les règles
ZMAGE(X,Yi:=l&
les
Nous utiliserons - "1" pour coder - "2" pour coder ment de contexte.
Y:=Y+YZNCR ; CUMUL:=CUMUL+DELTA!4; & CUMULS7ELTAY atohb début CUMUL:=CUMUL-DELTAY; X:=X+XZNCR
sont
:
Pour chaque contour, tion du point précédent culé.
ZMAGE(X,YI:=Z;
ZMAGEfX,Y)=J
définie par un ensemble de contours être décrit de deux fawns différenprimitives d'affichage comme les segsait par la liste ordonnée des points nous avons une structure d'anneaux.
Nous généralisons les algorithmes de LUCAS et de ACKLAND et VESTE en codant les points engendrés par le contour dans une matrice image puis en appliquant l'algorithme du contrôle de parité.
X: =XtXZNCR ; CUJdUL:=CUMUL+UELTAY; & CUMULbUELTAX CVJU debut CUMUL:=CUMUL-UELTAX: Y:=YtYlNCR
&y& bimn
Nous supposons que la tache est ,,on polygonaux. Chaque contour peut ces : soit par la liste ordonnée de ments de droite, les arcs de cercle, qui le constituent. C'est-à-dire que
segments
horizon-
pas de change-
l'algorithme d'ACKLAND et ce qui engendre des pro-
suivantes
:
JI On note
8 l'opération
IMAGE(x,y)B
Code défini
par
la table
qui
suit
:
85
1- yp = yc (plage IMAGE
de points
horizontaux)
(xc,yc):=IMAGE~xc,yc)Bî
2-
yp
3-
yp>yc (courbe décroissante) IMAGE(xp,yp):=IMAGE(xp,yp)@l IMAGE(xc,yc):=IMAGE(xc,yc)82
La codification rétrograde du point précédent lorsque croît ainsi que l'opération 8, permettent d6 résoudre les aux extrema. L'opération B supprime également les erreurs les recouvrements (voir figure 3.13).
la courbe problèmes engendrées
dédûs par
. Contour EXEMPLE : Illustration algorithme
(
izon
3.3.2.4
Remarque
3.13
:
Codage
du contour.
tache
non polygonale
par
notre
Conceushn
Les méthodes chapitre suivant
:
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 différents, il faut coder le segment (dernier point, premier point). Le remplissage proprement dit est réalisé en parcourant ligne gne la matrice codée IMAGE et en utilisant le contrôle de parité Algorithme de LUCAS).
du remplissage d'une de codage du contour.
correct
En conclusion, le principal reproche que l'on puisse faire aux algorithmes de balayage par ligne concerne la nécessité de disposer d'une mémoire booléenne de travail. Nous devons nuancer cet argument. D'une part, il est possible de travailler directement dans la mémoire de trame du sy"thétiseur câblé si les taches ne se chevauchent pas. D'autre part, le prix de revient des composants va sans cesse décroissant.
cc, reca""reme"ts Figure
-
. Rewlissage
et singularités
par (voir
li-
3.3.3 3.3.3.1
-‘LE -
SUIVI Le
de suivi pallient
de contour que nous cet handicap.
allons
dans
le
DE CONTOUR
ptincipé
Il s'agit d'utiliser une description structurée de différencier les bords gauches des bords droits. déplaçant le long de ces bords les extrémités d'un permet de peindre l'intérieur (voir figure 3.14).
Figure
développer
3.14:
Affichage
par
suivi.de
contour.
du contour permettant On remplit la tache en segment de droite qui
87
On travaille ici uniquement ge on ne sort pas de la tache. 3.3.3.2
-
Le ~~empC~66age
des
dans
taches
l'espace
utilisateur
La mémoire nécessaire .omplexité des tris est
et au remplissa-
Nous cmsfatons saire pour contenir cri de cette liste
po~ygoi,a&a
rithue*
Deux variantes existent. La première consiste à calculer et à ordonner toutes les intersections du contour avec les lignes de balayage avant le remplissage : c'est l'algorithme I!X ptésenté par NEWMAI et SPRODILdans
L'algorithme
1.
Pour
de ce côté enregistre
YX
chaque arête du polygone, on calcule toutes les intersections avec les lignes de balayage. A chaque calcul d'intersection,~ ses coordonnées (~,y) dans une liste d'intersections.
2. On trie la liste (~,,y,) si et seulement
d'intersections de telle facon si (y,>~2 ou (~,=y2 et X~<X~)).
3. On effectue le remplissage ligne de balayage y les segments la liste k=nbre d'intersectionsl2). Pour éviter les arêtes consécutives), données des sommets
ligne par ligne ((x2,-,,y)(x,k,y))
erreurs dûes aux singularités NEWMAN et SPROULLpréconisent d'une demi unité comme suit
que
en affichant (où pour
Soients nbl le nombre de lignes de balayage coupant le contour, nbam le nombre moyen d'arêtes qui coupent chaque ligne (nbam.2 si le contour est convexe) et nba le nombre d'arêtes.
des polygones importants, la mdmoire nécesdes intersections et le temps passé pour le importants et coûteux. Aussi, d*autres algo-
SvS*tSgSuX.
de suivi
de contour
Pour chaque ligne, l'algorithme est le suivant 1. Détermination de l'ensemble des arêtes qui 2. Calcul des intersections ; 3. Tri des intersections ; 4. Affichage des segments horisontaux.
: coupent
la ligne
;
. Pour éviter de refaire tous les calculs à chaque ligne, il est intéressant de tirer parti de la cohérence du polygone qui existe entre deux lignes consécutives. Si Si est l'ensemble des arêtes du contour qui coupent la ligne i alors Ei+,=Ei-
:
:
que pour la liste deviennent
et la Log nbam)).
On remarque dans l'algorithme YX qu'à un moment donné nous n'avons besoin-de connaître que les intersections des arêtes 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!arêtes. La quantification des arêtes se fait alors ligne par ligne au fur et à mesure du remplissage.
on
pour chaque l'ensemble de
plUtY
2- L'algorithme
préc&de
(segments horizontaux, de translater les or-
= s
Complexité
(~,,y,)
So*t
est proportionnelle à (nba+nbl*nbam) en 0 ((nbl*nbam)Log(nbl*nbam)+nbl(nbam
W?tes qui finissent la ligne i+l )
sur
la ligne
Si xi est l'abscisse de l'intersection Xi+, =Xi + Dxy où Dxy est l'accroissement les
deux
lignes
qui
conrnencent
d'une arête avec la ligne des abscisses de l'arête
i,
sur
alors entre
i et i+l.
Nous utilisons deux structures de données gorithme. Pour chaque ligne de balayage qui tuons la liste des arêtes orientées vers le ci : c'est la structure du contour. Au cours blissons la liste Si des arêtes qui coupent en les ordonnant selon l'ordre croissant des section.
reurs
i)+{arêres
. Mais les problèmes dûs aux singularités se produisent quand se trouvent sur la
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 :
- deux arêtes consécutives (ligne i, de la figure 3.15) - certaines arêtes horizontales (ligne i2 et i3 de la figure
Des er-
3.15).
----
-_--__--
-
___ -__--------__ _ _ _ - _- - - - - - -
--
__-----
i2
: 3 intersections
?
i,
: 3 intersections
?
i3
: 4 intersections
1
vide,sinon la TLISTE(y)=u : liste liste des arêtes qui commencent sur la ligne y est égale à {k,,k2,..,kmI
ligne
i-\ Figure
3.15.:
Singularités contour.
rencontrées
par
l'algorithme
de suivi
de . Liste
Pour y remédier, nous proposons de supprimer les arêtes horizontales de la liste des arêtes et de supprimer de la liste Ei les arêtes qui finissent sur la ligne courante i cmnme suit : i-l devient
i-l
I
t+,
,T
Re,,,pLhaage V&buX
Si aucune des arêtes du contour ne se croise, nous pouvons supprimer le tri de la liste E. en ordonnant dans la structure du contour les arête dans l'ordre croissa:t des abscisses de leur première extrémité et à abscisses égales selon l'ordre croissant des Dxy. L'ajout d'une arête dan la liste Ri deviendra alors une insertion qui respectera cet ordre. . Mise
en oswrs
: de suivi
de contour
:
. 4' contour de la tache est formé d'un ensemble de polygones quelccn ques decrits par les suites ordonnées de leurs sormnets. Nous disposons d'un tableau T(*) d'entiers contenant les coordonnées des somnets où pour chaque polygone la liste des sommets se termine par la valeur NIL. La variable N représente le nombre d'éléments contenus dans T(*). Liste
des arêtes
:
Chaque arête Ak sera définie par son abscisse née fin Ayf(k) et son accroissement des abscisses nées Dxy(k)(réel). qui
Pour chaque ligne de balayage y commencent cocms suit :
y, nous
disposons
début Axa(k), son ordon par rapport aux ordonde la liste
des arêtes
qui
coupent
la
ligne
de balayage
courante
Les numéros des Nbai arêtes coupant la ligne y seront contenus tableau d'entiers Ei(*) et les abscisses des points d'intersection mémorisées dans le tableau de réels INTER(*). L'algorithme
i+l is
Pour réaliser la mise en oeuvre de l'algorithme nous utilisons les strwtures de données suivantes
des arêtes
peut SUIVI
cotititionde
RempRh6age; -FiPI
IIE
alors
s'écrire
CONTUUR la&Ate
:
lN,Tl*1:titil des
tities;
: dans le seront
Synlhèse d’imoge
: Algorithmes
él&enraires
91
. CI&?,‘L eistes (Ei,INTERI é -Nbai:=O ; CO nombm j:=TLZSTE(g;
d“v&es
coupant
ti
pigne
de bahzyage
-~q"r;N~,
Fin:=&; e &
EilNbail :=j;' ZMER~Nbai.l:=Axdlj); j:=LZSTEljl;
~. 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
goo"
w31on -
F&I ci&; &
ûxylkl:=(X6-XdlllYd-Y61; Axdlkl:=X6 ; Ayb(kl:=Yd;
L:=Yd; Uxy(kJ:=IXd-Y6l/iY6-Ydl,
h?L.
Nous parcourons ordonnées. Les autres suit :
_
les lignes de balayage selon l'ordre modules s'écrivent par conséquent
. Première ligne de balayage . Ligne de balayage suivante Dernière ligne de balayage
: y:=YMX; : y:=y-1; : YGYti;
décroissant de la facon
des qui
-Fin @ .C&&des.intenaect&na 7 -poWr k:=l jLLbpLL'd F&;
Nbai 6”e
ZMERlk~:=INTER~kl+UrylE~lk~J;
40
92
. Ajou2.a Lu atéXed qui u.%iLtd -j:=TLISTE(yl ; Tant ue j#O aaine !Bd--
Fh
comencent
AWL -k
P*gW.
Y 1.
Le phobeème
Il s'agit de remplir un ensemble que le résultat final respecte l'ordre d'elle (voir figure 3.16).
Nbai:=Nbti+l; E*fNbaiI:=j; INTERINbail:=Axd[jl; j:=LISTEljl;
de taches polygonales de telle sorte des priorités attribuées à chacune
a$;
Voici
un exemple
de tache
engendrée
par
la méthode
du suivi
de ccntou@l~ Figure
3.16:
La première suivant l'ordre
(1)
3- Comparaison
L'ensemble
solution consiste des priorités :
(2)
La seconde solution canément et ligne par
des algorithmes
des taches
et leurs
à remplir
priorités
chaque
(3) effectue le remplissage ligne en respectant l'ordre
tache
d'affichage une par une en
(4) de toutes les des priorités
taches :
siml-
Soient nbl le nombre de lignes de balayage qui coupent le confou polygonal, nbsm le nombre moyen d’arêtes qui coupent chaque ligne de balaya-~ ge (nbam=Z si le contour est convexe) et nba le nombre d'arêtes. La mémoire (nba+nbl*nbam), (nbatnblmbam).
nécessaire au lieu
Pour d'être
l'algorithme proportionnelle
La complexité du tri des intersections +nbl(nbam Log(nbam))) pour l'algorithme pour notre version.
YX e8t proportionnelle à en ce qui nous concerne
à
est enO((nbl*nbam)Log(nhl*nbam# YX et en O(nbl(nbam Log(nbam)))
Cependant, la complexité de l'algorithme YX peut être améliorée si pour chaque ligne de balayage le tri et l'affichage sont effectués en parallèle. D'autre part, la complexité pratique des tris exécutés dans notz solution est inférieure à la complexité théorique. En effet, la liste g. n'est plus ordonnée uniquement lorsque l'on ajoute une arête ou bien q& deux arêtes se sont croisées. Comme nbam n'est pas très 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 mêmes strtxtures de données que prdcédemment (3.3.3.2) nous constituons pour chaque ligne de balayage la liste ordom& des arêtes 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 résolvant les priorités d'affichage des taches. pour ce faire, nous devons attribuer à chaque arête son numéro de Priorité correspondant. Dans le cas particulier du remplissage simultané d'un ensemble de taches contigües (mêmes niveaux de priorité), E. SECHSR a démntré dans <SECHER 83, que la complexité obtenue dtair plus avantageuse que celle *ngendrée par le remplissage successif de chaque tache par l'algorithme de
95
94
suivi
de
3.3.3.4
contour.
-
sage
Le hempecd
_.;
i:,,,~., 1,
de .tmhes non polygonaLes
Nous supposons que les contours un ensemble de primitives d'affichage . . . ).
de la tache B remplir (segment de droite,
sont arcs
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
La génération de la tache doit se faire en une ordonnées décroissantes. Pour cela, **us découpons semble de bords gauches et droits appelés parois. portion de contour monotone en Y et comprise entre point de naissance, et un minimm local, ou point
début
décrits p& de cercle, '1
3.17).
primitives
sens de parcours
a) Liste
des parois
orientées
le bas
vers
:
Conrme pour l'algorithme de suivi de contour développé pour les taches polygonales (chapitre 3.3.3.2), le remplissage s'effectue ligne par ligne en tenant parti de la cohérence entre deux lignes de balayage consécutives pour calculer les intersections et la liste des parois qui coupent la ligne. Les singularités sont surmontées de la même manière.
4 ----___-
-- ---__ t
+
f poim de naissance
*
Description
c
Cependant,
composition
3.17.:
nous
pouvons
t PPar.":
t
G3 B Figure
b) Structures
du contour envisager
deux
et d'arbre
:
de l'anneau
":~.,s,,,
1: paroi 0: paroi
en parois. facons
d'anneau
de structurer
inverse directe
le contour
- la première méthode est similaire à celle développée au chapitre 3.3.3.2.' On constitue ligne par ligne la liste des primitives orientées vers le bas qui y commence*t (voir figure 3.18.a). - la secbnde méthode. préconisée par GOUEIGNOUX tours à l'aide de structures d'anneaux et d'arbres. description d'une composante co~exe découpée en une de cercle. Pour chaque an,eau, l'arbre adresse dans points de naissance de même abscisse l'ensemble des cent. (voir figure 3.18.b).
et al. Chaque suite l'anneau parois
décrit les CO*anneau est la de droites et pour tous qui y comme*-
R y2
Figure
3.18.:
Structures
du C*"~OU~.
pointeur paire 2
Pour chacune des deux structures générales, les parois sont décomposées en sous-parois, c'est-à-dire en primitives élémentaires d'affichage. Les segments de droite et les arcs de cercle sont suffisants pour décrire la Plupart des C**~OU~S (voir "méthodologie de décomposition des courbes évoluées" dans <SIC0 8D). Le calcul des points d'intersection des primitives de balayage s'effectue de haut en bas. Celui-ci peut algorithmes de génération de courbes de BRESENMM en seul point significatif par ligne, Le contexte qu'il que pas est différent selon les primitives (contexte vant l'octant, expressions récurrentes). Les arcs de sés en quadrant pour éviter les réinitialisations au
avec chaque ligne se~faire à l'aide des ne conservant qu'un faut mémoriser à cha: incrément en X suicercle seront décompocours de la généra-
tien réduisant par là même la raille du contexte. Lors de cette décomposi,,v ,$ tien, les ercs obtenus seront orientés vers le bas, came les segments de ?F droite (voir figure 3.19.).
sommet
hauteur
Pigure
Figure
3.19.:
Décomposition
d'un
arc
de cercle
par
quadrant.
]ligne
Les programmes
base f
3.20.:
Définition
d'une
ligne
d'écriture
écart
entre
ligne
d'écriture
detix
lignes
d'écriture.
L'ensemble des bords gauches et l'ensemble des bords droits formés 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 pmbLème Nous désirons inscrire un texte dans un polygone quelconque. Nous rencontrons ce problème chaque fois que nous écrivons un texte dans un cartouche en dessin industriel par exemple,,ou dans une bulle en bande dessinée, etc... Exemple :
Figure
3.21.:
Définition
des intervalles
horizontaux.
Sur chaque ligne d'écriture, le polygone engendre également des intervalles d'écritures dans lesquels ~US pourrons insérer le texte (voir figure 3.22). NOUS pouvons faire deux hypothèses : soit les caractères sont strictement contenus par le polygone (Figure 22.a), soit les caractères Peuvent couper le contour (Figure 22.b). La seconde hypothèse est inréresSante 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 caractères choisie (vair figure 3.20.).
définie selon
par sa base la taille des
L.a) Les caractères
sont
strictement
intervalle inclus
d'écriture
dans le polygone.
98
b) Les caractères Figure 3. L'ia?
3.22.:
peuvent Définition
couper
le contour.
des intervalles
d'écriture.
et e'alT@.tthme
Pour chaque ligne d'écriture, l'ensemble des intervalles d'écriture est obtenu en réalisant soit l'intersection des listes d'intervalles horizontaux formés 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 première hypothèse, soit l'union de ces mêmes 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 (mêmes structures de données et même 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 consécutives prises deux à deux. dans
Différentes stratégies peuvent les intervalles d'écriture :
Inscrire le texte ^^1^__,1^_ ^_ ^ *_....*.._-
au fur 1.---..-
être
envisagées
pour
l'écriture
et à mesure que les lignes L...L .- _.~~_. ~.L -,?.?-LI
d'écriture "~ oo&
du texte sont fo""sr-
. -LLnCC. ie texte en rec0m**ça"t le même processus, p U~S redéfinir une nouvelle taille des caractères 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 lés et si ce dernier peut y être entièrement contenu. Sinon une nouvelle taille des caractères et un nouvel écart, puis pKOCeSS"S. La première solution est la plus avantageuse criptible a priori. L'algorithme général suivant
si tout réalise
sont calcuon redéfinit on réitère le
le texte est inscette méthode :
sont
Les algorithmes d'union développ& au chapitre
Nous donnons une version du HP 9345 qui permet d'écrire contour polygonal quelconque.
et d'intersection 4.
de deux listes
d'intervalles
de cet algorithme programmé dans un texte strictement a l*intérieur
le BASIC d'un
Les structures de données utilisées pour décrire le contour polygoaal, la liste des arêtes et la liste des points d'intersection sur la ligne de balayage, sont identiques à celles employées par l'algorithme de remplissage par "suivi de contour" (chapitre 3.3.3.2 (2)).
IDI
.
Synrhèse
dïmage
: Rlgorirhmes
éKmenraires
103
105
107
NOUS avons exposé deux approches générales utilisées pour le remplissage des taches polygonales. La première raisonne a partir du codage du contour dans une matrice de points. La seconde urilise une représentation srée du contour pour effectuer le remplissage par suivi du contour. Les algorithmes de remplissage inconvénients suivants :
par
codage
- mémoire d'image supplémentaire, - raisonnement effectué sur la surface tache (calculs supplémentaires), - génération simultanée d'un ensemble impassible. Par contre, ges suivants :
les
algorithmes
de suivi
du contour
du rectangle de taches de contour
présentent
les
circonscrit qui
à la
se chevauchent
possèdent
les
avanta-
- peu de mémoire supplémentaire (proportionnelle au nombre d'arêtes), - on ne travaille que sur Fintérieur de la tache, - ils sonf généralisables 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
3.4. Décomposition 3.4.1
-
des taches polygonales en éléments simples
3.4.2
-
NOUVEL
La tache où les arêtes
INTRODUCTION
Pour le remplissage des taches polygonales, une autre approche consis-,, te à décomposer le contour polygonal en un ensemble de régions cohérentes formées de trapèzes ou de triangles (vair figure 3.23.) puis à appliquer sur chaque région &lémentaire un algorithme de r.emplissage très simple.
idées tions
f -
Régions
cohérentes
d'un
contour
NOUS avons montré que, après la décomposition en triangles d'un palygone quelconque, la complexité des algorithmes de remplissage de taches appliqués sur cet ensemble, demeure dans la plupart des cas (convexité, nbam=Z,...) équivalente ou supérieure à la complexité de ces mêmes algorithmes employés sur la tache polygonale initiale (voir CHEGRON 82b>) . Pour les cas particuliers où ceci n'est plus vérifié, la complexité du découpage du polygone étant similaire à celle des techniques de remplissa& la décomposition du polygone en figures élémentaires ne réduit pas la complexité initiale du remplissage. décomposition, qui demeure
de contours
polygonaux
quelconques
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. se décompose
en deux parties
:
polygonal.
les différences qui existent entre les méthodes proposées, résident essentiellementdans l'ordre par lequel les régions élémentaires sont remplies (glissement sur les contours, tri des arêtes suivant les ordonnées) (voir
Un autre inconvénient de la gne par ligne de la tache initiale mission de l'image en télévision.
est formée d'un ensemble peuvent se croiser.
Ln mé.thie
L'algorithme 3.23.:
DE UECOMPOSITlON
Notre idée 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 arêtes des contours. 3.4.2.
Figure
ALGORITHME
109
de roches
est la perte du codage liintéressant pour la trans-
La décomposition ne peut devenir avantageuse que dans la mesure où les algorithmes de remplissage des trapèzes ou des triangles sont réalisés de fawn clablée ou micro-programmée (voir <MARTINEZ 822 et
Ière partie : tri des 2 N abscisses de données Q, contiendra cette séquence.
en ordre
croissant.
Une structure
2ème partie : exploration de cette séquencê Q obtenue en commençant par la plus petite abscisse. Celle-ci est stockée dans une structure intermédiaire R, réduite ici à un élé&nt (c'est bien sûr l'abscisse début d'un segment SI. Puis on passe à l'abscisse suiiranre dans la séquence 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 insérer tion dans Q.
début (soit x0): on calcule les ordonnées Desh droite x-x0 avec les segments qu'elle renconvertical. On insère le segment concerné dans Si ce segment coupe celui au-dessus et aul(es) abscisse(s) d(es) point(s) d'intersec-
. g c'est une abscisse fin de ce segment dans R se coupëü? tion dans Q. Enlever le segment
: si les segments au-dessus et au-dessous alors insérer l'abscisse de l'intersecde R.
. g c'est l'abscisse d'une intersection, il faut échanger les positions des segments concernés et vérifier si après cet échange les segments nouvellement adjacents dans R se coupent. On insère les abscisses des points d'intersection dans Q. . 2
Q est
vide
alors
fin
;
110
Synihèse dïmage
D
Figure
Exemple 3.24.: et a1.79>).
: A Igorirhmes éiémenmires
Ii
BENTLEY et OTTMAN (tiré
3.4.2.2
cnmrmnes
- LLxWAation
à plus
de L'atgokLthme
La détermination de,s régions mités des arêtes non horizontales
application,
structure
R, trois
les ordonnées déde BENTLEY et OTTMAN cette
de points
horizontal
se prdsentent
Les modifications suivantes :
à apporter
la
ligne
:
horizontale
:
,comme dan& & dwtième de BENTLEY et OTTMAN
ptie
FiJl on obtient
. Décomposition tri qui
des extrépermettra
On calcule avec la ligne bords gauches
la structure
en éléments
simples
R). :
les abscisses des intersections des arêtes appartenant;à horizontale suivante. Nous obtenons alors un ensemble de et droits suivant l’ordre horizontal :
ligne
courante
ligne
suivante
:
- Décomposition à l’algorithme
module
.taaLtti te po& de 1’atgotihme T en sortie,
1. début d’arête, 2. fin d’arête, 3. point d’intersection. les
chaque
. Obtenir
dis-
de BENTLEY et OTTM4N
élémentaires débute par le suivant les Y décroissants.
types
difficulté
de deux segments.
La structure R induit sur les arêtes un ordre de distinguer les bords gauches des bords droits. Dans la
de Etudions
- segments horizontaux : dans notre car nous les supprimons ; - intersections
de roches
L
de traitement.par
En ce qui nous concerne, nous raisonnerons suivant croissantes. Mais il faut noter que dans l’algorithme des difficultés apparaissent dans deux cas : paraît
Remplissage
de BENTLEY et OTTNAN sont
- dans le parcours de la st~cture Q, nous regroupons l’étude des points appartenant à la m%w ligne horizontale (c’est-à-dire de mêmes ordonnées). Pour chacune des lignes horizontales où se produit un ou plusieurs changements, nous obtenons la liste ordonnée des arêtes dans l’ordre croissant des abscisses des points d’intersection (structure R) ;
en trapèzes
On extrait de R les arêtes pondent aux points d’intersection suivante. - Décomposition
en triangles
: deux
par deux dont les extrémités sur la ligne courante et sur
corresla ligne
:
On fait la même chose que précéderment, puis aucune des extrémités n’est comrmne, on décoqose triangles :
pour chaque le trapè.e
couple, si en deux
R
Complexité
théorique
:
ta méthode possède une complexité en OMogN + k LogN)! 2.N ordonnées inclus, où k est le nombre total d’inrersectuans. En terme d’appels à la fonction droite” le coût est en O(N+k). 3.4.3
* intersection
au point
I :
raît
’
3.5.1
pas d’i”tersectio”: ..“Q-)& .h. /
~
D’autre part, dans la structure R, les arêtes possédant le même point d’intersection avec la ligne horizontale courante seront ordonnées suivant l’ordre croissant de leurs pentes (les arêtes étant orientées vers le bas).
!
Exemple
: Décomposition
d’une
colinéarité
COUUtUllle
tache
polygonale
A8 ---_._----
. L’efficacité pas a priori
EC -.-B a -------L__ CD _----_-
_%
0 -----__
Y
:
de
nous pouvons
faire
remarques
algorithmes existants, cette méthode permet de désimples, des polygones quelconques admettant des arêégalement des trous et des contours disjoints. Si se croisent, nous pouvons simplifier les calculs (pas de segments de droite).
de l’approche du remplissage par décomposition par rapport aux approches directes.
n’appa-
quelconque
:
- LE HACHURAFE VERTICAL OU HORZZUMAI
Le problème du hachurage sage par la méthode du suivi
1 1
horizontal de contour.
est
équivalent
à celui
du remplis-
La cohérence qui existe entre deux lignes de hachurages consécutives est la suivante: soit Ei l’ensemble des arêtes qui cou ent la ligne i, alors Ei+, -E.+{arêtes qux coancent dans la bande fligne i,ligne i+g(arêtes qui ‘finissent dans ]ligne i, ligne i+l]}.
zantal
D’autre part, en inversant
Exemples
*c -_-_--
deux
segments
les
1 I 3.5. Le hachurage de taches polygonales
\
COUll”Ull~S
conclure,
. Par rapport aux composer en éléments tes qui se coupent et aucune des arêtes ne de calcul d’intersection
1
k
de deux
sur
- CUNCLUSZUN Pour
Mais le bon fonctionnement de l’algorithme nécessite une définition précise de l’intersection encre deux arêtes. Deux arêtes se coupent au point 1 si elles ne sont pas colinéaires et si aucune des extrémités n’est cormne :
“intersection
tri
le hachurage vertical est identique au hachurage le rôle des abscisses et des ordonnées.
de hachurage : (grisés .!: 3% g+p$$?& ::::::::::::::.
obtenus
avec
des cellules
3x3)
hari-
3.5.2
HACHURAGE OBLIQJIE DE CONTOURS POLYGONAUX
3.5.2.1
- zvLt.wduotion
Une arête commence (ou finit) figure 26) si son extrémité début problème général de l'appartenance
Puisque nous savons hachurer horizontalement, nous pouvons envisager de nous ramener à ce problème en opérant 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
G = angle des lignes hachurage
dans la bande jligne i-1,ligne (ou fin) appartient à ce plan d'un point à un plan.
Soit a la pente des lignes de hachurage. Chaque ligne i est caractérisée par l'équation y=ax+y. où y.=conseante. Si (x ,y ) sont les caardonnées d'un point P, la drotte delpente a passant p.k 'ce poinr~est définie 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.
Y P
de
y = ax + YP
P (Xl,Yl)
= ax + yi
YP Figure
3.25.:
Rotations
du contour.
x
=i
Cette méthode préconisée par BRASEL et FEGEAS (MASEL-FEGEAS 79>) demeure simple dans sa logique mais n'apparaît pas optimale car nous opérons deux rotations successives. A l'aide de la technique du suivi de contour, notre idée est de conserver le schéma général utilisé pour le hachurage horizontal sans avoir recours aux rotations successives.
1. m pent
Figure
3.27.:
Définition d'un point.
d'une
ligne
de hachurage
Soit un contour polygonal défini par la liste mets et a la pente des lignes de hachurage. Tout par la valeur ys donnée par l'équation :: ys-y'-% coordonnées de s.
:
Le problème à résoudre est chaque ligne de hachurage.
de connaitre
i] (voir : c'est le
l'ensemble
des arêtes
qui
et position
relative
ordonnée S de ses n sompoint sSS est caractérisé où (~',y') sont les
cou-
Soit i la ligne de hachurage courante et (i-1) la ligne précédente. Soit Si-, l'ensemble des arêtes qui coupent la ligne (i-l). On a : Ei=Ei-,+ {arêtes qui conanerrent dans la bandelligne i-1,ligne il}{arêtes qui finissent dans la bandelligne i-1,ligne i]}.
Nous construisons une nouvelle dre décroissant des ys correspondant. (Sj,YS.).3 jrl...n Sysj (voir Ou "j-1
liste
de somwts ordonnée On obtient la suite : figure 3.28.).
suivant
'1
s5 s3
suite(sj,ysj)j=,
64 s s7
=
Figure
3.26.:
Définition
de la bande ]ligne
i-1,ligne
i]
Figure
3.28.:
Constitution
de la
liste
ordonnée
des sonrmets.
,...7
l'or-
s kl ri=
$6
est
Chaque’arête ayant pour orientée de telle facon
extrémités les sommets sd(début) que ysd>ysf (voir figure 3.29.).
et sf(fin)
::,
117
k2
Sf2 YSf,>
YSf2
x
i Figure
3.29.:
cent sant
Orientation
des arêtes.
Dans l’algorithme de remplissage par stivi de contour, nous nous déplaçons 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 cohérence qui existe entre deux lignes de hachurage consécutives. Pour ce faire, nous calculons pour chaque arête l’accroissement en X et en Y existant entre les lignes. Le premier point d’intersection est obtenu en réalisant le calcul d’intersection entre deux droites, la ligne de hachurage et la droite support de 1’ZVSte. 3.~ MiAe-en-o~euvhe On se servira des structures
de données
suivantes
:
- La liste des so-ts définie par : - s(*) : tableau servant pour la numérotation des sommets : coordonnées des sommets du contour - x(*),y(*) : intersections des droites passant par les sonmets - Ys(*) l’axe oy (droites parallèles aux lignes de hachurage). - La liste des arêtes orientées - sd(*) : sommet début (donné - sf(*) : sommet fin - a(*) : accroissement en x - b(*) : accroissement en y : accroissement en x - dax(*) : accroissement en y - day(*) sant
- Liste des arêtes qui par les sommets (ordre
commencent décroissant
: par
entre entre
le numéro
les les
du sanrmet)
lignes lignes
sur chaque des ys)
avec
ligne
de hachurage de hachurage de hachurage
pas-
qui counnen- S(*) : S(i) pointe sur la liste des arêtes k,,k2,..., respectent l’or “a re décroisau sonmet i (les sommets i=1,2 ,...nbsom des ys; correspondant ). - La liste des arêtes coupant la ligne - ‘Ai(*) : liste des arêtes - interx(*), intery : coordonnées arête *wc la ligne i.
de hachurage des intersections
i : de chaque
Comme pour l’algorithme de remplissage, le contour de la tache est constitué d’un ensemble de polygones. NOUS disposons également de 1’Ecart qui existe entre deux lignes de hachurage consécutives et de leur Pente. L’algorithme
a la
forme
HACHURAGE OBLLQUE lN,TI*ll Utbut Pnémtement:
générale
suivante
:
&:=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,
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'ahète [[%LV&[X6,Y611 &
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
; Yd:=Yd ; YAd:=Ydb : Xo:=T(I);
nA:=l 0 n" aomet yphed:=yb ~VIA) Lut& ypwzd=yaltil
; Nbd:=N&$
7&7 6"e
120
121
Hachurage LB ligne
proprement de hachurage
dit : est non finale
si
<j-cotul>y.6ti.
Ei(nbaiJ:=k: I,,&-x (~b~):=[a(k~~y(~~+b~kl’x[nal-a(kl*ycowr~/~blkl-pe~e*~~k~~; ~ntm-y [nbail :=pente*inten-w (nbail+yau%
Exemples
de hachurage
oblique
:
1
aRoh4
k:=i+l; Poti
j=k
& nbai w
Nous pouvons remarquer sur l’exemple ci-dessus que lors de l’affichage des lignes de hachurage, le passage de l’espace utilisateur (valeurs réelles) à l’espace écran (valeurs entières) produit des erreurs sur la distance comprise entre les lignes de hachuragea(erreur variant de -1 à +l mité écran). Ce problème oblique correct, tous les points
numérique ne nous permet pas d’effectuer un remplissage car conme nous le constatons sur l’exemple ci-après, de la tache ne sont pas affichés.
122
123
quelconques NOUS TefTOUVOn* le* erreur* ses sur la distance comprise les lignes de hachurage.
3.5.2.3
- le principal des sommets dont
la
I+,~S montrerons dans cOnt~~r sont généralisables géométrique.
et l'évaluation de notre algorithme de hachurage nous permet de faire la remarque suivante :
inconvénient complexité
de cette méthode est la présence demeure en 0 (nbsom.Log nbsom).
- l'inconvénient de l'algorithme était les calculs supplémentaires d'abord sur les Sonrmets du contour hachurage. Le problème des 2 solutions
est est
du tri
de hachurage oblique avec rotations effectués par les rotations successives, puis Sur les extrémités des lignes de
de connaître à partir la plus avantageuse.
de quel
critère
l'une
ou l'autre
Nacre version du hachurage oblique, fondée sur la technique du suivi de contour, s'avère la plus performante dès que le nombre de lignes de hachurage est très supérieur Su nombre d'arêtes (dès que nblh>2. nbam. nba ah nbam est le nombre moyen d'arêtes coupant une ligne de hachurage, mais cette inégalité demande à être vérifiée dans la pratique).
3.6. Conclusion De manière générale, les performances et les ressources requises par les algorithmes de remplissage ou de hachurage de taches dépendent de la complexité des contourS. Mais le critère primordial demeure leur Sdapration à la synthèse d'image dans un cadre d'application donné : faire
intensité lumineuse taches polygonales interactivité, mémoire disponible.
variable ou non,
Pour chacune des classes les remarques générales
ou constante,
d'algorithmes qui suivent.
de remplissage,
. Les algorithmes de coloriage Sont avant interactive (détermination du point intérieur,
nouS pouvons
tout utilisables de manière convexité de la tache).
. La méthode de remplissage par codage du contour nécessite la plupart du temps une mémoire d'image supplémentaire et s'adapte mal à un ensemble de taches qui se chevauchent. Cependant, sa généralisation à des contours
simple.
. Parmi ces diverses classes d'algorithmes, une méthode générale SS de la technique du suivi de contour. En effet, raisondégage : il s'agit ,,ant à partir d'une représentation structurée du contour, elle permet non seulement de réaliser le remplissage d'une tache ou d'un ensemble de taches polygonales ou non, mais encore elle s'adapte facilement Su hachurage, au découpage de taches polygonales en éléments simples et au parallélisme (voir
Co%tv&-' entr*
- ConUbn
La mise en oeuvre oblique sans rotation
e8t
s :ii
le chapitre suivant'que à certains problèmes
les principes de découpage
du Suivi de et de nature
Chapitre 4
Algorithmes de découpage et traitements de nature géométrique 4.1. Introduction Il est extrêmement fréquent que, lors de la mise en page ou d’une image, on ait besoin de ne représenter sur l’écran de la scène considérée. Lorsqu’on travaille dans le plan, le sique consiste à utiliser une fenêtre, espace rectangulaire lèles aux axe* (figure 4.1).
Figure
4.1.:
Découpage
d’une
scène
d’un dessin qu’une partie problème clasà bords paral-
par une fenêtre.
Cependant, on peut avoir besoin de faire des calculs dans le cas où l’on ne dispose plus de la facilité donnée par le parallélisme aux axes. Le problème revient alors à découper une sLène par une fenêtre constituée par un polygone convexe ou non, le nombre de ses côtds étant quelconque. De façon plus générale, nous sommes parfois amenés à comparer deux polygones quelconques et à déterminer tous les polygones résultant de leur intersection (du découpage de l’un par rapport à l’autre). Nous utilisons ce découpage en particulier dans l’algorithme d’élimination des parties cachées d’une scène tridimensionnelle.de ATHERTON et WRILER CATHERTEONmILER 77>, ou B partir de l’ensemble des faces polygonales qui la composent, nous voulons obtenir un ordre total sur un ensemble de facettes. Ce découpage peut également s’avérer utile pour la manipulation d’image. Ainsi, et suivant
selon le type de la scène que nous manipulons le résultat que nous voulons obtenir (structures
(dessin ou image) de données,
Algorithmes
126
affichage sur l’écran) le res très différentes. Dans fication des problèmes de res de nature géométrique
problème du découpage peut être traité de mani& le paragraphe suivant, nous ferons une classidécoupage en degageant les problèmes élémentai:’ inhérente à chacun d’eux.
fenêtre polygone résultant
Pour l’ensemble des traitements abordés , nous svons constaté la digparité des méthodes proposées dans la littérature, provenant de la diversité des préoccupations qui ont conduit à la résolution du problème dorme. A la lumière des chapitres précédents, nous montrerons dans le souci d’une démarche unitaire. cormnent nous avons utilisé les principes de la techoique du suivi de co”to”r pour résoudre les.problèmes de découpage.
0 polygone
1.
Découpage
d’un
Le problème est fenêtre polygonale.
nous ne raisonnerons que sur des co”to”rs être généraljsée pour des co”to”fs quelconques.
polygone
par
de calculer la Deux hypothèses
a) Si nous produisons de la notion de contour, segmenf par un polygone
simplement le problème
initial
a
4.2 Classification des problémes de découpage Dans cette classification, polygonaux, mais elle peut
127
de dlcoupage
On calcule ici l’ensemble composent le polygone résultant 2. Découpage
une fenêtre partie visible peuvent être
d’un polygone envisagées :
dans une
du dessin élémentaire
au trait sa”8 tenir est le découpage
compte d’un
:
d’une
tache
des contours (intérieurs du découpage. par “ne
fenêtre
Nous voulons ici afficher la partie remplie) dans une fenêtre polygonale. Deux solutions
peuvent
être
qui
polygonale
visible
envisagées
et extérieurs)
d’une
tache
(hachurée
ou
:
a) Déterminer le polygone résultant du découpage du polygone initial par la fenêtre (coorme en l-b). Puis hachurer ou remplir ce polygone (on se ramène au problème élémentaire du remplissage ou du hachurage d’une tache) .
seglsents
visibles
polygone
découpé polygone
On n’affiche
que les
parties
des arêtes
visibles
dans la
fenêtre.
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 synthèse d’image, le problème est de calculer le polygone résultant, situé à l’intérieur de la fenêtre qui résulte du découpage du polygone initial par celle-ci.
chant
résultant
b) Pour le hachurage, a” hachure tout que les parties visibles des lignes
parties
le polygooe de hachurage
des hachures
parties
I
initial :
en n’affi-
affichées
des hachures
“on
affichées
Algorirhmes
Le problème élémentaire (hachure) par un polygone. tial
demeure
le découpage
d'un
de droite il
Pour le remplissage proprement en n'affectant que les points
dit, on remplit tout situés à l'intérieur ensemble
P
G
le polygone inide la fenêtre :
des points
ensemble (extérieur Le problème élkkntaire rieur ou non du polygone
segment
visibles
estd e savoir si un point (comparaison point-contour).
Dans le cas du hachurage (et peut-être aussi vère nécessaire d'afficher les parties visibles menons alors au problème exposé en (1-a).
est
situé
du remplissage),s'il du contour, nous
-
s'anous ra-
Pour la première 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 méthode (b), est proportionnel à la complexité de l'image visible, il faut lui ajouter le temps de calcul du découpage proportionnel à la complexité des contours. Le problème est de savoir, dans quels cas, l'une ou l'autre des deux solutions est la plus avantageuse.
Q on obtient
PnQ,
Si q découpe
P on obtient
PnQ,
~
4.
aussi
Découpage
vouloir d'une
obtenir tache
Pn Q
P3
Si P découpe
On peut
P2
2 4
a
à l'inté-
#d piTQ 0Vd PS
0
des points non affichés à la fenêtre) a
129
de ddcoupage
QI,
Q2, Q3
Pl,'PZ, PnQ,
P4 D a3
P3, P4, P5
Pi,
PZ, P3, P4, P5 et Ql,
92,
Q3.
par une autre
Pour composer une image en deux dimensions, nous manipulons un ensemble de taches. Les taches peuvent se superposer ou se combiner, suivant certaines règles de composition. Ainsi, quand deux tâches se chevauchent, nous devons découper l'une par rapwrt à l'autre. suivant le résultat escompté :
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 fenêtre. L'appartenance d'un point ou d'un segment terminé dans ce cas, de differentes façons : - Soit en utilisant ou de découpage d'un
l'un segment
des algorithmes par un polygone.
à la fenêtre, de comparaison
peut
être
dé-
point-contour
- Soit en effectuant le remplissage ou le hachurage de la fenêtre et de la tache simultanément et en n'affichant que les points ou les parties des lignes de hachurage qui appartiennent à l'intérieur de la tache et à l'intérieur de la fenêtre. 3. Découpage Il section
d'un
polygone
s'agit de déterminer de deux polygones
par un autre
tous les quelconques.
polygones
qui
résultent
de l'inter-
Q devant
0"
P
Nous pouvons
envisager
deux
solutions
P
devant
Q
:
a) On découpe l'un des contours par le contour Ve devant, en conservant les polygones résultants nière : c'est le problème énoncé en (3).
de la tache qui se tronextérieurs & cette der-
Si Q est
devant
P an obtiendra
Pi,
P2, P3, P4, P5
Si P est
devant
Q on obtiendra
01,
Q2, Q3.
130
qui
Svnthèse
d ‘image
: Algoriihmes
Ensuite, an affiche les taches est devant avec leurs couleurs
Dans ce cas, si uns ambiguïté, tervient. nous devons Calculer le
él&enroires
extérieures appropriées. illustrée résultat
ainsi
définies
et fa tache
sur la figure ci-dessous indu déccum~e des deux taches
ambiguïté Sur l'exemple
du paragraphe (3), nous devrons déterminer 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 réaliser~le découpage de la même facon avec les autres taches de la scène qui sont en conflit. Une fois le traitement de toute la scène effectué, on affichera ce nouvel ensemble de taches. PnQ,
mais d'un
P,,
P2,
P3,
de la figure P4,
P5,
QI,
Q2,
b) On découpe les taches non plus en raisonnant sur leurs surfaces. On retrouve ici le problème ensemble de taches (voir <EDMONDS et al. 82>).
sur leurs contours, de la manipulation
Avant d'entreprendre le découpage, 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 (même chose pour les taches). 5.
Conclusion
:
Dans la classification quatre grandes classes l- Découpage Découpage Découpage Découpage
234-
des problèmes
du découpage,
mm
avons
dégagé
:
d'un polygone par une fenêtre, d'une tache par une fenêtre, 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 fenêtres, les polygones ou les taches sont rectangulaires aux bords parallèles aux axes, convexes ou quelconques, pour tirer parti dans chacun des cm de leurs propriétés intrinsèques. D'autre élémentaires
part, :
nous
avons
mentionné
l'utilisation
de trois
problèmes
comparaison d'un point et d'un contour Le découpage d'un segment de droite par un contour 3- L'intersection de deux segments de droite. l2-
La
Le tableau récapitulatif qui suit, nous redonne toutes les opérations géométriques et de découpage citées plus haut, en y ajoutant des opération6 élémentaires telles que comparaison entre deux points, encre un point et
Algorhhmes
132 in effet, un algorithme de découpage peut cambir un segment ou une droite. ner plusieurs opérations élémentaires. 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.
4.3. Comparaison d’un point et d’un contour polygonal 4.3.1
- INTROVUCTION
Le problème à résoudre est de savoir si un point est situé à l'intérieur ou à l'extéri+r d'un contour polygonal. La comparaison d'un point et d'un co,,touï est très so"vent rencontrée, en particulier, pour l'identification d'un contour ou d'une tache de manière interactive, dans le découpage d'un contour par un autre et dans certains algorithmes d'élimination de parties cachées. Nous blème en vexes de ordonnée
4.3.2
allons étudier les différents algorithmes qui résolvent ce prodifférenciant ceux qui s'appliquent uniquement aux contours conceux qui traitent les contours quelconques définis par la suite de leurs nbsom sommets si où i=l,...,nbsom (vair Table 4).
- CUMPARAISON POINT-CUtiTOUR
4.3.2.1
CONVEXE
- Itiodutin
Il existe deux méthodes qui ne traitent que des contours méthode 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 prétraitement sur le contour convexe dont le comportement est en O(Nbsorn), la comparaison effective du point et du contour convexe possède une complexité en O(Log Nbsom). 4.3.2.2
- Méthode
de SHAMUS Ivoin
h partir d'un point en N secteurs angulaires. : coordonnées polaires \*z s3
<SHAhdOS 75>)
C intérieur au polygone convexe, C est considéré cozmne l'origine
02
on divise le plan d'un système de
axe de référence 8
1
s1
Soit
w p le point
à comparer
au contour.
-
de découpage
133
134
135
Cm détermine son angle dichotomique, an détermine 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 côté de l'arête se situe le point p.
:
(xc,yc) les le tableau l'algorithme
coordonnées des angles suivant
du point intérieur polaires ordonnés :
par
au contour, et Taigle valeur croissante.
hrpahnhon POINT CONTOUK CONVEXE Début CO method e de SHAMOS 40 --$nontiehe: = aux. vxl:=xc-X[l +; vyi:=yc-yl71; v*z:=xc-w;
4.3.3
- COMPARAISON POINT-CONKXR
4.3.3.1
*
d'un
point
et d'un
contour
quelconque
de
- dénombrement d'intersections, - angles capables, - codage. Mais ces algorithmes ne surmontent pas facilement toutes les singularités (voir cas particulier de la Table 4). Pour pallier simplement ces difficultés, nous proposons un algorithme, fondé sur le raisonnement du "suivi de contour". - Mthode
du nuiui
Princiw On résoud le contrôle sonnement du remplissage figure 4.2).
a:=wlind*retll-xlindicel; b:=y[i,,dicetl)-y&fice); c:=a.yitiel+b.wL&dicel; )urod:=(a.yptb.wp-c)(a.yc+b.xc-cl; bi Pnod <=O
3%e
- ItLttodutin
Pour traiter la comparaison nombreuses méthodes existent :
4.3.3.2
Ainan
NON CONVEXE
de contou‘t
de parité pour le point de tache par la méthode
P, en utilisant le raidu suivi de contour (voir
lu:=&;
fi%-e olLA:=&;
&i & Critijue ------
Figure
:
Le principal désavantage de cette méthode tions triganométriques inverses très coûteuses
est l'utilisation de foncen temps de calcul.
Par contre, dans la mesure où nous avons un très a comparer à un CcmtO"r ccm"exe, le calcul des angles fectue une fois pour toutes, le comportement de cette O(Log Nbsmn).
grand nombre de points polaires, étant efsolution demeure en
4.2.:
Comparaison
point-contour
: "suivi
Pour ce faire, on dénombre les intersections tale située à gauche du point avec l'ensemble prenant pas en compte les arêtes horizontales la droite.
de contour".
de la demi-droite horizondes arêtes du contour en ne et celles qui finissent sur
136
Synrhèse
L'algoriebme ---------_
d’imoge
: Algorithmes
~,&,w,,oires
:
4.3.4
- CONCLUSION
Sur des contours convexes, l'algorithme profit de cette information quand le contour q,,e le "ombre d'arêtes est assez important. Des quatre solutions qui la méthode du "suivi vexes), sante : - Les singularités ou les sans calculs supplémentaires.
de SHAEy)S, tire le meilleur est utilisé plusieurs fois
traitent des co"tours de CO"~~UT" apparaît cas particuliers
sont
quelconques (no" CO"comme la plus intéressumntés
simplement
- Les contours peuvent posséder des trous (contours iatérieurs), co"tours extérieurs disjoints et des arêtes qui se croisent, ce qui rarement le cas pour les antres méthodes.
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
et
.des est
- L'bvaluatio" des divers algorithmes a montré que cette méthode s'avère la plus avantageuse car les calculs sont simples (voir
tirer
parti
de la convexité.
4.4, Découpage d’un segment de droite par un contour polygonal 4.4.1
- INTRUUUCTION
Le découpage d'un segment de droite par u" C""~OUT est essentiellement utilisé pour la production de dessin au trait. Il s'agit dans la plupart des cas, de calculer la partie visible d'une scène dans une fenêtre. La scène étant formée d'un ensemble de segments de droite, seul le type de la fenêtre déterminera l'algorithme à employer, à savoir, rectangulaire (sous entendu a"x bords parallèles aux axes), convexe ou "on CO"VBXE . NOUS allons envisager de découpage, par rapport bila" des caractéristiques
dans les paragraphes suivants, a ces trois types de fenêtre. des diverses méthodes.
les algorithmes La table 5 fait
Critique Les avantages
de la méthpde
de "suivi
de contour"
- les singularités sont traitées simplement; - le polygone peut être quelconque : en particulier se croiser et le polygone peut avoir plusieurs contours, térieurs; tecté
- on peut tirer parti deux intersections La complexité
théorique
de la convexité : on s'arrête (point situé à l'extérieur). est
e" O("bsom).
sont
mltiples
les arêtes intérieurs dès que l'on
: peuvent ou exa dé-
4.4.2 4.4.2.1
- DECOUPAGE PAR RAPPORT A UNE FENETRE RECTANG4llAlRE - Intmdutin
Le problème du découpage gulaire, est le plus souve"t
d'une scène par rencontré, pour
rapport :
à une fenêtre
recta"-
- la mise en page d'un dessin ou d'une image ; - le zoom sur une partie de la scène ; - les algorithmes d'élimination de parties cachées pour la visualisadans la méthode de tion de scènes tridimensiormelles : e" particulier WmNOCK.
le
138
. 4s méthode triviale consiste à vdrifier systématiquement si le point calcule est OU n'est pas visible. Cette méthode connue mous le nom de fmêtmge par effacement présente cependant l'inconvénient 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 fenêtre rectangulaire, la réalisation câblée de l'algorithme de SUT'dEXLAND (version dichovomique) apparaît corne la méthode la plus adaptée. Du point de vue logiciel, si un grand nombre de segments sont horizontaux ou verticaux, la méthode 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 généralisables ,pour une fenêtre COll"S*S. 4.4.2.2
- L’algonAhme
de
SUTHERLAW-SF’ROULL
La méthode proposée pour la première 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 procédé de découpage s'applique lement à des segments de droite, mais peut être généralisd B des graphiques. Le principe
est
le suivant
SPROULL parties que les essentielsymboles
:
On prolonge les bords de la fenêtre de manière à délimiter neuf régions dans l'espace utilisateur. A chacune des rdgions on associe un code binaire (4 bits), l'iotdrieur de la fenêtre étant codé par '0000' :
Pour chaque droite, le bit associé est égal à 0 pour l'ensemble des points situés dans le demi-plan, auquel appartient l'intérieur du rectansle dont le code est nul ; ce bit est égal à 1 pour l'autre demi-plan. L'algorithme de découpage consiste.alors B trouver quelle portion d'une droite est visible dans la fenêtre ; pour cela. an cosme*ce par associer aux extrémités du segment le nmdro de la région du plan dans lequel elle *e trouve.
140 4.4.2.3
- L'~go.&Zhe
de PAVLIVIS
82>
PAVLIDIS décompose egalement l'espace en 9 régions Il privilégie dans un premier temps le cas particulier à gauche, à droite, dessus ou dessous la fenêtre, et verticaux et horizontaux. Dans le cas géndral, après gnes des 4 coins de la fenêtre par rapport à la droite il vérifie si les coins consécutifs pris deux à deux tre de la droite support du segment en comparant les deux coins. Si oui (signes opposés), le segment peut fenêtre joignant les deux coins concernés.
,
c
(voir figure 4.4.). des segmenrs situés le ca8 des segments avoir calculé les sisupport du segment, sont de part et d'ausignes relatifs des couper le côté de la
0101 Figure
4.3.:
Algorithme
On distingue
trois
de découpage.
sortes
de segments
- celles dont les deux extrémités AE, CD, BF, - celles dont les deux extrémités 0000): segment IJ, - celles dont une seule extrémité segment CH.
de droite
sont
en dehors
sont
dans
(figure
4.3.):
Figure
de la fenêtre
: seg-
ment5
Le'principe - on fait
d'élimination l'intersection
est
est
alors
dans
simple
des deux codes
la fenêtre
(deux
la fenêtre
codes
(un code 0000):
:
binaires
associés
aux extrémi-
tés, - si le résultat de l'intersection est non nul, le segment est hors de fenêtre et non visible, - si le résultat est nul, on divise le segment en deux parties et on recommence à appliquer le processus jusqu'à élimination des parties cachées et'découverte d'un segment dont les codes soient tous les deux (0000) la
Cet algorithme
utilise
trois
fonctions
élémentaires
qui
sont
:
- déterminer 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 coordonnées ditions et deux décalages de bits à droite.
par ((x2+x1)/2, entières avec deux
ad-
Si cet algorithme est utilisé pour traiter des figures dans l'espace écran, où les coordonnées des points ont des valeurs entières 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
4.4.:
L'algorithme droite d'extrémités d'abscisses xmin
xmin
max
Découpage
avec
une fenêtre
de PAVLIDIS qui suit (xl,yl) et (x2,yZ) et xmax et d'ordonnées
rectangulaire.
réalise le découpage du segment par une fenêtre rectangulaire ymin et ymax.
de
143 S-dy:=yl-y2 ; dx:=wf-x2 ; dwy:=rl.yZ-yl.wZ; qx:=xmk.dy ; qX:=max.dy ; qy:=ym.k.dx ; q.Y:=ym.dx; ul:=QX-yy+&, ; uZ:=qx-qY+dxy ; u3:=Q&QY+dXy ; u4:=qX-qy+dxy 6- j:=O;
4.4.3
- DECOUPAGE PAR RAPPORT A UN CONTOUR CONVEXE
4.4.3.7
- lntnodutin
La version de SUTHESLAND peut être généralisée aux contours cmvexss (voir
mais beaucoup de cas particuliers rendent délicate (cas des segments colinéaires~avec
Nous redonnons ci-dessous cilement ces difficultés. àeojiZo yZ:=ixti.dy+dxyl/ds PIFA%~ à joa dx,dy
; ~Z:=~IG,,; et dwy;
4.4.3.2
&u3-
r2:=(ymwdw-dryl/dy inme a joun
P‘
;y2 :=ymax; dr,dy et &y;
l
*1>um; H yl:=Iumx.dy+dxylldx mtie a jouh
3
yZ:=hm.x.dy+dxy)fdx
xl:=[ym&.dx-dxy)/dy metttre à joun dx,dy
; yl:=ymk; et dsy;
fa-
82,) la représentation
d'un
point
P
autres aleorithmes dévelor>oés ici. les coordknées absolues k p0int.P
nous dans
:
(xi,yi)
E"al"on8
lo-Ai
di~&.w&
plus
un est de
-.L'idée
; xZ:=mr;
Soient Pj(j=1,2).
u4.u1<0 -&%b CO~4 et ul Aont de A&U -j:=jtl;
résoud
s, les sorawts d'un polygone convexe. Et soit Soient s,,yt,...: segment de.drol e, defioi par ses extrémités Pl et P2. Le problème calculer la partie du segment située a l'intérieur du polygone.
&
3
pour son algorithme, homogènes :
qui
x Y [l w
Le problème ; XI:=~X; dw,dy et dxy;
de PAVLIDIS
l
Pour rester cohérent avec les prendrons w=l où (~,y) représente le plan xoy.
. 20 &i
de PAVLIDIS
PAVLIDIS utilise ses coordonnées
par
a
- kegotihme
l'algorithme
sa mise les
&
les
les
coordonnées
n valeurs
si
du sommet si
tels
et (xj.yj)
celle
du point
que :
Si=det(si,pl,p2) =xi(yl-y2)+Yi(x2-x1)+w.y2-yl.x2)
(1)
i=l,Z,...n.
4-
A partir l-
de ce calcul,
nous
dégageons
les
cas suivants
Les valeurs S. sont de même signe et différentes est situé du %&ne côté du segment et le segment go"*.
2- Une des valeurs droite
passe
3- Deux d'entre
par
S. est nulle 'un sannet
et les autres sont mais reste extérieure
elles sont nulles et les autres droite passe par l'un des côtés du polygone tres côtés (convexité ).
:
de zéro : le polygone est extérieur au polyde même signe au polygone.
: la
sont de &me signes : la convexe 8.~18 couper d'au-
144 4- Une OU deux d’entre férents : la droite s‘nmsets .
elles emf nulles coupe le polygone
et les autres ont des signes difen passant par un ou deux de ses
5- Aucune des valeurs Si est nulle mais elles possèdent des signes différents : nous renconfrons alors deux changements de signe en parcourant le périmètre du polygone (comne en 4).
Les tableaux B(0..2,0..2) et C(0..2,0..2) conriennenr predères et secondes coordonnées des paires de s-ets (sk>sk+,).
respectivement les ), et (s.,s. 1 JC'
. Le tableau v(O..4) contient les signes des valeurs ui, i=l à 4, représentant les signes des extremirés du segment par rapport aux 2 aretes caupées par la droite support. (qn)n=,,Z sont les caordonnées du segment à afficher.
Soient
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 qu’ils définissent (S. peut être nulle pour l’un des sommets de l’une ou des deux paires (cas 4)?. Connaissant maintenant les deux arêtes du polygone qui coupe la droite passant par le segment (pl,p2), il faut déterminer le position relative des points pl et p2 par rapport aux deux segments Ll et L2 à partir du signe des quatre quantités : ul = det(pl,s.,s. = xl
) 3 I+l (Yj-Yj+,)+yl(xj+,-xj)+(xjYj+,-Yjxj+,)
(position
du point
u2 = d=t(p2,sj,sj+,) = x2 (Yj-Yj+,)+y2(X. (position du point
pl par rapport
li<=n+l à Ll>
,+,-xj)+(XjYj+,-YjXj+,) p2 par rappart à Ll) (2-c) à L2) -
Si nous parcourons le cantour dans le cens des aiguilles’d’une mantre, le signe de U sera négatif quand un point se situera à l’intérieur du polygone. Cette expression sera nulle si ce point appartient au cOntOur. Soit L le segment (pI,pZ) et (ql,q2) les extrémités du segment a afficher résultant du découpage de L par le polygone. L’algorithme qui suit, calcule ?,,et q2 en tenant compte des différentes configurations possibles des extremrtés p, et p2 du segment L.
. (xl,yl)
utiliser
X(l..N)
ef (xî,y2)
les structures
de données suivantes
ef Y(1. .N) contiennent sont
II) &
les coordonnées
-
k#ZI d”e
(2-d)
u4 = d=f(p2,sk,sk+,) = x2 (Y k -Y k+,)+y2(Xk+,-Xk)+(XkYk+,-YkXk+l) (position du point p2 par rapport à L2).
L’algorithme : NOUS supposons
equation
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 découpage - 2. &g--u: =v;
(2-b)
= xl (Yk-Yk+,)+y1(4+,-~)+(~Yk+,-Yk~+,) (position du point pl par rapport
; -
(2-a)
u3 = det(pl,sk,sk+,)
. Les tableaux du palygane.
,~X!i).dytYlil.dx+dxy
les coordonnées
des points
pl et p2.
: des N sommets
cztoti ul:=det uZ:=det u3:=det u4:=de*
fpl,Bif,*l, lpZ,Blt,*), (p1,812,‘), ipZ,ElZ,‘l,
CtI.*II clt,*)l c12,“)l ClZ,*ll
; 0 ; ; ;
éQ&ti
2 40
146
Algorilhma
Traitement droite mités
des
singularités
:
4.4.4 t:, / ;,'
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 extrédu segment appartient à l'une des arêtes 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 consécutifs ont un signe nul (~=V=O) nous considérons alors le segment L invisible. Sinon, si un sosmet si est de signe nul, nous prenons en compte uniquement l'arête (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
U. sont nulles alors d: polygone et L est
L : il
y a une singularité
Si une seule des valeurs U. est nulle, alors une (p) du segment L appartient aulcmfour. Dans ce cas, tre extrémité (p') par rapport à l'arête 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.).
seule des extrémités si le signe de l'auappartient l'extréce signe est négatif, est négatif, qZ=Lp'fiL
- DECOUPAGE PAR RAPPORT A UN CONTOUR f&ELCONQUE
4.4.4.1
- ?tiodu&n
Nous ne pouvons .vas aénéraliser 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 arêtes. i
si _,
q,=p, et q2=p2 car p, et p2 apparcontenu par ce polygone (convexi-
147
de découpage
Nous avons cherché à généraliser l'algorithme de PAVLIDIS pour des polygones non convexes (voir -GRON 83a>). La généralisation est possible mais complexe. En effet, nous avons montré que la mise en oeuvre du traitement des singularités est délicate et onéreuse car pour une arête (si.si+,), dès que le signe de l'un des somwts est ml (c'est-à-dire que et compte des deux vamets précédents s. s.=o 0" si+, =O) il faut tenir sfl-,,ou et des deux soumets suivants si+te$ si+3 du sommet précédent si-, ou smplement du smmet suivant si+*. Pour pallier ces difficultés, rithme de hachurage oblique sans tO"ï.
nous avons utilisé l'idée de notre algorotation par la méthode du suivi de con-
4.4.4.2
de contmt”
- L’dgodhme
Le problème par un polygone
de ?bu.&.i
est donc, de calculer non-convexe (figure
le découpage 4.6.).
d'un
segment
de droite
(entre parenthèses: signe du point p' par rapport à Lp'; sinon signe du point p' par rapporr à LP).
Figure Critiques
4.5.:
Cas particulier tour.
où une des extrémités
appartient
Figure
:
Dans la recherche des arêtes qui coupent sonnets du contour n'est pas nécessairement section) et les singularités sont surmontées devons parcourir le contour dans le sens des tation a priori).
parties=
au con-
la droite, le parcours exhaustif (quand il y a simplement. Cependant, aiguilles d'une montre
des internous (orien-
4.6.:
segment Découpage vexe.
d'un
segment
de droite
de droite
par une fenêtre
non con-
Le principe Nous considérons l'équation de la droite.passant par le segment. a et b les accroissements respectifs en x et en y du segment. Nous
ment est
raisonnons équivalent
dans le cas en inversant
où lai>-lbl. x et y.
Soit y= kx+yO l'équation de la droite données <xd,yda,, (xf,yf) où yO=yd ;.xd. Chaque sommet si YSi où ys;=yi+;,
de coordonnées
(xi,yi)
Dans l'autre passant est
par
cas,
le raisome-
le segment
caractérisé
par
Soient
de mmla valeur
figure
Chaque arête 4.7.).
est
(si,si+,)
orientée
de telle
sorts
que ysi>=ysi+,(voir
*gment
de droite
xd Figure rons
4.7.:
Modélisation
@;
du polygone
Pour déterminer l’intersection de la façon suivante :
et du segment.
du segment
avec le polygone,
nous
opé-
-FiM
L’intersection du segment ((xd,yd), (xf ,yf)) tel que xd<xf te ordonnée des segments définie par la liste des intersections la façon suivante : znte~etin
- on calcule l’ensemble des intersections du polygone avec la droite support en ordonnant cette liste, suivant l’ordre croissant des abscisses: nous obtenons ainsi, une suite de segments deux à deux, disjoints et intérieurs su polygone joignant un bord gauche à un bord droit (figure 4.8.a.). - on calcule l’ensemble des parties du segment considéré situées à l’intérieur du polygone, en faisant l’intersection de ce segment avec la suite ordonnée des segments définis,précédemment (figure 4.8.b.).
a) Liste
Figure
ordonnée
4.8.:
Le traitement
des segments
Intersection de la première
b)
du segment phase
Intersection per avec la segments. avec
se fait
du segment à découliste ordonnée des
le polygone. de la manière
suivante
:
0tbu.t ---Z'LINTER#uide
du segment
et
de
la
LAte
des
begments
avec la lisse fait de
Si le segment appartient en partie ou en totalitd arêtes du contour et si l'application le nécessite, calculer les parties du segment strictement situées gone en réalisant la différence des parties internes nées.
à une ou plusieurs il sera "dcessaire de à l'intérieur du polyet des arêtes concer-
Dans le cas particulier où le segment de droite versons le rôle des abscisses et des ordonnées.
est
Les avantages
qu'offre
cette
. comparaison avec l'ensemble exhaustive dans le cas convexe ;
méthode
sont
des arêtes
. traitement très simple des singularités tersection avec la droite support les arêtes celles qui y finissent ; qui 4.4.5 a, "on
. le contour se croisent.
peut
être
quelconque
les
vertical,
suivants
du contour
"ous'in-
disjoints,
trous,
d'inet
Figure
segment de convexe et
Dans le cas particulier de la fenêtre rectangulaire, la méthode de SUTHEKIAND (version dichotomique) est la mieux adaptde pour une réalisation câblée. Sinon, pour une réalisation programmée, l'algorithme de PA'ILIDIS, demeure le plus performant, suivant les caractéristiques de la scène (pourcentage de segmeots verticaux et horizontaux). Dans le cadre plus général, d'une fenêtre convexe ou non convexe, "oere adaptation de la technique de suivi de contour, s'avère la plus avantageuse, que ce soit au niveau de la complexité, au niveau du traitement des singularités et de 80" adaptation au parallélisme.
- l'autre
4.9.:
résultant Découpage
d'un
polygone
par
une fenêtre
polygonale.
L'un des premiers algorithmes de découpage d'un polygone qui permit d'obtenir un co"tour, fut l'algorithme de découpage d'un polygone par une droite, proposé par SUTHERLAND et HODGMAN GUTHERLAND-H0DGW.N 74>.
Nous avons dans ce chapitre, envisagé le découpage d'un en distinguant trois types de fenêtre : rectangulaire, convexe (voir tableau récapitulatif : table 5).
part, "ous avons de droite :
- la première la droite passant
polygone
arêtes
- CONCLUSION
D'autre un segment
- INT!UVUCTION
nécessairement
en supprimant du calcul qui lui sont parallèles
: C""~OUT~
4.5.1
Le problème est d'effectuer l'intersection entre un polygone et une fenêtre polygonale, de telle sorte que le résultat du découpage soit un co*tour polygonal. (figure 4.9.) fenêtre polygonale polygone dkoupé
: "on
4.5. Découpage d’un polygone par une fenêtre polygonale
exhiber,
deux facons
utilise
un point
4.5.2
et l'un
méthode consiste à calculer par le segment en ce point
possibilité
de comparer
Puis S&AMOS, <SIG.MOS 75, développa un algorithme calculant l'intersection de deux polyganes,co"vexes, basé sur le découpage du plan en 8ecteurs angulaires. Pour résoudre ce problème O'ROURKE
les
la valeur
de l'équation
de
;
coordonnées
homogènes
des points.
La seconde méthode permet d'éviter implicitement les divisions par zéro, lorsque la droite esf verticale ou horizontale. Dans la première lution, nous devons envisager explicitement ce cas particulier.
so-
- L'ALGORITHME
VE SUTHERLAND ET HOPWiN
11 s'agit de déterminer la partie des deux demi-plans définis par
d'un polygone une droite.
quelconque,
situé
dans
Le problème consiste donc à étudier, pour u" polygone, une suite de sommets s 8 pour en déduire une nouvelle suite (éventuellement vide) tous situés dans le demi-plan à conserver. Pour ce si:*..3sq "~~'&ets falre, nous utilisons l'algorithme de SUTHERLAND et HODGMAN qui consiste à parcourir le polygone arête par arête'en examinant la position de l'extrémité finale de chaque arête par rapport à la droite de découpage.
152
Algorirhmes L’algarithme
de traitement
d’un
polygone
peut
s’écrire
:
Or. nous voudrions et (s2,i4,i3).
DECOUPE POLYGONE ; 06but (dkoupage d’un poLygone pm Mppoti à une dhaite ; &A 6onctiorts PREMIER SOMMET et SOMMET SUIVANT pemettent de pancoti -Ca AL& d’tiétes 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~ YTzÏd---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
As!!
’
bh0fl +LMET;,UPE -CALCUL
wa
.~PM happti
Tïïim’ ,j&
de L’ahtie
,+wLe deaient
ertnénité
survenir
A la droite appartenant
deux polygones
définis
par
(s,,i2,i,)
: deux
sommets
: A la droite
consécu-
Le probléme des singularités est résolu en définissant de fason précil’intersection entre un segment de droite (arête) et une droite. Soit P le demi-plan à conserver et D la droite. Soient deux sormnets consécutifs Nous postulons que l’arête (si,si+,) coupe la droite si : si et si+,. se
- ei
et si+,
- si
6 P et
4.5.2.2
in&iatel
eont si+,
de part 8 D : il
et d’autre
de D avec si
y a intersection
et .si+,
au point
y a intersection
au point
8 D
si+, si.
de problèmes
de &me,tW.l
sont
- ~énéntiaüon
au découpage
d’un
potygone
p”
une ,+MXhe
Nous pouvons utiliser l’algorithme SUTHERLAND et HODGMAN, pour coupage d’un polygone convexe ou non par “ne fenêtre convexe.
/
Le découpage d’un polygone par une droite n’est pas considéré une simple extension de l’intersection de deux segments.
. Une attention vexes, qui peuvent
peuvent
- sosmst appartenant - colindarité (arête sont sur la droite).
: il
POLYGONE;
Deux types
les
a ti7 dudd
d6bu.t TLCUL INTERSECTIONiXI,YIl; SORTIRIXl,YIl;
DECO!&
tifs
obtenir
153
INTERSECTIO~(XI,YI~; SORTIRlXI,YII;
XS:=XP ; Y.&6 ; (ert(rédé 6.i S VISIBLE üi!cm SORTIRIXS,YSl; %7i#h’ËT SUIVAM; +$$m&
. Des singularit&
de ddcoupage
à résoudre
comme
:
particulière doit être portée aux polygones produire des polygones dégénérés tels que :
non con-
le dé-
Dans un premier temps, nous découpons le polygone par la droite, passant par la première arête de la fenêtre : nous con8ervon8 la liste des sommets du polygone résultant, se trouvant dans le demi-plan contenant la fenêtre. puis A partir du polygone ou des polygones résultats, nous exécuton8 de la même façon, le découpage avec la droite passant par la deuxiéme arête et ainsi de suite, jusqu’à la dernière arête de la fenêtre. Dans le cas de polygones non &wexes, pour éviter la production de polygones non dégénérés, la mise au point de l’algorithme reste très délicate. De plus, la complexité d’une telle généralisation, demeure ea O(~*U) où m et n sont les nombres des arêtes des deux polygones. Dans le chapitre suivant, nous allons étudier deux algorithmes (SHAMOS et O’RODRKE) de dé-~ coupage de polygones convexes, dont la complexité est en O(m+n). 4.5.3
- INTERSECTION
VE VEUX POLYGONES CONVEXES
On considère deux polygones P et Q convexes ayant respectivement m arêtes. 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
Les deux contours que par exemple).
de SUAMOS sont
orientés
dans un sens arbitraire
(trigonamkri-
n et
154
l-
155
Le
principe
A partir d'un point q.inférieur secteurs angulaires (voir méthode et d'un contour convexe). \
au polygone Q, on le décompose en m de SHAMOS pour la comparaison d'un point
cion
- si elles sont situées avec l'arête du secteur
9
des secteurs
rents
b) les :
- si tersection
soit
de cette
décomposition
i)
q est
On cherche
à l'intérieur à quel
est
: soit
oeux cas peuvent se présenter il est à l'extérieur de P.
. Si le point
deux
extrémités
il
y a intersec-
en O(m).
le point
q est
A l'intérieur
appartient
chaque
somnet
pi
de l'arête
appartiennent
elles se trouvent à l'intérieur (propriété de la co-exité).
de P,
de P :
secteur
4
du contour,
pi+l
origine
Le comportement
de part et d'autre correspondant.
de P.
du polygone
&
à des secteurs Q, il
n'y
diffé-
a pas d'in-
ici
pi
- si tersection.
elles
sont
situées
de iar
et d'autre
du contour,
il
y a une in-
9
pi+l
P
9
*
Les contours étant orientés et chaque secteur n'étant seule fois, cette recherche a un comportement en O(n+m). ii) contou.
On examine Différents
chaque arête (pi,pi+,) cas de figure peuvent
a) les deux extrémités : - si elles sont situées pas d'intersection. teur
de l'arête
a
à l'intériew /
du polygone se présenter
ou à l'extérieur pi+l
'ii1
\ pi
'i
qu'une - si section
P en parcourant :
appartiennent
(pi,pi+,)
visité
elies
8ont
k situées
son
n'y
a
du contour,
R
pi+l
au même secde Q il
pi à l'extérieur
4
pi
il
y a aucune
inter-
157
156 deux
i
intersections
2- L'algorithme Soient deux polygones P et p orientés dans définis par la liste ordonnée de leurs s-efs respectivement. L'algorithme
ou une
infinité
d'intersections
de SHAKOS peut
avoir
la
le sens trigonométrique, (sP~)~=, à n et (Sqj)j=,à,
forme
générale
suivante
:
(colindarité) Pi+1
9
a) Nous déterminons la méthode des angles @
iii) Le polygone résultant en parcourant alternativement ge sur un point d'intersection. . Si le point
q est
En q le conkur sous-suites d'arêtes ci-dessus. Exemple
c'est-à-dire pi de l'intersection, s'il existe, est obtenu P et Q. Le changement se fait lors du passa-
à l'extérieur P sous-tend qui seront
de P : un angle traitées
a. On décompose alors P e,, deux par la m&thode développée
si
r i-l
alors sinon
si le point capables : angle
q 8 P q $ P 0
(9 *pi,*
q est "Pi+,)
à l'intérieur
du polygone
- 2n
somne des angles
nulle
-0
Pour ce faire, nous calculons d'abord les angles (q sq,, q spi) serviront ultérieurement à définir les secteurs auxquels appartiennent de référence), smet8 (spi)i=j,. . ,* de P ((q sq,) étant la droite à partir de ces angles, nous déterminons les angles (q sp;,q Spi+,).
:
gement décomposé
en deux
qui les puis,
Si q n'.appartient pas à P, nous devons définir 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 :
changement signe
P est
P par
sous-suites
(----)
et (-).
de signe
de
159
der
b) Le traitement 1 permet les S-ts appartenmt
pour une sous-suite à mq.
Quelques
doivent
cas particuliers
être
de sommets
traites
:
- sommets cmmuns aux deux contours - sommet d’un contour appartenant à une arête - arêtes des deux contours, colinéaires. Ce sont des cas particuliers d’intersections remrnent, suivant que nous restons A l’extérieur que nous passons de l’intérieur B l’extérieur rieur du polygone Q. le entre
problème une arête
est donc de définir de P et le contour
ç) Définition
de l’intersection
Soit (sp.,sp. teron8~ respe~ti&Jnt - sectl
et sect2,
- intl appartiennent mités
) une arête : les
quand de Q.
de P de cal-
de l’autre
contour
que nous résolvons difféou à l’intérieur ou bien ou de l’extérieur à l’inte-
est-ce
qu’il
y a intersection(s)
de P. Pour
et int2, les variables ou n’appartiennent
Figure 4.10.: même secteur
e PIIQ
Cas où les de Q.
extrwités
d) On entre dans Q : . ‘pi+, e PnQ . point d’intersection d’une
arête
6 PIIQ.
de P appartiennent
au
î-Cas ton .a contour1 ou contour2) ___ prticuliers _--------Quatre cas de figure peuvent se présente+ :
:
secteurs
c) On sort de Q : . point d’intersection
chacune
des extrémités,
nous no-
de Q associés logiques qui pas à l’intérieur
indiquent si de Q ;
les
- contour1 et contour2, les variables logiques précisant appartiennent ou n’appartiennent pas au contour de Q.
si
intl 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)
extrémités les
extré-
Noua devons distinguer le cas où les extr&dtés d’une arête de P sont situkes dans le même secteur angulaire de Q du cas où elles appartiennent à deux secteurs distincts. i)
Les extrémi&
,-cas
gL?n&zA~
Quatre
de l’arête (on
cas de figure
a non
kontour
peuvent
appartiennent 1)
et
"0"
se présenter
(contour
9
q
au même secteur.
a) On sort de Q : SPi+, g PnQ
2)):
b) On entre dans Q : *pi e PnQ
:
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). inrl
et
Sectpred de Q.
correspond
au dernier
secteur
dans
lequel
nous
samnes sortis
d) Colinéarit6 : on se considère à l’extérieur de Q (pas d’intersection). Cas particuliers où les extrémités d’une arête de P appartiennent au même secteur de Q.
c) On se considère à l’extérieur de Q (pas d’intersection). Figure a) arête *pi+,
de P intérieure 6 PnQ
à Q :
b) arête
de P extkieure
à Q
4.11.:
ii) l-
Les extrAait& cas généra1
de l’arête (on a non
appartiennent
(contourl)
a deux
une intersection
différents P
ee non (contourî)):
NOUS pouvons rencontrer les cas de figure qui . intl et int2 : pas d’intersection car Q est *pi+, 6 PnQ. . s’il y a au’mins se présenter :
secteurs
, alors.
suivent. convexe,
-I/-. sql
sq2
les
3 cas suivants
il y a intersection (sq,,sq2), enrq3
Q
peuvent
7int
-3
ensq2 avec l’arête avec l’arête h3,sq4)
il y a colinéarité (sq2>s93)~
1
avec
l’arête
et
- 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, situés à l’intérieur tersection consécutifs où l’on entre puis
de P et entre deux points d’inoù l’on sort de Q, ap&rtien”ent
1int
2
"94
e) colinéarité tien) .
: on se considère
B l’extérieur
de Q (pas d’ineersec-
à PnQ.
Figure
Cas où les extrémités pas au mêise secteur.
4.12.:
2- cas particulier Nous pouvons intl
et
: contour1 . un point -
rencontrer
(em
Q).
c) extrémités extérieures on passe par un somset (pas d’intersection)
à Q : de Q.
b) On rentre dans Q : l-une seule i”tersectio”(WJQq) Z-deux intersectirjns identique* : on passe par un sommet de Q (6P,,Q).
(figure et int2 (figure d’intersection
npn(inr1)
et
d) extrémités extérieures à Q : -Ière intersection : on entre dans Q, -2he intersection : on sort de Q (les deux points d’intersection @ PnQ).
- contour1
a) on sort
contour2
contour2
de Q: spi+,‘d
1 ou co*to”I
cas de figures 4.13.b) et (figure (figure
d’intersectio” et confour2), et
arête
de P n’appartiennent 2)
suivants
:
4.13.a)
et non(int2)
. pas de point - (“on(i”t1) ou
les
contour2
ou - contouri a) On sort de Q : l-une seule intersection (ePnQ) Z-deux intersections identiques: on passe par un sommet de Q
(on a contoUr
d’une
4.13.c)
4.13.d)
et ou (contour1 (figure 4.13.f).
PnQ
et non(intZ))(figure
b) On e”tre
dans
Q: SPie
4.13.e)
PnQ
162
Synrhèse
dïmage
: Algorilhmes
él&nenraires
Algorilhmes
163
de découpage
Pour le calcul de l'intersection de deux arêtes des polygones Q et P, nous utiliserons l'algorithme d'intersection de deux segments de droite (méthode paramétrique développée au chapitre 4.5.3.3.). soit
d) Si en fin de traitement QSP. Cette alternative
PnQ est vide, est résolue par
soit P et Q sont disjoints. la séquence suivante :
&i q
c) Une seule intersection : . on entre au point d'intersection (8P nQ) . on 80rt en "pi+,: SP~+,B mq. Tint
d) Une seule
intersection
tijouzt6
avantage de la méthode de SHAKOS est 88 complexité en fonction du oombre d'arêtes 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'inconvénient demeure l'utilisation dee fonctions trigononAtriques inverses (arctg).
f) On entre en *pi, cm sort “Pi+, : 8Pi et api+, PflQ.
e) Cm se considère B Yextérieur de Q (pas d'intersection)
Cette définition contour du polygone arêtes de P.
CO P et Q 6ont Pn Q: =u.ide;
Le principal O(n+m) linéaire
2
4.13.:
hnan --
3- Conclusion
d'intersec-
4.5.3.2
Figure
CO QEP&J pTlp:+
:
. on entre en spi: SPi8 mq
on sort au pomt .* tics (6Pf?Q)
r3hm.A -
Cas particuliers n'appartiennent
où les extrémités d'une pas au même secteur.
de l'intersection Q, permet d'obtenir
d'une PfiQ
arête
en
L'algorithme de celui 1)
le les
Les sonmets de Q appartenant à PflQ sont situés entre deux points d'intersection consécutifs tels qu'au premier point nous sortons de Q et au second nous rentrons dans Q en parcourant le contoUr de P :
de O'ROliXKE
présent6 de SHAMOS.
par
et ai!.
O'ROURKE et al.
est
fondamentalement
diffé-
Le principe
Nous Utilisons
de P
arête du polygone P avec en parcourant uniquement
rent
- La mtihode
les
notations
suivantes
:
- p et q seront les sommets des polygones P et Q p est le sammet courant, p- sera le samuet précédent, et p, le , _ - p représente le segment de droite
pointe
que pointer -C'est-à-dire vers la droite passant
pointer p B hp(@
(fi,$ cormre suit 0 iAi> < 0
P"e hp($
0
(fi,*) par
est 6.
{Afi vrai
:
>-0 si
le vecteu
fi se dirige
ou
164
Synrhèse
d’ïmage
: Algorithmes
dlémenroir~
Partant de deux arêtes p et 4 choisies arbitrairement, on progresse sur l'un ou l'autre des cmtours, de telle sorte que l'une des deux 11pointe" vers l'autre. Ces règles sont résumées dans la table 6. poinrer(fi,CJ pointer
(4,fi)
evancer à partir te extérieure
l------------L
----------------
poiater(+,fi)
p suivant
Table
6 : Règles
A chaque et un sommet trouvées en l'algorithme
4pointer($,$
de l'arê-
q suivant
--------A------------
------
J
evemer à partir de l'arête exrérieure
de progression
autour
des contours.
pas, deux arêtes 6 et 5 sont comparées (test de PnQ est obtenu. Toutes les intersections parcourant au plus, deux fois chaque contour, d'avoir un comportement en Oh+m).
d'intersection) peuvent être ce qui permet
@; à
3) Singularités Trois
2) L'algorithme
types
a) Un samec
L'algorithme consiste principalement à utiliser les règles de progression, dans une structure répétitive, qui permettent d'avancer d'une arête sur l'un ou l'autre des contours à chaque pas. De plus, à chaque pas, deux arêtes mnt comparées (test d'intersection) et un somet est obtenu. Quand le boucle est terminée, fou8 les somets du polygone PfiQ ont été calculés excepté lorsque PnQ = 0. Sans prendre générale suivante
particuliers
en compte :
les
cas particuliers,
l'algorithme
d'intersections
de P appartient
peuvent
B une arête
se présenter
:
de Q :
/---’
l-T--lQ
a la forme
b) P et Q ont deux
sonmoets communs : /---p
C)
Une arête
Ces singularités section qui suit.
de P chevauche
sont
une arête
suI7nmtéeS
grâce
de Q (colinéarité)
à notre
définition
:
de l'inter-
167
166
x -xA + (XI%-XA) t, Y = YA + (YB-YA) t,
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 d’intersection identiques (voir singularité (a)). ou quatre points d’intersection identiques (voir singularité (b)). Pour obtenir un unique point d’intersection, dans ce cse particulier, il y surs intersection, pniquement si pn: est égal B “Pi+, ou sqj+,. - si i, et 6 sont colinéaires
alors
fini
- 0
de nième pour (CD), on a : x = xc + @D-XC) t2 Y = YC + (YB-YC) t2 La valeur
du paramétre
indique
la position
du point
(X,Y)
SUT la droi-
re :
(cl).
(singularité
t,>1
4) Conclusion : . Ls complexité de l’algorithme B (n+m), su nombre d’intersections
B t,-1
de O’WUPJG? et al., est proportionnelle et su nombre de sosrsets de PnQ. o
Le nombre de pss de la structure itérative du choix arbitraire des deux premières arêtes. Dans les cas particuliers nombre de pas et de calculs maximal (c’ set-à-dire 2Wn)
est aléatoire
CBT il
dépend
A
t,=o (Aa /
où E$Q, QCp ou P et Q sont disjoints, le d’intersection de deux segments de droite est 1.
f,
Si les deux droites se coupent, données (X,Y) telles que - In~eh~ection
4.5.3.3
de dwx
begmentd de d.hAe
L’opération géométrique élémentaire cwm~une aux algorithmes de dkoupsge développés plus haut est le calcul de l’intersection de deux segments de droite. Plusieurs algorithmes existent pour identifier métriques de deux segments de droite : -
méthode méthode méthode méthode
les configurations
geo-
analytique vectorielle min-max paramétrique.
La Méthode pariorétrique :
Soient deux segments de droite AB et CD. Les droites (CD) sont définies par leurs équations parsx&triques : Pour
WI,
on
a :
Ce système
support
(AB) et
d’intersection
s pour coor-
t, - XC + (XD-XC) t2 t, = YC + (~-UC) t2 a pour solution
:
t = (XC-XA) (YC-YD)-(XC-XD)(YC-YA) 1 (xB-XA)(YC-YD)-(XC-W)(YB-YA)
t2-
L’un d’entre eux s retenu notre attention, il s’agit de la méthode paramétrique. D’une part, ALLIAUt@. a montré dans
Le principe
X = XA ; (XB-XA) Y = YA + (YB-YA)
le point
(XE+XA)(YC-YA)-(XC-XA)(YB-YA) (XB-XA) (UC-YD)-(xc-XD) (YB-YA)
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. L’algorithme
:
L’algorithme qui suit traite l’ensemble des cas susceptibles rencontrés (on supposera qu’aucun des segments n’est dégéndr6, réduit & un point).
d’être c’est-à-dire
4.5.4.1
- Une appmche
ptictitae
Une des possibilités pour accélérer 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 l’un des rect&gles est co,,te,,u dans l’autre, par exemple RZCRl, nous pou”ons alors considérer l’intersection de R2 et Pl, puis l’intersection du dernier polygone (RZnPl) avec P2. Si Rln R2 est non vide, nous pouvons considérer l’intersection de chaque polygone Pl et P2 avec RlZ=RlnRZ, ce qui définit deux nouveaux polygones, auxquels nous.appliquons tout le même processus employé pour Pl et P2 de manière récursive. (vair figure 4.14.). est
YCD:=YC-Yu; u: =x%4. KV-Xc#.
YBA;
TI:=(XCA.YCV-XCD.YCAI/D; TZ:=(XBA.YCA-YSA.XCA)/D; bi (Tl
4.5.3.4
R2cRl
Cependant,
(1) de l’algorithme de O’ROURKE est beaucoup plus simple nécessite une structure de données minimale qui consonnnets des deux polygones et de leur intersection. méthode de O’ROURKE et al., nous n’utilisons pas de
dans
P’i nR’2 R”1 ,, P’2
la méthode de SHAKOS, le nombre de calculs d’intersecde droite, sera toujours inférieur ou égal à celui la méthode de O’ROURKR.
P’l
- INTERSECTION
VE VEUX POLYGONES NON CONYEXES
Contrairement au calcul de l’intersection de deux polygones convexes, dont le comportement est proportionnel à la somme du nombre d’arêtes, le traitement des contours non convexes a une complexité fonction du produit du nombre d’arêtes. Ce comportement est optimal car le nombre de points d’intersection peut être, dans ce cas, égal au produit du nombre d’arêtes.
R’2
= R”,
P’2
dans
(b) Figure l
4.5.4
RI2 = Rl nR2 PlnR12 = P’l P2 nR12 = P’2
(2) R’ZcR’l
tion de deux segments dénombré
I
&
- Conceusbn
La mise en oeuvre que celle de SHAMOS et siste en la liste des D’autre part, dans la fonction trigonomdtrique.
Rl
RI
4.14.:
Intersection de deux sions successives.
polygones
non convexes
par
subdivi-
Cependant, la réduction de la complexité n’est possible que si nous / éliminons à chaque subdivision de l’un ou des deux polygones, un maximum d’arêtes. Ceci suppose également que le nombre d’arêtes des polygones soit suffisamment important (>>4). Cette approche ne résaud pas le problème de l’intersection des polygones non convexes car.les contours obtenus par subdivisions successives, ne sont pas nécessairement canvexes. A cet effet, quels sont les algorithmes de découpage que l’on peut employer pour les différentes opérations d’intersection ? - Pour l’intersection nous pouvons appliquer H0DCW.N (voir chapitre
d’un rectangle avec un polygone convexe ou non, la généralisation de l’algorithme de SU’L’HERLAND ET 4.5.2.) qui réalisera ici le découpage d’un polygone
170 par
U*S fenêtre
rectangulaire.
- Pour l'intersection rencier trois grandes
L'algorithme
des deux polygones configurations :
a- Les deux polygones SHAMOS, soit l'algorithme
sont convexes de O'ROURKE.
: on utilise
b- L'un des deux polygones est convexe de la méthode de SUTHERLAND et HOKMAN. thode
c- Les deux polygones sont générale comme l'algorithme
finaux,
nous
pouvons
soit
l'algorithme
: on utilise
peut
avoir
la forme
générale
qui
suit.
difféde
la généralisation
non convexes : nous devons de ATHERTON et WEILER.
utiliser
une DG-
Avanf d'envisager l'étude d'une méthode générale réalisant l'intersecnous devons pouvoir déterminer si un tion de deux polygones quelconques, la solution qui suit. polygone est convexe 0" non. Nous proposons Soit un polygone P défini par la suite ordonnée de ses N sommets (si)i=l à N. Ayant choisi un sens de parcours arbitrairement, nous pouvons savoir de quel côté (à gauche ou à droite) se situe chaque sommet si par rapport à l'arête (si-2,si-,) qui le précède : 4.5.4.2 ,Hsi / fi.-: 1-Z s. esr a gauche de'(si-2>si_,)
,'
W si-2
si-,
1-l S. est à droite de'(si-2.si-,)
8. en évaluant le sisi, ou le 3 au point
) qui est le déterminant de la matrice signe de det (Si,Si-Z,S,-1 de par les coordonnées homogènes des points si,si-2,si-, (voir de PAVLIDIS, chapitre 4.4.3.2.).
3x3 for algoritti
Sachant que dans un polygone convexe, tous les sommets sont situés du même côté par rapport à l'arête précédente, nous détectons si un contour est non convexe en le parcourant dès que l'un des sommets change de côté (c'est-à-dire ce signe (voir figure 4.15.). "
co""exs Figure
Cet algorithme de découpage très complexe demeure le module de base d'un algorithme de visualisation réaliste de scènes tridimensionnelles développé par ATHERTON et WEILER (voir
- CUNCLUSZUN
L'étude des différentes solutions qui permettent de réaliser l'intersection de deux polygones, appelée ici découpage d'un polygone par une fenêtre polygonale, a permis de dégager deux types d'algorithmes, fondamentalement différents de par la complexité de leur mise en oeuvre et de leur, vitesse d'exécution. Nous distinguons les deux classes suivantes : (voir 1- Les algorithmes réalisant l'intersection de deux polygones convexes (SHAKOS, O'ROURKE) dont la complexité est en O(m+n) où met n sont les nombres d'arêtes respectifs des deux conrours ;
1 4.15.:
de ATHERTON et WEZLER
Le principal avantage de cet algorïthme est de conserver en sortie, la même structure des données fournies en entrée, c'est-à-dire contour ou facette polygonale orientée, permettant dans un algorithme d'élimination de parties cachées, de conserver la nation de faces qui pourront être utilisées ultérieurement plus aisément par des algorithmes de remplissage ou de hachurage par exemple. Les polygones traités peuvent être quelconques, convexes, concs.ves et posséder des trous (contours intérieurs). Mais sa mise en oeuvre demeure délicate et sa complexité très élevée. Il s'avère fondamentalement différent des algorithmes réalisant le découpage de deux polygones convexes, comme ceux de SHAMOS ou de O'ROURKE.
-. 'Xi
Nous connaissons le demi-plan auquel appartient gne de l'équation de la droite passant par (si-2,si-,
- L'o.lgo&hne
Recherche
de la convexité
d'un
polygone.
vexes Tïïüm.
2- Les algorithmes réalisant l'intersectiowde (SUTRERLAND-HOnCNAN, ATHERTON-NEILER) dont
deux polygones "Y la complexité est en
Il conviendra donc d'utiliser les informations intrinsèques à l'application traitée et aux figures géométriques manipulées afin de choisir 1'algorithme qui convient : - convexité - nécessité données que nous gonale orientée
ou non convexité des contours, ou non de conserver, après le découpage, avions en entrée ; c'est-à-dire contour ou no*.
la structure ou facette
de poly-
Par exemple, dans l'algorithme d'élimination des parties cachées d'une scène tridimensionnelle d'ATHERTON et KEILER, l'utilisation de leur méthode générale de découpage 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 fenêtre, nous verrons dans les chapitres suivants que l'utilisation de la méthode générale de découpage peut être évitée.
4.6. Découpage d’une tache par une fenêtre polygonale 4.6.1 u ff
- INTROIUCTIUN
Le problème (coloriée) soit
z
Nous pouvons
5
1. Découpage polygone résultant
2 2 g a 5 ;r & Ikl g .$ Q .. e,
2 s w
points cite). 3.6.2
est d'afficher la partie hachurée dans une fenêtre envisager
deux
solutions
visible d'une polygonale.
soit
remplie
:
du contour de la tache, puis remplissage (découpage de la tache explicite) ;
2. Remplissage ou hachurage de toute ou les lignes de hachurage visibles
tache,
ou hachurage
du
la tache en n'affectant que les (découpage de la tache impli-
- DECOUPAGE EXPLICITE
Dan8 un premier temps, nous découpons le contour polygonal de la tache, ar l'un des algorithmes de découpage étudié au paragraphe précédent. p Puis, une fois le contour intérieur à la fenêtre obtenu, nous pouvons dans un deuxième temps, appliquer un algorithme de remplissage ou de hachurage de tache sur le polygone résultant. La complexité des complexités produit.
du découpage explicite d'une tache, est égale à la somme du découpage par la fenêtre et du remplissage du contour
175
4.6.3
4.7. Découpage d’une tache par une autre
IMPLICITE
- DECOUPAGE
Deux méthodes
peuvent
être
utilisées
:
4.?.1
1. La première solution consiste à remplir ou hachurer la tache initiale, en calculant pour chaque point, ou pour chaque ligne de hachurage, leur appartenance à la fenêtre, à l'aide d'un algorithme de comparaison point-contour, ou respectivement du découpage d'un segment par un polygone.
2. La seconde solution consiste fenêtre simultan6ment en n'affichant droite qui sont situés à l'intérieur
-
INTRODUCTION
Par opposition sons le dkoupage cule non seulement différences (P-Q)
à remplir ou hachurer la tache et la que les points ou les segments de des deux contours.
Si la fenêtre 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 découpée sont importants, plus l'utilisation de la seconde solution devient avantageuse. L'inconvénient rraiter la partie importante.
majeur invisible
au découpage d'une tache par une fenêtre, nous définisd'une tache P par une tache Q comme l'opération qui call'intersection (P6TQ) mais encore l'union (PU@ et les et (Q-P) (voir figure 4.15.).
,
du découpage implicite est le temps passé à de la tache dans la mesure où celle-ci est
p-9 / Figure
4.6.4
4.15.:
Opérations
de découpage
entre
deux taches
P et Q.
- CONCLUSION
Dans le cas de taches et de fenêtres convexes, la méthode explicite est la plus avantageuse. Mais dans le cas non convexe, l'utilisation du découpage implicite devient plus favorable car la complexité du découpage des contours est en O(n*m). NOUS pouvons
cependant
formuler
deux remarques
:
. Si nous traitons le découpage d'un ensemble de taches par une fenêtre, la complexité de la méthode implicite peut être considérablement a& liorée en effectuant le remplissage ou le hachurage de la fenêtre une fais pour toutes. Seul l'espace mémoire nécessaire augmente dans ce cas. . La conservation du polygone résultant dans la méthode explicite est par contre très intéressante, 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 résultant du découpage peuvent être extraits et mémorisés lors du remplissage implicite de la partie visible d'une tache dans une fenêtre.
Si P et Q sont convexes, nous pouvons réaliser de manière explicite uniquement les opérations 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 résultant (intérieurs et extérieurs) du découpage de deux polygones non convexes. Mais ces deux méthodes ne sont plus du type des techniques rencontrées dans le cas convexe et leurs cbmplexités demeïrent en O(m*n). Nous proposons dans ce qui suit, de réaliser les opérations d'union, d'intersection et de soustraction de deux polygones P et Q à partir de ces mêmes opérations effectuées sur les deux taches qu'ils définissent : c'est-à-dire à partir du découpage implicite des deux taches. Deux approches peuvent être envisagées : soit nous définissons 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 intérieures à la tache (nous manipulons dans ce cas, une structure d'arêtes et d'intervalles).
176 4.i’.Z
- TACHE DEFINIE Soient
PAR UN ENSEMBLE DE POINTS
deux taches
Soient
A et B.
Après avoir rempli les taches A et B et mémorisé les ensembles des points qui les constituent dans des mémoires d'images (matrices de pointe) respectives, nous pouvoos très facilement extraire les sous-ensembles désirés et les mémoriser si nécessaire. Les opérations élémentaires sont très simples et limitées : pour chaque point, nous effectuons au plus deux tests et deux accès tableau. Gis en contre-partie, la mémoire utile demeure trop importante et il faut parcourir toute la matrice image. Nous pouvons envisager une solution qu'une seule mémoire de points. Celle-ci chaque tache, l'ensemble des points qui suite la liste des intervalles de points ges). (voir figure 4.16.)
intermédiaire où nous permet d'y la compose, puis ligne par ligne
nous n'utilisons inscrire pour d'y extraire en(codage par pla-
x8
Xl
A er B, les taches correspondant ht-A et ire-B, deux variables mes à l'intérieur des taches A et B. Nous obtenons l'algorithme qui suit. vement,
à LISTE 1 et LISTE 2 respecrilogiques indiquant si nous som-
et
Union Idonnées LISTE 1, LISTE 2 ; hta&at LISTE 31 Début ---FuConldonn&z LISTE 1, LISTE 2 ; hésuI,%& LISTE 41 CO eu t’union de LISTE 4 jg UitrA:= aux; iY&B:= aux; chëen 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 ‘-
atoht ZZZI
~6
ti-A: =1 .&&-A; id-~:=lint-B;
g Remplissage point par point Figure
4.16.:
Extraction ligne Constitution
des intervalles par ligne
de la
liste
Liste
des intervalles
des intervalles de points
&l, ech(he ti?ehk
CO-[LISTE 41 dans à joua ILYAELEMEh(T;
LISTE
3;
de points.
Les opérations ensemblistes sur les deux taches s'effectuent en camparanf les deux listes d'intervalles, ligne par ligne. Chaque sous-ensemble désiré sera aussi défini 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 différence, la différence des intervalles. Si les opérations réalisées sont plus complexes, que celles effectuées sur les matrices de points, le gain de mémoire utile est considérable.
Intersection(') Un point
: LISTE p BAIIB
3 = LISlx si
10
LISTE
2
p SA et p BB.
En utilisant les mêmes notations l'algorithme suivant :
que précédemment,
on obtient
alors
NOUS allons développer maintenant les différents algorithmes d'union, d'intersection et de différence de deux listes d'intenralles de points LISTE 1 et LISTE 2. Le résultat sera également une liste d'intervalles de points appelée LISTE 3. Union
: LISTE
3 = LISTE
1 U LISTE
2.
Nous réalisons dans un premier temps, la fusion des deux listes ordonnées LISTE 1 et LISTE 2. Dans la nouvelle liste, chaque élément est marqué par le nom de la liste initiale correspondante. Sachant qu'un point appartient à l'union des taches, s'il appartient à l'une ou à l'autre. nous pouvons alors extraire la liste kxrespondante des intervalles.
(1) Nous trouvons un exemple de la mise en oeuvre de cet algorithme dans le programrre Texte-polygone (Ecriture d'un texte dans une tache polygonale quelconque) au Chapitre 3.,3.3.5., pages 105-106.
Algorilhmes U.C éhence
-udanl&nnëe 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 dëbui I-l ULt A ~1 int Bl - ILYAELEMENT
&.&
!i%k
%n.t-A -*
&L metttle
ZLVAELEMENT;
2 ; X@&L&%~
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 I7X’TE 41 dans LISTE à jowr
Fin %&hutin
&in ~@unce
A-B.
MeXaW d ‘ut intA et inta + di couhant (LISTE 41 G A; -C&M i-A:=l.&&A; d*nan &B:=l*ntB;
2- LISTE=LISTE
2-LISTE
l- LISTE 3=LISTE 1-LISTE L(='est-à-dire Un point p e A-B si pSA et @SS On obtient l’algorithme qui suit.
1, LISTE
LISTE
31
ob.tenin ë&%neti LISTE 4; menthe à jout inLA et d-B; menthe à jowr ILYAELEMENT;
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
LISTE
--7LL6tinldonn~e LISTE 1, LISTE 2 ; tresua*at LISTE 41; CO ewtnaihe A-8 de LISTE 4 & mi-: =&I~X; inA-B:=@ux; chëeh LISTE 3: ILYAELEMEM: =;~CG ; CO LISTE 4 non v*de 40 Tant ue ILYAmENTaLzl+ (1 ti A oi iti BJ g ZLYAELEMEM 6aine
obtenin ë&nent LISTE 4; me.tthe à jouh &-A et inCE; mdtte à jouh ILYAELEMEM; -w
A-BIdonnée
179
de découpage
3;
3;
ILYAELEMEM;
1 (c'est-à-dire
B-A)
Un point pGB-A si p$A et p6B. On obtient l'algorithme "différence B-A” qui est identique à "Différence 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).
A-B)
4.7.3
‘- TACfiE DEFINIE
4.f.3.1
- lntmduction
PAR UN ENSEMBLE D’INTERVALLES
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 différents traitements opérés sur les taches sont identiques à ceux exposés ci-dessus. Chaque nouvelle tache résultant de l'union, de l'intersection cm de la différence des deux premières, est caractérisée par la liste des intervalles qui la composent, ligne par ligne. A partir de cette structure de données, les opérations corne le remplissage de tache ou la translation sont triviales. Mais des transformations géométrile changement d'échelle, nécessitent la desques telles que la rotation, cription du contour de la tache, sous forme d'une liste d'arêtes. Cette description permettra d'autre part, d'économiser de la mémoire.
Nous présentons un algorithme, qui permet de réaliser de manière implicite (voir chapitre 4.7.3.2) les diverses opérations ensemblistes, entre deux taches polygonales, en calculant pour chacun des sous-ensembles obtenus, la liste des arêtes correspondantes. En outre, cet algorithme pemt d'exécuter ~irmltanément le remplissage ou le hachurage horizontal du BO,,+ ensemble désiré. - kegotihme
4.f.3.2
de découpage
de
deux
- nous attribuons contexte ; (vair
l'arête q Table 8).
sous-ensembles
a”X
correspondants
grâce à
- nous rencontrons une singularité si deux arêtes sont confondues (mêmes points d'intersection avec les lignes de balayage et mêmes pentes) (voir figure 4.18,). L'attribution de l'arête se fait à l'aide de son conrsxfe par rapport aux deux polygones A et B (voir Table 9).
taches 0
Soient A et B, deux taches polygonales, définies par des coordonnées des sommets de leurs contours respectifs, écran. Le problème : nous désirons établir tuent les contours des taches polygonales c'est-à-dire An%, AUB, .A-B et B-A. 1)
L'idée
les
listes obtenues
GA,,8
GCB
la liste ordonnde dans le systéme
et B-A
des arêtes, qui constià partir de A et B :
:
qcA (ou B): 0 0 qcA (ou B):
En utilisant la technique du suivi de contour, nous désirons calculer les arêtes q engendrées par A et B en le 8 attribuant aux sous-ensembles correspondant, par un découpage iyplicite de A et B (voir figure 4.17).
q appartient
au contour
q appartient
à l'intérieur
à (A-(contour
Table
A))
(ou
de A (ou de B) à
de A (ou de B) (B-(contour B))).
q8 A-%
et
%-A
AnB,
A-%, B-A
l
PigureC4.17.:
Découpage
2) L'algorithme
par
suivi
f
(b)
de contour.
q e An%,
:
Corinne pour le remplissage les, nous constituons ligne de B qui la coupent. Le calcul suivante :
implicite
des arêtes
par
simultané d'un ensemble de taches polygonaligne la liste ordonnée des arêtes de A et
q engendrées
par A et % se fait
Figure
de la manière
- nous détectons u,e arête q lorsqu'une arête change de contexte entre deux lignes de balayage consécutives. Ceci peut se produire lorsque deux arêtes se c0upent ou lorsque des arêtes se terminent ou coormencent. Pour ce faire, nous devons mémoriser les coordonnées du dernier changement de contexte de l'arête et son contexte sur la ligne précédente, à savoir si elle est à l'inrérieu; ou à l'extérieur de l'autre polygone correspondant;
/
4.18.:
; c'est-à-dire
8
I i+l et
;
Cas particulier
où qeA et qeB.
AU%
182
4.8. @A
q bord gauche de A et bord _____-____-------*_________________ q bord droit de A -et de B
de A -et de t q bord':auche .-___--__---____-_______________________-----------------------
droit
de B
t qeAnB
B
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 dégénérés
ga::he
et AUB
q'GA,-,B*
et B-A
qWJ?B*
et
Généralisation
auxtachesnon-polygonales
Nous supposons que les contours de la tache de segments de droite et d'arcs de cercle
no"
polygonale
sont
fornéS
1
A-B
qSAAAB et AUB
de A -et de B
(ne pas affecter
qM-lB* et B-A ___---_________-__
q à AOB)
4.8.1 tache
- COMPARAISON PUZNT-CONTOUR NON WLYW)NAL Le probléme est de savoir définie par un contour
si un point non polygonal
appartient à l'intérieur et non convexe.
Parmi les algorithmes que nous avons recenséspour point et d'un contour polygonal, seule la méthode du être généralisée. Le principe est donc de résoudre le pour le point à tester, en utilisant le raisonnement che non polygonale par la méthode du suivi de contour
d'une
la comparaison d'un suivi de contour peut contrôle de parité du remplissage de ta(voir chapitre
3.3.3.2.).
3)
Conclusion
Cette
méthode
présente
les
avantages
suivants
:
.-Le découpage et le remplissage du ou des sous-ensembles désirés peuvent etre exécutés simultanément. Nous remplissons AnB, AUB, B-A ou A-B en réalisant respectivement l'union, l'intersection ou les différences des listes d'intervalles horizontaux intérieurs aux taches A et B sur chaque ligne de balayage. Ce résultat demeure intéressant pour la manipulation d'inages j . Les structures de données obtenues en sortie sont compatibles avec des traitements ultérieurs réalisés par la méthode 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
cependant
trait tels
. Il faudra tenir compte ou certains traitements que le hachurage vertical
ligne
. L'intersection de balayage,
deux inconvénients
Le problème élémentaire à résoudre est le calcul de l'intersection de la demi-droite horizontale située à.gauche du point avec les primitives est un segment, nouS opérons 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
Le calcul se fait
du morceau suit.
d'arc
de cercle
avec la demi-
Soient (Xd,Yd),(Xf,Yf) les coordonnées des extrémités début et fin du morceau d'arc, et D son sens de rotation (D:=si sens trigonométrique alors 1 sinon 0). Soient R le rayon et (Xc,Yc) le centre du cercle associé, et (Xp,Yp) les coordonnées du point à tester. 2
:
de l'intersection de la façon qui
Yp>Yd ou, YpsY ou Xpcmin Llxou pl.4 d'.i.ntehheoüon;
lXd,X,$l
des arêtes horizontales pour le dessin au ultérieurs sur les sous-ensables obtenus ou oblique et la rotation ;
de deux arêtes de A et B se produit mais le plus souvent entre deux lignes
rarement :
sur une La complexité
est
proportionnelle
Nous pouvons cependant tirer térieur au contour : on s'arrête tersection. L'approximation utilisée engendre une erreur en fonction de la pente des arêtes concernées.
plus
ou mains
importante
au nombre
de primitives.
parti de la convexité dès que l'on a détecté
si le point deux points
est exd'in-
185
4.S.Z
- PECOUPAGE
D’UN
SEGMENT
PAR UN CONTOUR
Le problème est de calculer la partie l'intérieur du co"tour "on-polygonal. Nous proposons pour le découpage polygonal.
de généraliser (voir chapitre
NON
POLYGONAL
du segment
de droite
situé
à
la méthode du suivi de contour employée 4.4.4.(Z)) d'un segment par u" contour
Le problème élémentaire à résoudre est le calcul de l'intersection de la droite support avec les primitives. Si la primitive est u" segment de droite, nous effectuons le même traitement qu'au chapitre 4.4.4.2. Si la primitive est un arc de cercle, nous pouvons opérer de la manière 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 extrémités début et,fin, sens de parcours de l'arc de cercle.
t pas d'intersection (point de mort
Soient
Deux cas de figures et D le
a) La droite soient
Les points coordonnées :
d'intersection
de la droite
support
avec
le
cercle
ont
pour
cours
. 9,
pouvons
la droite
. 00,
la droite
On a IkS respecte cle la
le
trois
"e coupe coupe
arc(Ed,Ef)
"e
si
- le droite
:
pas le cercle
le cercle
sens de parcours
cas
e" deux points
Si l'un ou les deux points d'intersection deux cas peuvent se présenter :
. X,>Xi
: pas d'intersection. distincts
(Ik=(~k,yk))k=,
: intersection
où l'orientation de cercle. appartiennent
i- Le(s) point(s) d'intersection diffère("t) droite support coupe l'arc de cercle en ce(s)
des extrémités point(s).
l'arc
coupe
E,
extrémité
et
en E, (point
en E, (point
e" E, et au point
intersection
: D'=O,
D’
de naissance)
de cer-
de l'arc
: . x,<xi
2- L'un ou les deux points d'intersection sont confondus avec les extrémités de l'arc : comme pour les segments de droite, on ne prend pas en compte l'extrémité où les sous-parois finissent :
: D>=l,
D'=O,
xi intersection
Si
SI=EE,
c’e~f
le
e" E,
: D’=l
X1
contraire.
de naissance)
(point
pas d'intersection
D'=O E -J-42
X
x1 en E,
..,
I I xi
avec E,=Ed
de naissance)
en E,
des angles
à l'arc
le sens de par-
de mort)
I=(X;.~~),
en E, (point
pas d'intersection
D'=i,
2.
des extrémités
l’autre
coupe l'arc qu'en E,: : pas d'i"tersec;io"
. y1-1>y2-2
rencontrer
par une seule E*=(x~,Y~)
. Y,-mx,‘Y2-~2
où A=pzm2-(l+m2)(pz-R2) Nous
passe
:
(E,,E2).
- la droite kTX+p
se présentent
E,=(x,,YI),
de l'arc
Intersection en Ed (point de naissance :*)
en Ed :t)
-
X
:
186 b) ~a droite passe par les deux extrémités 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
I
x2
Xl
. x,>x2
:
e
2. Extraction 'jt
- intersection
est vertical,
x1
on inversera le rôle des X et
L'inconvénient de cette méthode est l'utilisation de la fonction gonométrique inverse arctg pour le calcul des angles. Si
E,=Ef
c'est
le
contraire.
du cercle avec un segment de droite:
x
La complexité de l'algorithme est proportionnelle au nombre de primitives. Nous pouvons également tirer parti de la convexité e" arrêtant la comparaison de la droite support avec les primitives du contour dès que l'on a trouvé deux points d'intersection.
(1)
des parties visibles.
Commepour le découpage d'un segment de droite, pour éviter les singularités (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'extrémité fin :
L'ensemble des intersections de la droite support définit sur celle-ci un ensemble de segments de droite intérieurs à la tache et joignant ses bords. La partie visible du segment à découper sera calculée en effectuant l'intersection de celui-ci avec l'ensemble des segments intérieurs au.conto"r "on polygotil (vair chapitre 4.4.4.2.). Si le segment de droite des Y.
d'un arc de cercle situé
On calcule l'intersection de la droite support avec le cercle. Puis s'il y a deux intersections distinctes, on récupère les points d'intersection appartenant au segment de droite.
: pas d'intersection au point T (point de mort) : intersection au point T (point de naissance).
f Y,-y'Y2-==2
POLYGONAL
l- Calcul des points d'intersection
. e, la droite est tangente au cercle au point T. Deux cas peuvent se présenter : l- le point T diffère des extrémités de l'arc de cercle : il "'y a pas d'intersection. 2- Le point T est confondu BYPCl'une des extrémités de l'arc : soient E,=(x,,y,) cette extrémité et E2=(x2,y2) la seconde. . Y,-~,
visible
NON
L'algorithme se décomposeracormaeprécédemmenten deux temps : 1. Calcul des points d'intersection du contour avec le cercle supportant l'arc.
D'=l
x2
- DECOUPAGE V'UN ARC DE CERCLE PAR UN CONTOUR
Le problème est de calculer la partie à l'intérieur du contour no" polygonal.
: D'=O, intersection en E, et E2 (points de naissance) D'=l, pas d'intersection en E, et E2 (points de mort)
i
4. a.3
tri-
atio"
@J
- intersection
du cercle avec un arc de cercle:
d'intersection
0" calcule l'intersection des deux cercles. Puis s'il sections distinctes, on récupère les points d'intersection nent à l'arc de cercle (voir chapitre 4.8.2).
y a deux inrerqui appartien-
Si l'un des points d'intersection récupéré est confondu âvoc l'une.des extrémités de l'arc de cercle, on vérifiera c-e précédenment 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 inférieur ou égal à-l'angle S2=(E,CE2) où C esf le centre du cercle.
189 4.8.4
($jiJ
(Y-&
2- Extraction
ordonne
cet
wk)k=l,...,N On regarde 4.8.1.1.).
si
de cercle
visibles de N points
d’intersection.
ensemble dans le sens croissant en tem~lt compte du 88”s de l’arc E, est
Sur les algorithmes élémentaires de découpage, nous pouvons faire pluremarques : , Nous constatons que la complexité des algorithmes dépend essentiellement de la nat”=e des figures traitées : à savoir rectangulaires (bords parallèles aux axes), convexes ou “on convexes. Dans toute application, il conviendra donc de choisir en fonction de la nature de la scène et de ses manipulations, l’algorithme adéquat. sieurs
.9X32
1 e arc
Soit (Ik)k=l,...,l? l’ensemble 2
DC0
D-O,
de cercle
des parties
NOUS constatons “ne fois encore que l’application des idées du suivi de CO”~~U= permet de sumonter simplement les singularités rencontrées dans la généralisation des trois problèmes élémentaires (comparais”” Pointcontour, découpage d’un segment et d’un arc de cercle Par “” c”“to”=) a”= CO”tO”rS non polygonaux. 0” remarque également que les CO”tO”=s peuvent être co*“sxss 0” non.
4.9. Conclusion.
D=l, cm2 1 e arc
- CONCLUSION
intérieur
ou no”
. Nous remarquons également que le bon fonctionnement des algorithmes, et en particulier le traitement des singularités spécifiques à chaque problème, repose la plupart du temps pur une analyse rigoureuse de la définition de l’intersection de deux segments de droite, celle-ci variant d’une application à une autre.
des angles (E,,E2).
au C~“~OU=
(voir
chapitre
deux
Sachant si en E, ““us sommes à l’intérieur ou à l’extérieur, nous appliquons le contrôle de parité su= la liste o~néebl;si”tersectia”s appartenant à l’arc (E,,E2) +d. tant que (E,cI~)L(E,CE~)). Chaque fois que nous =~“CO”~=““S un Po=“t, nous entrons ou so=to”s de la tache (voir figure 4.19).
. Lorsque nous traitons une tache par opposition so=fes d’approches peuvent être envisagées :.
Figure
4.19.:
L’inconvénient gonométrique arctg
, /
b) E, B tache Exemple
d’extraction
des parties
de cet algorithme est l’utilisation pour le calcul des angles.
visibles
(D=l)
de la fonction
rri-
au trait,
- le découpage implicite : nous raisonnons ici su= les surfaces engendrées par les contours des taches. Les taches résultant du découpage, sont caractérisées par u” ensemble de points (surface) et no” par leurs contO”ïs. - le découpage explicite ches, corane pour le dessin par la description de.leurs
a) E, B tache
a” dessin
: nous au trait. co”to”=s.
travaillons Les taches
su= les produites
contours des tasont définies
Une méthode d’analyse générale 88 dégage de cette étude : il s’agit de 1, technique du “suivi de contour”. En effet, elle permet de traite: indifférenrment, des co”to”=s convexes oll quelconques, en s”rm”“ta”t simplement toutes les singularités. D’autre part, les analyses des c”“to”=s effectués pour le découpage, pour le remplissage ou le hachurage à l’aide de cette technique étant identiques, nous pouvons effectuer ““e partie de ces traitements simultanément, en utilisant et en produisant des stl~ct”=es de données unifortis. Nous gagnons alors en espace mémoire et en vitesse d’exécution. Dans le cadre des contours “on polygonaux, la logique du suivi de CO”~“U= nous permet également de traiter simplement certains problèmes élémentaires (comparaison point-contour, découpage d’un segment et d’un a=C Il serait aussi intéressant d’envisager l’étude d’autres opéde cercle). rations comme l’intersection de deux ~““tours “on polygonaux convexes Par exemple.
Bibliographie
81> B. *cuAND, N.WESTE
'LUXLAND-WESTE
The edge-flag
algorithm.
A fil1
Trans.
vol.
no
coq..,
c-30,
method
1,
for
~anuary
scan displays.
IBEB
812
F. ALLIAUME Algorithmes pour identifier les ments de droite. Rapport de recherche, Université
configurations de Nantes,
CBENTLEY-OTTMAN
géométriques Mai
de 2 seg-
1981.
77>
P. *THERToN et K. WEILBR Hidden surface removal using polygon vol. ll(2) : 214, Sumer 1977.
ares
sorting.
Computer
graphies,
79>
J.L. BENTLEY, s. UTTMAN Algorithms for reporting and counting Trans. Camp, Vol. C-28, n-9, &eptember
raster
1981.
geometric 1979.
intersections.
IEEE
SI>
M. BLCCH Génération de taches bicolores - applicaçion rie - problèmes de nature ordinale. Thèse Docteur-Ingénieur, St-Etienne, Juillet
aux caractères
d'imprime-
1981.
plotter 1965.
77, BRESENHAM
A linear algorithm for incremental CGIP, Vol. 20, n02, Février 1977.
digital
display
of circula
Eyrolles
graphiques - Juillet
interactifs 1979.
1981.
79,
K.E. BRASSEL, R. FBGEAS An algorithm for shading of regions Computer Graphies, Vol. 13, n'3,rpp.
on vector 126-133.
display 1979.
devices.
arcs
CCO”EIGNOUX-G”EDJ
80,
P. CO”EIGNO”X, R. GUEDJ Computer generation of colored Proceedings of rhe IEEE, Vol.
planar parterns on TV-like 68, n-7, July 1980.
masters.
CCOUEIGNOUX Si>
<JARVIS
P. COUEIGNOUX Character generation by computer CGIP, 16, pp. 240-269, 1981. <EDMOND8
et
E.A.
al.
A.
Image handling IEEE Computer
DAM
FOLEY
Fundamentals Addison-Wesley
SEHAPPO,
S.A.R.
SCRIVENER
in-two-dimensiona design Graphies and Applications,
Vo1.2,
na5,
Juillet
1982.
H.
A.
VAN
DAM
N.R. FRANKLIN Evaluation of algarithms to display CGIP, Vol. 11, pp. 377-397, 1979.
C.
vector
plots
on raster
la production
RR IMI-info-3,
d'images Université
par
ordinateur.
de Nantes,
Juin
1982.
de taches sur une surface RR IMI-info-4, Université
à pointillage. de Nantes, Septem-
“EGRON
de nature de Nantes,
géoméJanvier
1983. CHEGRON G.
<MAXWELL-BAKER
<MARTINE2
et ses applica-
on
system C-28,,n"7,
Juillet
1979.
79> circles,
ellipses
and hyper-
82>
logiciel
systématique et matériel.
<MERIAUX
de la synthèse d'images. Thèse d'Etat, INPG, Grenoble,
Novembre
79, MERIAUX
Etude et réalisation d'un fonctionnant par taches. Thèse de Docteur-Ingénieur,
REGRON
La technique du suivi de contour en synthèse d'images tions. PI IRISA no 209, Université de Rennes. Octobre 1983.
picfures
1982.
M. 83b>
tone
1978.
P.C. MAXWELL, P.W. SAKER The generation of polygones representing boles. CGIP, Vol. 10, pp. 84-93, 1979.
Aspect de découpage et traitements d'images par ordinateur. RR IMI-info-7, Université
of continuous
792
F. MARTINE2 Vers une approche
83a>
Algorithmes élémentaires trique pour la production Con~. P et T n-82 35068,
1983.
M. LUCAS Contribution à l'étude des techniques de co~nications graphiques avec un ordinateur. Eléments de base de logiciels graphiques interactifs. Thèse d’Etat, IMAG Grenoble, Décembre 1977.
<"EGRON 82b> G. HRGRON Techniques de remplissage Con~. P et T n'82 35068, bre 1982.
Septembre
devices
HEGRON
pour
de Rennes,
d'image
LIEBERMAN
W.D. LITTLE, R. SE"PT An area shading display IEEE Trans. Cap., Vol.
82a>
Algorithmes élémentaires Etude bibliographique. Con~. P et T n'S2 35068,
la synthèse
78>
of Interactive Comp~ter Graphitis Systems Programming Series, 1982.
79>
(HEGRON
pour
76)
How to color in a coloring book Camp. graphies, Vol. 12, August
82> et
et al.
él&mentaires
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.
82>
EDMONDS,
83c>
G. HEGRON Etude comparative d'algorithmes par ordinateur. Thèse de 3ème cycle, Université
<MORVAN-LUCAS P. MORVAN, cages et
tet%inal
graphique
Université
couleur
de Lille,
tridimensionnel
Janvier
1979.
762 M.
LUCAS
ordinateur Ed. Larousse, Série
- Introduction informatique,
à l'infographie Paris, Septembre
interactive 1976.
195
Bibliographie
G-mmui-sPRouLL w.
CSHAMOS
73,
NEWMAN,
R.F.
M.
SPRo”LL
Principles of interactive Mc. Graw-Hill, New-York,
IO’ROURKE J. A
et
al.
O’ROURKE,
ne"
C.B.
“01.19,
<S*AN1
CHIEN,
for n-4,
theory
of Camputing,
tiy
SHANI
Filling regions Camp. graphies,
in binary raster images : a graph-cheorie Vol. 14, n03, pp. 321-327, July 1980.
approach
T.
OISON
intersection pp.
et
D.
canvex
384-391,
Août
<SHAMOS-HOEY 76>
NADDOR
M. S"AMOS, s. HOEY Geomtric intersection 17th FOCS Conference,
polygons.
1982.
problems 1976.
79)
T. PAVLIDIS Filling algorithms CGIP, Vol.10, pp. CPAVLIDIS
<SIC0
for 126-141,
raster June
(PAVLIDIS
graphies 1979.
<SMITN
in raster graphies Vol. 15, n'3, August
1981.
.,.A.
<SUTHERLAN&PROULL
M.A. ROY Etude comparative d'algorithmes pour l'amélioration de dessins sur une surface point par point IRISA Rennes, PI n'189, Université de Nantes, RR IMI-Info 10, 1983.
au trait Janvier
(SECHER 83) de saisie
de Nantes,
Ayqust
1979.
68)
et restitution
RR IMI-Info
de
9, Janvier
D.C.,
p.765.
<WEILER 80> K. WEILER Polygon comparison using a graphe Camp. graphies SIGGRAPE-ACM, Vol. Notation
Université
276-283,
I.E. SUTHERLAND, R.F. SPROULL A clipping divider FICC 1968, Thompson baaks, Washington,
logiciel
pp.
I.E. SUTHERLAND, G.W. HODGMAN Reentrant polygon clipping Janvier 1974. CACM, Vol. 17, n’l,
ADAMS
d'un
1982.
CSUTHERLAND-HODGMAN 742
elements for computer graphies bmk company, New-York, 1976.
E. SECHER Conception et réalisation cartes élémentaires. IRISA Rennes, PI "'188, 1983.
Mars
SMITH
Tint fil1 Proc. SIGGRAPK-ACM,
76)
ROGERS,
aux caractères
79>
A.R.
T. PAVLIDIS Algorithme for graphies and Image Processing Ed. Springer-Verlay, Bell Laboratories, 1982.
Mathematical Mc Graw-Hi11
SIC0
Génération de taches bicolores - Applications merie - Problème de nature géométrique. Thèse de Docteur-Ingénieur, Saint-Etienne,
82>
82> c.
Sl>
T. PAVLIDIS Contour Filling Camp. graphies,
D.F.
on the
BO>
H.
computer graphies Second Edition 1979.
complexify of the 7th ACM symposium
82,
algarithm
CGIP,
SHAMOS
Geometric Proceeding 1985.
computer graphies First Edition 1973.
aiEwn4N-sPRouLL,79> w. NEWMAN, R.F. SPROULL Principles of interactive Mc. Graw-Hill, New-York,
75>
; CLIP = Computer
Graphies
representation 14, na3, Juillet
1980.
and Image Processing.
d'impri-
Liste des algorithmes
GENERATION DES COURBES Méthode générale : IORDAN et a, ......................................... Segments de droite : LUCAS. ............................................. BRESENHAM.. ...................................... Ensemble de segments de droite : compression. ............................... répétition .................................. Cercles : BRESENHAM .................................................. Arcs de cercles : BRESENHAM ........................................... Ellipses simples : ROY. .................................................. quelconques:ROY ............................................... Arcs de paraboles : ROY ................................................. Hyperboles .............................................................
15 22 23 24 24 26 30
GENERATION AMELIOREE DES COURBES Segments de droite : ROY ................................................. Ellipses simples : ROY. .................................................. q”e,conq”es:ROY ............................................... Arcs de parabole : ROY. .................................................
49 52 54 57
SIMULATION DE GRISE Cellulesp~éfinies ...................................................... Elimination d’effets secondaires : ROY ......................................
60 61
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 éléments simples. ........................................
70 74 81 83 86 89 94 ...
II3 117 Il0
DECOUPAGE Découpage d’un segment de droite par “ne fenétre rectangulaire : SUTHERLAND et SPROULL. ............................. PAVLIDIS ............................................. polygonaleconvexe :PA"LIDIS ....................................... polygo”*e”o”-co”“exe ............................................... non-po,ygonalenon-convexe ........................................... Découpage d’un arc de cercle pa “ne fenétre non-polygonale non-~nvexe. .......... Découpage de contours polygonaux découpage d’un polygone par “ne droite : SUTHERLAND et HODGMAN ...... imersection de deux polygones convexes : SHAMOS........................ ................. O’ROURKEetal.. Découpage de taches découpage implicite et explicite ......................................... découpage d’une tache par une autre tache définie par un ensemble de points .............................. déco”page&de”x(aches .............................................. TRAITEMENTS DE NATURE GEOMETRIQUE ................................. Comparaisonpoint-segmentdedroite.. Comparaison point - contour contour polygonal conveke : SHAMOS. .................................. contourpo,ygonalnon-convexe ......................................... contour non-polygonal non-convexe ..................................... I”tersectio” dedeuxsegmentsdedroite ............................................. d’un ensemble de segments de droik : BENTLEY et OTTMAN. ............... Unpolygoneest-ilconvexe? ............................................... DIVERS Opération entre deux listes d’intervalles union.. ........................................................... intersection ......................................................... di~érence .......................................................... Inscription d’un texte dans un polygone non-convexe. ............................
139 141 145 149 184 187 152 153 164 173 176 180
134.143 134 135 183 168 109 170
177 178 179 96
Index
L’informatique . Ainsi naquit I’informatique, par R. Moreau . Principes des ordinateurs, par P. de Miribel . Emploi des ordinateurs, par J.-C. Faure l Aide-m6moire d’informatique, par Ch. Berthet . Let’s talk D.P. ; lexique d’informatique, par J.-P. Drieux et A. Jarlaud l D.P. words ; dictionnaire d’informatique anglais-français, français-anglais, par G. Fehlmann La microinformatique l Micro-informatique ; architecture, interfaces et logiciel, par J.-D. Nicoud . Le choix d’un microordinateur, par H.-P. Blomeyer-Bartenstein . Introduction aux microprocesseurs et aux microordinateurs, par C. Pariot . Microprocesseurs : du 6800 BU 6809, modes d’interfaçage, par G. Révellin . Interfaçage des microprocesseurs. par M. Robin et T. Ma~rin Les applications de l’informatique l Analyse organique. tomes 1 et 2, par C. Cachet et A. Galliot . Les systèmes d’information ; analyse et conception, par Galacsi l Systèmes d’exploitation des ordinateurs, par Crocus . Bases de donnees, méthodes pratiques sur mai et mini-ordinateurs, D. Martin . Les fichiers, par C. Jouffroy et C. Létang . Bases de données et systèmes relationnels, par C. Delobel et M. Adiba . Systèmes informatiq&s tipsrtis, par Comafion l TéKinformatique, par C. Macchi et J.-F. Guilbert . Bases d’informations gén&ali&s, par C. Chtisment. J.-B. Crampes et G. Zurfluh L’art de programmer l Initiation B I’analyse et à la programmation, par J.-P. Laurent . Exercices comment& d’analyse 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 parallèles, par F. André, D. Herman J.-P. Vejus . Algorithmique du pamll&me, par M. Raynal 0 Synthèse d’image : algorithmes &lémentaires, par G. Hégron Les‘langages de programmation . La programmation en assembleur, par J. Rinére . Exercices d’assembleur et de macro-assembleur, par J. Rivière . Basic : programmation des microordinateurs, par A. Checroun . Introduction B A.P.L., par S. Pommier . Cobol. Initiation et pratique, par M. Barès 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