Triangolazione di Delaunay

annuncio pubblicitario
Triangolazione di Delaunay
Duccio Mugnaini1
[email protected]
1
Dipartimento di Scienza e Alta Tecnologia (DiSTA)
Università degli Studi dell’Insubria
Metodi numerici per la grafica :: Geometria computazionale
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Approssimazione di un terreno
Il problema
Costruire un modello della superficie di un
terreno avendo a disposizione un numero
finito di altezze in determinati punti del
terreno.
⇒ possiamo utilizzare un terrain, ovvero un
grafico di una funzione f : A ⊂ R 2 → R che
assegna un’altezza a f (p) ∀p ∈ A dominio
del terrain.
Ma non conosciamo l’altezza di ogni
punto in A ma soltanto di un sottoinsieme
P.
Obiettivo: approssimare l’altezza dei punti
in A basandosi sui campionamenti a
disposizione.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Approssimazione di un terreno
Un approccio naive
Assegnare ad ogni punto p ∈ A l’altezza del
più vicino punto campionato in P (basandoci
sul diagramma di Voronoi, Vor(P)).
⇒ otteniamo un terrain discreto che però
approssima la superficie in modo innaturale.
Soluzione: ricorriamo alla triangolazione,
cioè una suddivisione del piano composto
da:
I facce: sono tutti triangoli;
I vertici: sono i punti del
campionamento P.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Approssimazione di un terreno
Un possibile approccio
Step :: 1 Determinare triangolazione di P
(assumiamo che tutto il terreno sia
trangolabile);
Step :: 2 Solleviamo ogni punto in P all’altezza
definita dalla funzione f (p)
trasformando il triangolo
bidimensionale in uno
tridimensionale.
⇒ otteniamo un terreno poliedrale.
Ma quale triangolazione é la migliore?
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Valutazione triangolazione
La soluzione migliore appare la (a) in quanto
(b), flippando un edge, introduce un
triangolo stretto facendo apparire una valle
innaturale.
Comparazione tra triangolazioni
Date due triangolazioni valuteremo migliore
confrontando il minimo angolo. Se il minimo
angolo è uguale allora passeremo al
successivo e così via.
Vedremo che:
:: ∃ un numero finito di triangolazioni
possibili;
:: ∃ una triangolazione che massimizza
il minimo angolo (triangolazione
obiettivo).
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione
Sia P = {p1 , . . . , pn } un insieme di punti nel
piano. Definiamo:
Suddivisione planare massimale
Consiste in un suddivisione S tale che
nessun lato che connette due vertici può
essere aggiunto ad S senza distruggere la
sua planarità.
Triangolazione di P
Consiste nella s.p.m. i cui vertici sono i punti
di P.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione
La triangolazione consiste in triangoli?
Si. Ogni faccia eccetto quella illimitata deve
essere un triangolo. Ogni faccia limitata è un
poligono (nel nostro caso è il convex hull di
P) e sappiamo che ogni poligono può
essere triangolato.
Attenzione: nel caso in cui il dominio del
terrain sia limitato da una cornice (per
esempio un rettangolo), allora gli spigoli
devono essere aggiunti al dominio.
:: # triangoli è uguale per ogni
triangolazione di P;
:: # lati è uguale per ogni triangolazione
di P.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Complessità triangolazione
Teorema
P un insieme di punti nel piano, non tutti
collineari.
k il numero di punti sul confine della convex
hull di P.
⇒ ogni triangolazione τ di P ha:
:: 2n − 2 − k triangoli;
:: 3n − 3 − k lati;
Dimostrazione
I ogni triangolo ha 3 lati;
I la faccia ∞ ha k lati;
I ogni lato è incidente con 2 triangoli
⇒ nl =
3m+k
2
⇒ Formula di Eulero n − ne + nf = 2
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Vettore degli angoli
Sia τ una triangolazione di P.
Supponiamo m il numero di triangoli.
Siano α1 , α2 , . . . α3m gli angoli di τ ordinati
in ordine crescente αi ≤ αj ∀i < j. Allora
definiamo:
Vettore degli angoli
A(τ) := [α1 , α2 , . . . α3m ]
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Vettore degli angoli
Sia τ 0 un’altra triangolazione di P
0 ] il relativo
Sia A(τ 0 ) := [α10 , α20 , . . . α3m
vettore degli angoli. Possiamo allora
comparare due triangolazioni in base agli
angoli:
Comparazione fra triangolazioni
A(τ) > A(τ 0 ) se A(τ) è lessicograficamente
più grande di A(τ 0 ) cioè:
∃i indice 1 ≤ i ≤ 3m tc αj = αj0 ∀j < i e αi > αi0
Possiamo introdurre un criterio di ottimalità
per una triangolazione τ :
τ triangolazione angle-optimal se
A(τ) ≥ A(τ 0 ) ∀τ 0 di P
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Flipping e lati illegali
Consideriamo il lato e = pi pj della
triangolazione τ .
Se non è un lato della faccia ∞ è condiviso
tra due triangoli.
Se i due triangoli formano un quadrilatero
convesso possiamo flipparlo ottenendo τ 0 .
⇒ l’unica differenza tra A(τ) e A(τ 0 ) è nei 6
angoli.
Lato illegale
se
min αi < min αi0
1≤i ≤6
1≤i ≤6
⇒ un lato e si definirà illegale se possiamo
localmente incrementare il più piccolo
angolo effettuando il flip del lato.
⇒ se τ contiene un lato e illegale e τ 0 è la
triangolazione ottenuta flippando, allora:
A(τ 0 ) > A(τ)
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Flipping e lati illegali
É necessario calcolare tutti i 12 angoli
per capire se un lato è illegale?
No, grazie al teorema di Talete.
Teorema di Talete
Sia C una circonferenza, l una linea che
interseca C in due punti a, b. Siano p, q , r , s
punti appartenenti allo stesso semipiano
individuato da ` con:
:: p e q ∈ C;
:: r interno a C;
:: s esterno a C;
⇒ ∠arb > ∠apb = ∠aqb > ∠asb
(indicando con ∠abc il minimo angolo del
triangolo abc).
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Flipping e lati illegali
Dal teorema di Talete segue il seguente
lemma:
Lemma
Sia il lato pi pj incidente ai triangoli
(pi , pj , pk , ) e (pi , pj , pl ).
Sia C la circonferenza che passa attraverso
(pi , pj , pk ), allora:
:: il lato pi pj è illegale ⇔ pl stà
all’interno di C;
:: se pi , pj , pk , pl formano un
quadrilatero convesso e non stanno
su una circonferenza comune ⇒
esattamente un lato tra pi pj e pk pl è
illegale.
⇒ quando tutti e quattro i punto stanno sulla
stessa circonferenza allora entrambi i lati
sono legali.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Flipping e lati illegali
Dal teorema di Talete segue il seguente
lemma:
Lemma
Sia il lato pi pj incidente ai triangoli
(pi , pj , pk , ) e (pi , pj , pl ).
Sia C la circonferenza che passa attraverso
(pi , pj , pk ), allora:
:: il lato pi pj è illegale ⇔ pl stà
all’interno di C;
:: se pi , pj , pk , pl formano un
quadrilatero convesso e non stanno
su una circonferenza comune ⇒
esattamente un lato tra pi pj e pk pl è
illegale.
⇒ quando tutti e quattro i punto stanno sulla
stessa circonferenza allora entrambi i lati
sono legali.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Flipping e lati illegali
Triangolazione Legale
Una triangolazione che non contiene lati
illegali è considerata legale
⇒ ogni triangolazione angle-optimal è
legale (flippando un lato illegale si
incrementa il minimo angolo).
Come ottenere una triangolazione legale?
Data una triangolazione iniziale è semplice
calcolare una triangolazione legale:
while ( ∃pi pj illegale) do
flip pi pj
end while
Terminazione Ricordiamo che il flip di un
lato illegale aumenta il minimo angolo di una
triangolazione e dato che le triangolazioni
possibili sono un numero finito abbiamo la
garanzia della terminazione.
Come otteniamo una triangolazione?
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione di Delaunay
:: Sia P = {p1 . . . pn } un insieme di n
punti nel piano;
:: sia Vor (P ) il diagramma di Voronoi di
P;
:: chiamiamo cella di p la regione di un
punto p;
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione di Delaunay
:: Sia P = {p1 . . . pn } un insieme di n
punti nel piano;
:: sia Vor (P ) il diagramma di Voronoi di
P;
:: chiamiamo cella di p la regione di un
punto p;
Grafo duale di Voronoi - G(V , E )
:: V - un nodo per ogni cella di Voronoi;
:: E - esiste un arco fra due nodi se le
corrispondenti celle condividono un
lato.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione di Delaunay
:: Sia P = {p1 . . . pn } un insieme di n
punti nel piano;
:: sia Vor (P ) il diagramma di Voronoi di
P;
:: chiamiamo cella di p la regione di un
punto p;
Grafo duale di Voronoi - G(V , E )
:: V - un nodo per ogni cella di Voronoi;
:: E - esiste un arco fra due nodi se le
corrispondenti celle condividono un
lato.
Stiriamo gli archi del duale . . .
Delaunay Graph - DG(P ) grafo composto
da
:: V - insieme di vertici corrispondenti ai
punti di Vor (P ), cioè ai punti P;
:: E - insieme di lati rappresentanti
l’adiacenza di due celle di Vor (P ).
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione di Delaunay
Teorema
Il grafo di Delaunay di un insieme di punti nel
piano è un grafo planare (può essere
raffigurato senza archi che si intersecano).
Dimostrazione
...
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione di Delaunay & Diagramma di Voronoi
Dato un insieme P di punti nel piano è
possibile riscrivere i teoremi di
caratterizzazione di Vor (P ) in termini di
DG(P ).
Teorema
:: 3 punti pi pj pk ∈ P sono vertici della
stessa faccia di DG(P ) ⇔ la
circonferenza passante per pi pj pk
non contiene altri punti di P al suo
interno;
:: 2 punti pi pj ∈ P formano un lato di
DG(P ) ⇔ ∃ una circonferenza C che
contiene nel suo perimetro pi pj e
nessun altro punto di P.
Teorema
τ triangolazione di P è una DG(P ) ⇔ la
circonferenza di ogni triangolo di τ non
contiene un punto di P al suo interno.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione di Delaunay
Dal teorema che caratterizza la struttura del
diagramma di Voronoi e dalla
corrispondenza fra DG(P ) e Vor (P )
abbiamo che se i punti p1 ..pk stanno sulla
stessa circonferenza (e quindi incidenti a un
vertice vi di Vor (P ))
⇒ la faccia f corrispondente sarà un
poligono convesso con p1 ..pk come
vertici.
⇒ se i punti P sono distribuiti casualmente
è altamente improbabile che esistano 4
punti sulla stessa circonferenza.
Chiameremo un insieme di punti P in
posizione generale (p.g.) se P non
contiene 4 punti sulla stessa circonferenza.
⇒ se P è in g.p. tutti i vertici di Vor (P )
hanno grado 3
⇒ DG(P ) sarà una triangolazione
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Triangolazione di Delaunay e legalità
Dati P punti nel piano, il nostro scopo era
quello di trovare una triangolazione τ buona
per modellare il nostro terreno. Per il criterio
del minimo angolo abbiamo visto che τ è
buona se è legale.
Teorema
Una triangolazione τ di P è legale ⇔ τ è di
Delaunay.
Dimostrazione
...
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
τ legale ⇔ τ Delaunay
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Calcolare la triangolazione di Delaunay
Avendo a disposizione Vor (P ) è facile
ottenere DG(P ) e triangolando le facce
derivanti da vertici con grado maggiore di tre
si può ottenere una triangolazione di
Delaunay.
Approccio alternativo: calcolare una
triangolazione direttamente utilizzando un
approccio incrementale random come
segue:
step :: 1 aggiungere 2 extra punti p−1 , p−2
(scelti ad hoc) che insieme al punto
più in alto a destra p0 formeranno un
triangolo che conterrà tutti i punti P;
step :: 2 scegliere casualmente un punto pr da
P;
step :: 3 trovare il triangolo ∆ in cui risiede pr ;
step :: 4 suddividere ∆ in nuovi triangoli che
hanno come vertice anche pr ;
step :: 5 flippare i lati finché non si ottiene di
nuovo una triangolazione legale
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
step :: 6 ripetere dallo step 2.
Universities of
Calcolare la triangolazione di Delaunay
Gestire l’aggiunta random di un punto pr
Consideriamo l’aggiunta di un punto pr .
Possiamo avere i seguenti casi:
case :: 1 pr è situato all’interno di un triangolo
della corrente triangolazione
⇒ aggiungiamo tre nuovi lati che
connettono pr ai vertici del triangolo;
case :: 2 pr è situato sul lato di un triangolo
⇒ aggiungiamo due nuovi lati da pr
ai vertici opposti del triangolo
adiacente.
⇒ abbiamo una nuova triangolazione ma
non è detto che sia di Delaunay (in quanto
possono essere stati aggiunto archi illegali).
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Calcolare la triangolazione di Delaunay
Quali lati diventano illegali con
l’inserimento di pr ?
Dato che un lato diventa illegale solo se uno
fra i due triangoli adiacenti cambia
⇒ i lati esterni sono diventati
potenzialmente illegali.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Calcolare la triangolazione di Delaunay
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Calcolare la triangolazione di Delaunay
Correttezza
Dobbiamo provare che nessun lato illegale
rimane dopo la chiamata di L EGALIZE E DGE
Lemma
Ogni nuovo lato creato da
D ELAUNAY T RIANGOLATION o in
L EGALIZE E DGE durante l’inserimento di pr è
un lato del grafo di Delaunay di
{p−2 , p−1 , p0 . . . pr }
Dimostrazione
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Calcolare la triangolazione di Delaunay
Procedura per individuare il triangolo
corrente di pr
Utilizzeremo un DAG (Directed acyclic
graph) per mantenere la struttura del DG(P )
in cui:
:: foglie - triangoli della corrente
triangolazione;
:: nodi interni - triangoli della
triangolazione agli stadi precedenti
ma che sono stati distrutti.
Il DAG verrà inizializzato all riga 3 con i tre
vertici del triangolo enorme.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Calcolare la triangolazione di Delaunay
Procedura per individuare il triangolo
corrente di pr
Utilizzeremo un DAG (Directed acyclic
graph) per mantenere la struttura del DG(P )
in cui:
:: foglie - triangoli della corrente
triangolazione;
:: nodi interni - triangoli della
triangolazione agli stadi precedenti
ma che sono stati distrutti.
Il DAG verrà inizializzato all riga 3 con i tre
vertici del triangolo enorme.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Calcolare la triangolazione di Delaunay
Procedura per individuare il triangolo
corrente di pr
Utilizzeremo un DAG (Directed acyclic
graph) per mantenere la struttura del DG(P )
in cui:
:: foglie - triangoli della corrente
triangolazione;
:: nodi interni - triangoli della
triangolazione agli stadi precedenti
ma che sono stati distrutti.
Il DAG verrà inizializzato all riga 3 con i tre
vertici del triangolo enorme.
Duccio Mugnaini - [email protected]
Triangolazione di Delaunay
Universities of
Thank you for your attention.
Scarica