Upload
terrel
View
53
Download
2
Embed Size (px)
DESCRIPTION
Clipping. Antonio Cisternino. Parte di queste slides sono a cura del Dott. Cignoni. Clipping. Il problema del clipping è genericamente risolvibile per qualunque superficie chiusa - PowerPoint PPT Presentation
Citation preview
ClippingClipping
Antonio CisterninoAntonio Cisternino
Parte di queste slides sono a cura del Dott. Cignoni
ClippingClipping
Il problema del clipping è Il problema del clipping è genericamente risolvibile per genericamente risolvibile per qualunque superficie chiusaqualunque superficie chiusa
A noi però interessa risolvere solo il A noi però interessa risolvere solo il problema di fare clipping su problema di fare clipping su rettangoli, dato che le porzioni di rettangoli, dato che le porzioni di schermo che l’applicazione gestisce schermo che l’applicazione gestisce sono rettangolisono rettangoli
Clipping di un puntoClipping di un punto
Un punto si trova all’interno del Un punto si trova all’interno del rettangolo di clipping se sono rettangolo di clipping se sono soddisfatte le 4 disuguaglianze:soddisfatte le 4 disuguaglianze:
Qualora una qualsiasi di queste Qualora una qualsiasi di queste disuguaglianze non valesse il punto è disuguaglianze non valesse il punto è al di fuori del rettangolo di clippingal di fuori del rettangolo di clipping
maxminmaxmin , yyyxxx
Clipping di un segmentoClipping di un segmento
Per fare il clipping di un segmento, si Per fare il clipping di un segmento, si considera la posizione dei suoi punti estremi:considera la posizione dei suoi punti estremi:Se i due punti sono entrambi dentro, l’intero Se i due punti sono entrambi dentro, l’intero
segmento lo èsegmento lo èSe un punto è dentro e uno fuori il segmento Se un punto è dentro e uno fuori il segmento
interseca il rettangolo e si deve calcolare interseca il rettangolo e si deve calcolare l’intersezionel’intersezione
Se entrambi i punti sono fuori dal rettangolo il Se entrambi i punti sono fuori dal rettangolo il segmento può o non può intersecare il rettangolo e segmento può o non può intersecare il rettangolo e si devono fare altri calcoli per determinare se le si devono fare altri calcoli per determinare se le intersezioni ci sono, e se ci sono dove sonointersezioni ci sono, e se ci sono dove sono
Clipping di un segmentoClipping di un segmento
Se i due punti sono Se i due punti sono entrambi dentro, entrambi dentro, l’intero segmento l’intero segmento (AB) lo è(AB) lo è
J
I
H
G
J
IG
H
D
D
C
F
E
B
A
Per fare il clipping di un segmento, si considera la posizione dei suoi punti estremi:
Clipping di un segmentoClipping di un segmento
Se un punto è Se un punto è dentro e uno fuori dentro e uno fuori il segmento (CD) il segmento (CD) interseca il interseca il rettangolo e si rettangolo e si deve calcolare deve calcolare l’intersezione (D’)l’intersezione (D’)
J
I
H
G
J
IG
H
D
D
C
F
E
B
A
Per fare il clipping di un segmento, si considera la posizione dei suoi punti estremi:
Clipping di un segmentoClipping di un segmento
Se entrambi i punti Se entrambi i punti sono fuori dal sono fuori dal rettangolo (EF, GH, IJ) rettangolo (EF, GH, IJ) il segmento può o il segmento può o non può intersecare il non può intersecare il rettangolo e si rettangolo e si devono fare altri devono fare altri calcoli per calcoli per determinare se le determinare se le intersezioni ci sono, e intersezioni ci sono, e se ci sono dove sonose ci sono dove sono
J
I
H
G
J
IG
H
D
D
C
F
E
B
A
Per fare il clipping di un segmento, si considera la posizione dei suoi punti estremi:
Clipping di un segmentoClipping di un segmento
L’approccio più L’approccio più diretto alla soluzione diretto alla soluzione del problema del problema sarebbe quello di sarebbe quello di fare il calcolo delle fare il calcolo delle intersezioni tra la intersezioni tra la retta su cui giace il retta su cui giace il segmento e le 4 segmento e le 4 rette su cui rette su cui giacciono i lati del giacciono i lati del rettangolo di clippingrettangolo di clipping
J
I
H
G
J
IG
H
D
D
C
F
E
B
A
Clipping di un segmentoClipping di un segmento
Una volta Una volta individuati i punti individuati i punti di intersezione di intersezione verificare poi se verificare poi se essi appartengono essi appartengono effettivamente al effettivamente al segmento ed al segmento ed al lato (Glato (G e H e H) ) oppure no (Ioppure no (I e J e J). ).
J
I
H
G
J
IG
H
D
D
C
F
E
B
A
Clipping di un segmentoClipping di un segmento
Questo calcolo si Questo calcolo si ppuuòò facilmente facilmente compiere compiere utilizzando utilizzando l’equazione l’equazione parametrica della parametrica della retta:retta: J
I
H
G
J
IG
H
D
D
C
F
E
B
A)( 010 yytyy
)( 010 xxtxx
1,0t
Clipping di un segmentoClipping di un segmento
Le rette si Le rette si intersecano se, dopo intersecano se, dopo aver risolto aver risolto contemporaneamentcontemporaneamente i due insiemi di e i due insiemi di equazioni che equazioni che descrivono il descrivono il segmento ed il lato in segmento ed il lato in ttlatolato e e ttsegmsegm i due valori i due valori rientrano entrambi rientrano entrambi nell’intervallo [0, 1]nell’intervallo [0, 1]
J
I
H
G
J
IG
H
D
D
C
F
E
B
A
Clipping di un segmentoClipping di un segmento
Si dovrebbe inoltre Si dovrebbe inoltre verificare in anticipo verificare in anticipo se per caso le linee se per caso le linee sono parallele prima sono parallele prima di calcolare di calcolare l’intersezionel’intersezione
Un algoritmo del Un algoritmo del genere funziona ma genere funziona ma è costoso e quindi è costoso e quindi inefficienteinefficiente
J
I
H
G
J
IG
H
D
D
C
F
E
B
A
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
L’algoritmo di clipping di Cohen-L’algoritmo di clipping di Cohen-Sutherland si basa su un approccio Sutherland si basa su un approccio completamente diversocompletamente diverso
La considerazione di base che si fa è La considerazione di base che si fa è che le rette che delimitano il che le rette che delimitano il rettangolo che definisce la regione di rettangolo che definisce la regione di clipping suddividono il piano in nove clipping suddividono il piano in nove regioniregioni
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
La considerazione La considerazione di base che si fa è di base che si fa è che le rette che che le rette che delimitano il delimitano il rettangolo che rettangolo che definisce la regione definisce la regione di clipping di clipping suddividono il suddividono il piano in nove piano in nove regioniregioni
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Ad ogni regione Ad ogni regione viene associato un viene associato un codice numerico di codice numerico di quattro cifre quattro cifre binariebinarie
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Il codice è formato Il codice è formato da 4 bit, vero o da 4 bit, vero o falso:falso:
bit 1bit 1 sopra l’edge in altosopra l’edge in alto y y yymaxmax
bit 2bit 2 sotto l’edge in bassosotto l’edge in bassoy y yyminmin
bit 3bit 3 a dx dell’edge di dxa dx dell’edge di dx x x xxmaxmax
bit 4bit 4 a sx dell’edge di sxa sx dell’edge di sx x x xxminmin
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Il codice è formato Il codice è formato da 4 bit, vero o da 4 bit, vero o falso:falso:
bit 1bit 1 sopra l’edge in altosopra l’edge in alto y y yymaxmax
bit 2bit 2 sotto l’edge in bassosotto l’edge in bassoy y yyminmin
bit 3bit 3 a dx dell’edge di dxa dx dell’edge di dx x x xxmaxmax
bit 4bit 4 a sx dell’edge di sxa sx dell’edge di sx x x xxminmin
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Il codice è formato Il codice è formato da 4 bit, vero o da 4 bit, vero o falso:falso:
bit 1bit 1 sopra l’edge in altosopra l’edge in alto y y yymaxmax
bit 2bit 2 sotto l’edge in bassosotto l’edge in bassoy y yyminmin
bit 3bit 3 a dx dell’edge di dxa dx dell’edge di dx x x xxmaxmax
bit 4bit 4 a sx dell’edge di sxa sx dell’edge di sx x x xxminmin
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Il codice è formato Il codice è formato da 4 bit, vero o da 4 bit, vero o falso:falso:
bit 1bit 1 sopra l’edge in altosopra l’edge in alto y y yymaxmax
bit 2bit 2 sotto l’edge in bassosotto l’edge in bassoy y yyminmin
bit 3bit 3 a dx dell’edge di dxa dx dell’edge di dx x x xxmaxmax
bit 4bit 4 a sx dell’edge di sxa sx dell’edge di sx x x xxminmin
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Il codice è formato Il codice è formato da 4 bit, vero o da 4 bit, vero o falso:falso:
bit 1bit 1 sopra l’edge in altosopra l’edge in alto y y yymaxmax
bit 2bit 2 sotto l’edge in bassosotto l’edge in bassoy y yyminmin
bit 3bit 3 a dx dell’edge di dxa dx dell’edge di dx x x xxmaxmax
bit 4bit 4 a sx dell’edge di sxa sx dell’edge di sx x x xxminmin
1010
0010
011001000101
0001
1001 1000
0000
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Con queste Con queste premesse premesse l’operazione di l’operazione di clipping si risolve clipping si risolve con opportune con opportune codifiche e codifiche e confronti tra codici confronti tra codici numericinumerici
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Per fare il clipping Per fare il clipping di un segmento si di un segmento si codificano i suoi codificano i suoi punti estremi sulla punti estremi sulla base della regione base della regione del piano a cui del piano a cui appartengono e poi appartengono e poi si confrontano i si confrontano i due codicidue codici
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Se il codice di Se il codice di entrambi i punti entrambi i punti estremi è 0000, estremi è 0000, allora si può allora si può banalmente banalmente decidere che il decidere che il segmento è segmento è interamente interamente all’internoall’interno
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Altrettanto Altrettanto banalmente si può banalmente si può decidere che un decidere che un segmento è tutto segmento è tutto all’esterno quando all’esterno quando l’operazione di l’operazione di AND logico tra i AND logico tra i codici dei due punti codici dei due punti ha un risultato ha un risultato diverso da 0diverso da 0
1001 1010 = 10000001 0101 = 00010100 0100 = 0100
1010
0010
011001000101
0001
1001 1000
0000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
In questo caso, In questo caso, infatti, entrambi i infatti, entrambi i punti stanno in uno punti stanno in uno stesso semipiano stesso semipiano (quello identificato (quello identificato dal bit a 1 del dal bit a 1 del risultato) e quindi il risultato) e quindi il segmento non segmento non interseca il interseca il rettangolo di rettangolo di clippingclipping
1010
0010
011001000101
0001
1001 1000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Se il risultato dell’AND Se il risultato dell’AND è invece 0000è invece 0000
0000
1010
0010
011001000101
0001
1000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Se il risultato dell’AND Se il risultato dell’AND è invece 0000è invece 0000 si cerca quale dei due si cerca quale dei due
punti estremi giace punti estremi giace fuori dal rettangolo fuori dal rettangolo (almeno uno lo è)(almeno uno lo è)
0000
1001
1010
0010
011001000101
0001
1001 1000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Se il risultato Se il risultato dell’AND è invece dell’AND è invece 00000000 si cerca quale dei due si cerca quale dei due
punti estremi giace punti estremi giace fuori dal rettangolo fuori dal rettangolo (almeno uno lo è)(almeno uno lo è)
si suddivide il si suddivide il segmento in due parti segmento in due parti calcolando calcolando l’intersezione del l’intersezione del segmento con i bordi segmento con i bordi del rettangolodel rettangolo
0000
1010
0010
011001000101
0001
1001 1000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Se il risultato dell’AND è Se il risultato dell’AND è invece 0000invece 0000 si cerca quale dei due si cerca quale dei due
punti estremi giace fuori punti estremi giace fuori dal rettangolo (almeno dal rettangolo (almeno uno lo è)uno lo è)
si suddivide il segmento si suddivide il segmento in due parti calcolando in due parti calcolando l’intersezione del l’intersezione del segmento con i bordi del segmento con i bordi del rettangolorettangolo
una si scarta (poiché una si scarta (poiché giace fuori dal rettangolo) giace fuori dal rettangolo) e si itera il procedimento e si itera il procedimento
0000
1010
0010
011001000101
0001
1001 1000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Se il risultato dell’AND è Se il risultato dell’AND è invece 0000invece 0000 si cerca quale dei due si cerca quale dei due
punti estremi giace fuori punti estremi giace fuori dal rettangolo (almeno dal rettangolo (almeno uno lo è)uno lo è)
si suddivide il segmento si suddivide il segmento in due parti calcolando in due parti calcolando l’intersezione del l’intersezione del segmento con i bordi del segmento con i bordi del rettangolorettangolo
una si scarta (poiché una si scarta (poiché giace fuori dal rettangolo) giace fuori dal rettangolo) e si itera il procedimento e si itera il procedimento
0000
1010
0010
011001000101
0001
1001 1000
Algoritmo di Cohen-Algoritmo di Cohen-SutherlandSutherland
Se il risultato dell’AND è Se il risultato dell’AND è invece 0000invece 0000 si cerca quale dei due si cerca quale dei due
punti estremi giace fuori punti estremi giace fuori dal rettangolo (almeno dal rettangolo (almeno uno lo è)uno lo è)
si suddivide il segmento si suddivide il segmento in due parti calcolando in due parti calcolando l’intersezione del l’intersezione del segmento con i bordi del segmento con i bordi del rettangolorettangolo
una si scarta (poiché una si scarta (poiché giace fuori dal rettangolo) giace fuori dal rettangolo) e si itera il procedimento e si itera il procedimento
0000
L’algoritmo Liang-BarskyL’algoritmo Liang-Barsky
L’algoritmo di Cohen-Sutherland può L’algoritmo di Cohen-Sutherland può fare intersezioni a vuotofare intersezioni a vuoto
Un altro algoritmo di Clipping è Un altro algoritmo di Clipping è quello di Liang-Barskyquello di Liang-Barsky
Questo algoritmo elabora un metodo Questo algoritmo elabora un metodo ingegnoso per calcolare le ingegnoso per calcolare le intersezioni usando la forma intersezioni usando la forma parametrica dell’equazione della parametrica dell’equazione della rettaretta
Le disuguaglianzeLe disuguaglianze
Se usiamo la forma parametrica nel test di Se usiamo la forma parametrica nel test di appartenenza otteniamo:appartenenza otteniamo:
xxminmin ≤ ≤ xxaa + ( + (xxbb - x - xaa))tt ≤ ≤ x xmaxmax
yyminmin ≤ ≤ yyaa + ( + (yybb - y - yaa))tt ≤ ≤ y ymaxmax
I punti del segmento sono ottenuti per I punti del segmento sono ottenuti per valori valori tt[0, 1][0, 1]
Poniamo:Poniamo:
xx = = xxbb – – xxaa
yy = = yybb – – yyaa
Le disuguaglianzeLe disuguaglianzeRiscriviamo le disuguaglianze nella forma:Riscriviamo le disuguaglianze nella forma:
sskkt t ≤≤ q qkk
Dove Dove kk è un indice da 0 a 3 che riferisce è un indice da 0 a 3 che riferisce una delle quattro disuguaglianzeuna delle quattro disuguaglianze
AbbiamoAbbiamo
ss11 = - = -xx qq11 = x = xaa - x - xminmin xxminmin ≤ ≤ xxaa + + x tx t
ss22 = = xx qq22 = x = xmaxmax - x - xaa xxaa + + x t x t ≤ ≤ xxmaxmax
ss33 = - = -yy qq33 = y = yaa - y - yminmin yyminmin ≤ ≤ yyaa + + y ty t
ss44 = = yy qq44 = y = ymaxmax - y - yaa yyaa + + y t y t ≤ ≤ yymaxmax
OsservazioniOsservazioniNotiamo che l’intersezione tra il vincolo Notiamo che l’intersezione tra il vincolo
kk e la retta su cui giace il segmento si e la retta su cui giace il segmento si ha quando ha quando sskkt= qt= qkk..
Inoltre analizzando Inoltre analizzando sskk e e qqkk con il vincolo con il vincolo per per tt è possibile trovare criteri per è possibile trovare criteri per evitarne il calcolo se non necessarioevitarne il calcolo se non necessario
Per i vincoli 1 e 3 se ci muoviamo da Per i vincoli 1 e 3 se ci muoviamo da AA a a BB andiamo dall’interno verso l’esterno andiamo dall’interno verso l’esterno
Viceversa per i vincoli 2 e 4 in senso Viceversa per i vincoli 2 e 4 in senso oppostoopposto
Il testIl test
Poniamo quindi:Poniamo quindi:ttkk = q = qkk/s/skk sskk ≠ 0≠ 0
ttee = max = max((0, t0, t11, t, t33))
ttuu = min = min((1, t1, t22, t, t44))
Se Se sskk = = 00 per qualche per qualche kk allora siamo allora siamo paralleli ad uno dei vincoli: testiamo paralleli ad uno dei vincoli: testiamo quindi esplicitamente l’appartenenzaquindi esplicitamente l’appartenenza
Se Se ttee > t > tuu allora il segmento viene scartatoallora il segmento viene scartatoAltrimenti si calcolano Altrimenti si calcolano xx e e yy delle delle
intersez.intersez.
Clipping di poligoniClipping di poligoni
Clipping di poligoniClipping di poligoni
Fare clipping di un Fare clipping di un poligono è poligono è un’operazione più un’operazione più complessa che complessa che farlo di un farlo di un segmento dato che segmento dato che i casi da trattare i casi da trattare sono vari e diversi sono vari e diversi tra lorotra loro
Poligono convesso Poligono convesso
Clipping di poligoniClipping di poligoni
Fare clipping di un Fare clipping di un poligono è poligono è un’operazione più un’operazione più complessa che farlo complessa che farlo di un segmento dato di un segmento dato che i casi da trattare che i casi da trattare sono vari e diversi sono vari e diversi tra lorotra loro
Poligono concavo Poligono concavo che clippato si che clippato si dividedivide
Clipping di poligoniClipping di poligoni
Fare clipping di un Fare clipping di un poligono è poligono è un’operazione più un’operazione più complessa che farlo complessa che farlo di un segmento di un segmento dato che i casi da dato che i casi da trattare sono vari e trattare sono vari e diversi tra lorodiversi tra loro
Poligono con molti Poligono con molti spigoli esternispigoli esterni
Clipping di poligoniClipping di poligoni
L’approccio iniziale L’approccio iniziale di soluzione di soluzione potrebbe essere potrebbe essere quello di quello di confrontare ogni confrontare ogni lato del poligono lato del poligono con le 4 rette che con le 4 rette che delimitano il delimitano il rettangolo di rettangolo di clippingclipping
Clipping di poligoniClipping di poligoni
Un approccio di Un approccio di questo tipo porta a questo tipo porta a compiere molte compiere molte operazioni (costose operazioni (costose quali i calcoli di quali i calcoli di intersezioni) di cui intersezioni) di cui una gran parte una gran parte possono essere possono essere inutiliinutili
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
L’idea alla base dell’algoritmo di L’idea alla base dell’algoritmo di Sutherland-Hodgman è applicare una Sutherland-Hodgman è applicare una strategia risolutiva del tipo strategia risolutiva del tipo divide et divide et imperaimpera
Il problema viene così ricondotto a Il problema viene così ricondotto a quello di calcolare il clipping di un quello di calcolare il clipping di un poligono qualsiasi rispetto ad una poligono qualsiasi rispetto ad una rettaretta
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
L’applicazione, in L’applicazione, in successione, della successione, della procedura alle 4 procedura alle 4 rette che rette che definiscono il definiscono il rettangolo di rettangolo di clipping avrà come clipping avrà come risultato il clipping risultato il clipping del poligono sul del poligono sul rettangolo rettangolo
Poligono originale
Clip in alto
Clip a destra
Clip in basso
Clip a sinistra
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
L’algoritmo riceve in ingresso una L’algoritmo riceve in ingresso una serie di vertici serie di vertici vv11, , vv22,,,,vvnn che che definiscono definiscono nn spigoli: gli spigoli: gli nn1 da 1 da vvii aa vvi+1i+1 e quello da e quello da vvnn a a vv11
Dopo aver fatto clipping su una retta Dopo aver fatto clipping su una retta ritorna in output un’altra serie di ritorna in output un’altra serie di vertici che definiscono il poligono vertici che definiscono il poligono clippato clippato
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
Il confronto si effettua scandendo il Il confronto si effettua scandendo il poligono in senso orario partendo dal poligono in senso orario partendo dal vertice vertice vvnn fino a fino a vv11 per poi tornare a per poi tornare a vvnn
Per ogni passo si confronta la Per ogni passo si confronta la relazione esistente tra due vertici relazione esistente tra due vertici successivi e la retta di clippingsuccessivi e la retta di clipping
Per ogni caso i vertici indicati con Per ogni caso i vertici indicati con verranno inseriti nella lista di outputverranno inseriti nella lista di output
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
Le relazioni Le relazioni possono essere di possono essere di 4 tipi:4 tipi:Spigolo tutto Spigolo tutto
internointerno
Caso 1
p
s
Dentro Fuori
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
Le relazioni Le relazioni possono essere di possono essere di 4 tipi:4 tipi:Spigolo tutto Spigolo tutto
internointernoSpigolo uscenteSpigolo uscente
Caso 2
ps
Dentro Fuori
i
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
Le relazioni Le relazioni possono essere di possono essere di 4 tipi:4 tipi:Spigolo tutto Spigolo tutto
internointernoSpigolo uscenteSpigolo uscenteSpigolo tutto Spigolo tutto
esternoesterno
p
s
Dentro Fuori
Caso 3
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
Le relazioni Le relazioni possono essere di possono essere di 4 tipi:4 tipi:Spigolo tutto Spigolo tutto
internointernoSpigolo uscenteSpigolo uscenteSpigolo tutto Spigolo tutto
esternoesternoSpigolo entranteSpigolo entrante
Caso 4
p s
Dentro Fuori
i
EsempioEsempio
Vediamo come Vediamo come opera l’algoritmo opera l’algoritmo nel caso in figuranel caso in figura
I vertici in nero I vertici in nero sono gli originali, sono gli originali, quelli in arancio quelli in arancio sono originati sono originati dall’algoritmo di dall’algoritmo di clipping sulla retta clipping sulla retta rossarossa
v4
v3
v2
v1
EsempioEsempio
Vediamo come Vediamo come opera l’algoritmo opera l’algoritmo nel caso in figuranel caso in figura
I vertici in nero I vertici in nero sono gli originali, sono gli originali, quelli in arancio quelli in arancio sono originati sono originati dall’algoritmo di dall’algoritmo di clipping sulla retta clipping sulla retta rossarossa
v4
v3
v2
v1
Spigolouscente
v1
EsempioEsempio
Vediamo come Vediamo come opera l’algoritmo opera l’algoritmo nel caso in figuranel caso in figura
I vertici in nero I vertici in nero sono gli originali, sono gli originali, quelli in arancio quelli in arancio sono originati sono originati dall’algoritmo di dall’algoritmo di clipping sulla retta clipping sulla retta rossarossa
v2Spigoloentrante
v4
v3
v1
EsempioEsempio
Vediamo come Vediamo come opera l’algoritmo opera l’algoritmo nel caso in figuranel caso in figura
I vertici in nero I vertici in nero sono gli originali, sono gli originali, quelli in arancio quelli in arancio sono originati sono originati dall’algoritmo di dall’algoritmo di clipping sulla retta clipping sulla retta rossarossa
v2
Spigolouscente
v4
v3
EsempioEsempio
Vediamo come Vediamo come opera l’algoritmo opera l’algoritmo nel caso in figuranel caso in figura
I vertici in nero I vertici in nero sono gli originali, sono gli originali, quelli in arancio quelli in arancio sono originati sono originati dall’algoritmo di dall’algoritmo di clipping sulla retta clipping sulla retta rossarossa
v2
Spigoloentrante
v4
v3
v1
EsempioEsempio
Vediamo come Vediamo come opera l’algoritmo opera l’algoritmo nel caso in figuranel caso in figura
I vertici in nero I vertici in nero sono gli originali, sono gli originali, quelli in arancio quelli in arancio sono originati sono originati dall’algoritmo di dall’algoritmo di clipping sulla retta clipping sulla retta rossarossa
v5
v3
v4
v6
v1
v2
Algoritmo diAlgoritmo diSutherland-HodgmanSutherland-Hodgman
Una cosa da tenere di conto sarà Una cosa da tenere di conto sarà l’eventualità che in output dall’algoritmo si l’eventualità che in output dall’algoritmo si possano ottenere dei lati che si possano ottenere dei lati che si sovrappongono ai bordi del rettangolo di sovrappongono ai bordi del rettangolo di clippingclipping
Tali lati si possono generare quando un Tali lati si possono generare quando un poligono si divide in duepoligono si divide in due
È necessario allora aggiungere una fase di È necessario allora aggiungere una fase di post-processing all’algoritmo per eliminarlipost-processing all’algoritmo per eliminarli