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

Slides:



Advertisements
Presentazioni simili
Appunti di analisi matematica: Integrale Definito
Advertisements

Funzioni di due variabili
Segmenti.
I Poligoni.
Cap. 11 I Quadrilateri.
GEOMETRIA IPERBOLICA.
Teorema di Talete Un fascio di rette parallele determina su due trasversali classi di segmenti proporzionali. A’ A B B’ AB:BC=A’B’:B’C’ C C’
Definizione e caratteristiche
angoli orientati negativamente se la rotazione avviene in verso orario
Iterazione enumerativa (for)
Elementi di Matematica
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 29/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
Scuola Primaria “A.Mantegna “ – Padova -
Il problema della ricerca Algoritmi e Strutture Dati.
Il problema della ricerca Algoritmi e Strutture Dati.
Costruzione di Interfacce Lezione 13 Clipping e HSR
Computer Graphics Marco Tarini Lezione 7: rasterizzazione la fabbrica dei frammenti Università dellInsubria Facoltà di Scienze MFN - Varese Corso di Laurea.
DISEQUAZIONI Chiedersi quando un trinomio dato è positivo significa ricercare per quali valori di x la variabile y è positiva; in altre parole si devono.
Algoritmi e Strutture Dati
GEOMETRIA SOLIDA o STEREOMETRIA
Forza Magnetica su un conduttore
IL GIOCO DELLA LOGICA.
I POLIGONI E IN PARTICOLARE I TRIANGOLI..
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
GEOMETRIA EUCLIDEA o RAZIONALE
Radix-Sort(A,d) // A[i] = cd...c2c1
Determinazione delle superfici visibili
Algoritmi e Strutture Dati
Prof. Cerulli – Dott.ssa Gentili
Programmazione grafica 1
Che cosa è un insieme convesso?
Vertici, spigoli e facce di cubi a più dimensioni
I POLIGONI.
GEOMETRIA EUCLIDEA.
GEOMETRIA DOMANDE STIMOLO:
Elementi fondamentali della
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
4 < 12 5 > −3 a < b a > b a ≤ b a ≥ b
Teorema derivabile almeno n volte (con n maggiore o uguale a 2) in x0 e sia x0 un punto stazionario per f tale che: allora: x0 è un pto di minimo relativo.
Algoritmi e Strutture Dati
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Il problema della ricerca Algoritmi e Strutture Dati.
I Poligoni.
Rasterizzazione Antonio Cisternino
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Calcolo delle Aree Vediamo come si calcola l’area di una figura a partire da figure elementari.
F U N Z I O N I Definizioni Tipi Esponenziale Logaritmica
Come risolvere il cubo di RUBIK
Introduzione al Calcolo integrale 5ATC – 5Btc 2015/16
GEOMETRIA PIANA: ASSIOMI E POSTULATI
Poliedri: i prismi.
Forma normale delle equazioni di 2° grado Definizione. Un'equazione di secondo grado è in forma normale se si presenta nella forma Dove sono numeri.
Sezioni trasversali e movimenti di materia
I Poligoni.
Suggerimenti [1d5] SE la prima lettera della matrice (in alto a sinistra, matrice[0,0]) è diversa dalla prima lettera della parola (parola[0]) ALLORA siamo.
APPUNTI DI GEOMETRIA ANALITICA DELLA RETTA
Algoritmi e Strutture Dati Luciano Gualà
SOLIDI PLATONICI.
Le funzioni matematiche e il piano cartesiano
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
I poliedri diagonale DEFINIZIONE. Un poliedro è la parte di spazio delimitata da poligoni posti su piani diversi in modo tale che ogni lato sia comune.
Le caratteristiche dei poligoni
Unità di apprendimento 6
Triennio 1Preparazione giochi di Archimede - Triennio.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Luoghi di punti In geometria il termine
Metodi di ricerca approssimata dello zero di una funzione F(z) = 0.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

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

Clipping  Il problema del clipping è genericamente risolvibile per qualunque superficie chiusa  A noi però interessa risolvere solo il problema di fare clipping su rettangoli, dato che le porzioni di schermo che l’applicazione gestisce sono rettangoli

Clipping di un punto  Un punto si trova all’interno del rettangolo di clipping se sono soddisfatte le 4 disuguaglianze: Qualora una qualsiasi di queste disuguaglianze non valesse il punto è al di fuori del rettangolo di clipping

Clipping di un segmento  Per fare il clipping di un segmento, si considera la posizione dei suoi punti estremi: Se i due punti sono entrambi dentro, l’intero segmento lo è Se i due punti sono entrambi dentro, l’intero segmento lo è Se un punto è dentro e uno fuori il segmento interseca il rettangolo e si deve calcolare l’intersezione Se un punto è dentro e uno fuori il segmento interseca il rettangolo e si deve calcolare l’intersezione Se entrambi i punti sono fuori dal rettangolo il segmento può o non può intersecare il rettangolo e si devono fare altri calcoli per determinare se le intersezioni ci sono, e se ci sono dove sono Se entrambi i punti sono fuori dal rettangolo il segmento può o non può intersecare il rettangolo e si devono fare altri calcoli per determinare se le intersezioni ci sono, e se ci sono dove sono

Clipping di un segmento  Se i due punti sono entrambi dentro, l’intero segmento (AB) lo è J I H G J I G 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 segmento  Se un punto è dentro e uno fuori il segmento (CD) interseca il rettangolo e si deve calcolare l’intersezione (D’) J I H G J I G 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 segmento  Se entrambi i punti sono fuori dal rettangolo (EF, GH, IJ) il segmento può o non può intersecare il rettangolo e si devono fare altri calcoli per determinare se le intersezioni ci sono, e se ci sono dove sono J I H G J I G 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 segmento  L’approccio più diretto alla soluzione del problema sarebbe quello di fare il calcolo delle intersezioni tra la retta su cui giace il segmento e le 4 rette su cui giacciono i lati del rettangolo di clipping J I H G J I G H D D C F E B A

Clipping di un segmento  Una volta individuati i punti di intersezione verificare poi se essi appartengono effettivamente al segmento ed al lato (G e H) oppure no (I e J). J I H G J I G H D D C F E B A

Clipping di un segmento  Questo calcolo si può facilmente compiere utilizzando l’equazione parametrica della retta: J I H G J I G H D D C F E B A

Clipping di un segmento  Le rette si intersecano se, dopo aver risolto contemporaneamente i due insiemi di equazioni che descrivono il segmento ed il lato in t lato e t segm i due valori rientrano entrambi nell’intervallo [0, 1] J I H G J I G H D D C F E B A

Clipping di un segmento  Si dovrebbe inoltre verificare in anticipo se per caso le linee sono parallele prima di calcolare l’intersezione  Un algoritmo del genere funziona ma è costoso e quindi inefficiente J I H G J I G H D D C F E B A

Algoritmo di Cohen-Sutherland  L’algoritmo di clipping di Cohen- Sutherland si basa su un approccio completamente diverso  La considerazione di base che si fa è che le rette che delimitano il rettangolo che definisce la regione di clipping suddividono il piano in nove regioni

Algoritmo di Cohen-Sutherland  La considerazione di base che si fa è che le rette che delimitano il rettangolo che definisce la regione di clipping suddividono il piano in nove regioni

Algoritmo di Cohen-Sutherland  Ad ogni regione viene associato un codice numerico di quattro cifre binarie

Algoritmo di Cohen-Sutherland  Il codice è formato da 4 bit, vero o falso:  bit 1sopra l’edge in altoy  y max  bit 2sotto l’edge in bassoy  y min  bit 3a dx dell’edge di dxx  x max  bit 4a sx dell’edge di sxx  x min

Algoritmo di Cohen-Sutherland  Il codice è formato da 4 bit, vero o falso:  bit 1sopra l’edge in altoy  y max  bit 2sotto l’edge in bassoy  y min  bit 3a dx dell’edge di dxx  x max  bit 4a sx dell’edge di sxx  x min

Algoritmo di Cohen-Sutherland  Il codice è formato da 4 bit, vero o falso:  bit 1sopra l’edge in altoy  y max  bit 2sotto l’edge in bassoy  y min  bit 3a dx dell’edge di dxx  x max  bit 4a sx dell’edge di sxx  x min

Algoritmo di Cohen-Sutherland  Il codice è formato da 4 bit, vero o falso:  bit 1sopra l’edge in altoy  y max  bit 2sotto l’edge in bassoy  y min  bit 3a dx dell’edge di dxx  x max  bit 4a sx dell’edge di sxx  x min

Algoritmo di Cohen-Sutherland  Il codice è formato da 4 bit, vero o falso:  bit 1sopra l’edge in altoy  y max  bit 2sotto l’edge in bassoy  y min  bit 3a dx dell’edge di dxx  x max  bit 4a sx dell’edge di sxx  x min

Algoritmo di Cohen-Sutherland  Con queste premesse l’operazione di clipping si risolve con opportune codifiche e confronti tra codici numerici

Algoritmo di Cohen-Sutherland  Per fare il clipping di un segmento si codificano i suoi punti estremi sulla base della regione del piano a cui appartengono e poi si confrontano i due codici

Algoritmo di Cohen-Sutherland  Se il codice di entrambi i punti estremi è 0000, allora si può banalmente decidere che il segmento è interamente all’interno

Algoritmo di Cohen-Sutherland  Altrettanto banalmente si può decidere che un segmento è tutto all’esterno quando l’operazione di AND logico tra i codici dei due punti ha un risultato diverso da  1010 =  0101 =  0100 = 0100

Algoritmo di Cohen-Sutherland  In questo caso, infatti, entrambi i punti stanno in uno stesso semipiano (quello identificato dal bit a 1 del risultato) e quindi il segmento non interseca il rettangolo di clipping

Algoritmo di Cohen-Sutherland  Se il risultato dell’AND è invece

Algoritmo di Cohen-Sutherland  Se il risultato dell’AND è invece 0000 si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è)

Algoritmo di Cohen-Sutherland  Se il risultato dell’AND è invece 0000 si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo 0000

Algoritmo di Cohen-Sutherland  Se il risultato dell’AND è invece 0000 si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo una si scarta (poiché giace fuori dal rettangolo) e si itera il procedimento una si scarta (poiché giace fuori dal rettangolo) e si itera il procedimento 0000

Algoritmo di Cohen-Sutherland  Se il risultato dell’AND è invece 0000 si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo una si scarta (poiché giace fuori dal rettangolo) e si itera il procedimento una si scarta (poiché giace fuori dal rettangolo) e si itera il procedimento 0000

Algoritmo di Cohen-Sutherland  Se il risultato dell’AND è invece 0000 si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si cerca quale dei due punti estremi giace fuori dal rettangolo (almeno uno lo è) si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo si suddivide il segmento in due parti calcolando l’intersezione del segmento con i bordi del rettangolo una si scarta (poiché giace fuori dal rettangolo) e si itera il procedimento una si scarta (poiché giace fuori dal rettangolo) e si itera il procedimento 0000

L’algoritmo Liang-Barsky  L’algoritmo di Cohen-Sutherland può fare intersezioni a vuoto  Un altro algoritmo di Clipping è quello di Liang-Barsky  Questo algoritmo elabora un metodo ingegnoso per calcolare le intersezioni usando la forma parametrica dell’equazione della retta

Le disuguaglianze  Se usiamo la forma parametrica nel test di appartenenza otteniamo: x min ≤ x a + (x b - x a )t ≤ x max y min ≤ y a + (y b - y a )t ≤ y max  I punti del segmento sono ottenuti per valori t  [0, 1]  Poniamo:  x = x b – x a  y = y b – y a

Le disuguaglianze  Riscriviamo le disuguaglianze nella forma: s k t ≤ q k  Dove k è un indice da 0 a 3 che riferisce una delle quattro disuguaglianze  Abbiamo s 1 = -  xq 1 = x a - x min x min ≤ x a +  x t s 2 =  xq 2 = x max - x a x a +  x t ≤ x max s 3 = -  yq 3 = y a - y min y min ≤ y a +  y t s 4 =  yq 4 = y max - y a y a +  y t ≤ y max

Osservazioni  Notiamo che l’intersezione tra il vincolo k e la retta su cui giace il segmento si ha quando s k t= q k.  Inoltre analizzando s k e q k con il vincolo per t è possibile trovare criteri per evitarne il calcolo se non necessario  Per i vincoli 1 e 3 se ci muoviamo da A a B andiamo dall’interno verso l’esterno  Viceversa per i vincoli 2 e 4 in senso opposto

Il test  Poniamo quindi: t k = q k /s k s k ≠ 0 t e = max(0, t 1, t 3 ) t u = min(1, t 2, t 4 )  Se s k = 0 per qualche k allora siamo paralleli ad uno dei vincoli: testiamo quindi esplicitamente l’appartenenza  Se t e > t u allora il segmento viene scartato  Altrimenti si calcolano x e y delle intersez.

Clipping di poligoni

 Fare clipping di un poligono è un’operazione più complessa che farlo di un segmento dato che i casi da trattare sono vari e diversi tra loro  Poligono convesso

Clipping di poligoni  Fare clipping di un poligono è un’operazione più complessa che farlo di un segmento dato che i casi da trattare sono vari e diversi tra loro  Poligono concavo che clippato si divide

Clipping di poligoni  Fare clipping di un poligono è un’operazione più complessa che farlo di un segmento dato che i casi da trattare sono vari e diversi tra loro  Poligono con molti spigoli esterni

Clipping di poligoni  L’approccio iniziale di soluzione potrebbe essere quello di confrontare ogni lato del poligono con le 4 rette che delimitano il rettangolo di clipping

Clipping di poligoni  Un approccio di questo tipo porta a compiere molte operazioni (costose quali i calcoli di intersezioni) di cui una gran parte possono essere inutili

Algoritmo di Sutherland-Hodgman  L’idea alla base dell’algoritmo di Sutherland-Hodgman è applicare una strategia risolutiva del tipo divide et impera  Il problema viene così ricondotto a quello di calcolare il clipping di un poligono qualsiasi rispetto ad una retta

Algoritmo di Sutherland-Hodgman  L’applicazione, in successione, della procedura alle 4 rette che definiscono il rettangolo di clipping avrà come risultato il clipping del poligono sul rettangolo Poligono originale Clip in alto Clip a destra Clip in basso Clip a sinistra

Algoritmo di Sutherland-Hodgman  L’algoritmo riceve in ingresso una serie di vertici v 1, v 2, ,v n che definiscono n spigoli: gli n  1 da v i a v i+1 e quello da v n a v 1  Dopo aver fatto clipping su una retta ritorna in output un’altra serie di vertici che definiscono il poligono clippato

Algoritmo di Sutherland-Hodgman  Il confronto si effettua scandendo il poligono in senso orario partendo dal vertice v n fino a v 1 per poi tornare a v n  Per ogni passo si confronta la relazione esistente tra due vertici successivi e la retta di clipping  Per ogni caso i vertici indicati con verranno inseriti nella lista di output

Algoritmo di Sutherland-Hodgman  Le relazioni possono essere di 4 tipi: Spigolo tutto interno Spigolo tutto interno Caso 1 p s DentroFuori

Algoritmo di Sutherland-Hodgman  Le relazioni possono essere di 4 tipi: Spigolo tutto interno Spigolo tutto interno Spigolo uscente Spigolo uscente Caso 2 p s DentroFuori i

Algoritmo di Sutherland-Hodgman  Le relazioni possono essere di 4 tipi: Spigolo tutto interno Spigolo tutto interno Spigolo uscente Spigolo uscente Spigolo tutto esterno Spigolo tutto esterno p s DentroFuori Caso 3

Algoritmo di Sutherland-Hodgman  Le relazioni possono essere di 4 tipi: Spigolo tutto interno Spigolo tutto interno Spigolo uscente Spigolo uscente Spigolo tutto esterno Spigolo tutto esterno Spigolo entrante Spigolo entrante Caso 4 p s DentroFuori i

Esempio  Vediamo come opera l’algoritmo nel caso in figura  I vertici in nero sono gli originali, quelli in arancio sono originati dall’algoritmo di clipping sulla retta rossa v4v4 v3v3 v2v2 v1v1

Esempio  Vediamo come opera l’algoritmo nel caso in figura  I vertici in nero sono gli originali, quelli in arancio sono originati dall’algoritmo di clipping sulla retta rossa v4v4 v3v3 v2v2 v1v1 Spigolo uscente

v1v1 Esempio  Vediamo come opera l’algoritmo nel caso in figura  I vertici in nero sono gli originali, quelli in arancio sono originati dall’algoritmo di clipping sulla retta rossa v2v2 Spigolo entrante v4v4 v3v3

v1v1 Esempio  Vediamo come opera l’algoritmo nel caso in figura  I vertici in nero sono gli originali, quelli in arancio sono originati dall’algoritmo di clipping sulla retta rossa v2v2 Spigolo uscente v4v4 v3v3

Esempio  Vediamo come opera l’algoritmo nel caso in figura  I vertici in nero sono gli originali, quelli in arancio sono originati dall’algoritmo di clipping sulla retta rossa v2v2 Spigolo entrante v4v4 v3v3 v1v1

Esempio  Vediamo come opera l’algoritmo nel caso in figura  I vertici in nero sono gli originali, quelli in arancio sono originati dall’algoritmo di clipping sulla retta rossa v5v5 v3v3 v4v4 v6v6 v1v1 v2v2

Algoritmo di Sutherland-Hodgman  Una cosa da tenere di conto sarà l’eventualità che in output dall’algoritmo si possano ottenere dei lati che si sovrappongono ai bordi del rettangolo di clipping  Tali lati si possono generare quando un poligono si divide in due  È necessario allora aggiungere una fase di post- processing all’algoritmo per eliminarli