57
Clipping Clipping Antonio Cisternino Antonio Cisternino Parte di queste slides sono a cura del Dott. C

Clipping

  • 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

Page 1: Clipping

ClippingClipping

Antonio CisterninoAntonio Cisternino

Parte di queste slides sono a cura del Dott. Cignoni

Page 2: Clipping

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

Page 3: Clipping

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

Page 4: Clipping

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

Page 5: Clipping

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:

Page 6: Clipping

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:

Page 7: Clipping

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:

Page 8: Clipping

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

Page 9: Clipping

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

Page 10: Clipping

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

Page 11: Clipping

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

Page 12: Clipping

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

Page 13: Clipping

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

Page 14: Clipping

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

Page 15: Clipping

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

Page 16: Clipping

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

Page 17: Clipping

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

Page 18: Clipping

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

Page 19: Clipping

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

Page 20: Clipping

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

Page 21: Clipping

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

Page 22: Clipping

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

Page 23: Clipping

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

Page 24: Clipping

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

Page 25: Clipping

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

Page 26: Clipping

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

Page 27: Clipping

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

Page 28: Clipping

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

Page 29: Clipping

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

Page 30: Clipping

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

Page 31: Clipping

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

Page 32: Clipping

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

Page 33: Clipping

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

Page 34: Clipping

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

Page 35: Clipping

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

Page 36: Clipping

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.

Page 37: Clipping

Clipping di poligoniClipping di poligoni

Page 38: Clipping

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

Page 39: Clipping

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

Page 40: Clipping

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

Page 41: Clipping

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

Page 42: Clipping

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

Page 43: Clipping

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

Page 44: Clipping

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

Page 45: Clipping

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

Page 46: Clipping

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

Page 47: Clipping

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

Page 48: Clipping

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

Page 49: Clipping

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

Page 50: Clipping

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

Page 51: Clipping

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

Page 52: Clipping

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

Page 53: Clipping

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

Page 54: Clipping

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

Page 55: Clipping

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

Page 56: Clipping

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

Page 57: Clipping

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