Diagramma di Voronoi

Transcript

Diagramma di Voronoi
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Diagramma di Voronoi
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]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Outline
I
Introduzione
I
Definizioni di base
I
Proprietà strutturali
I
Fortune’s Sweep Algorithm
I
Applicazione: path planning problem
I
Applicazioni: smallest-width annulus problem
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Referenze
Mark DeBerg, Otfried Cheong, Mark Van Kreveld, Mark Overmars, Computational Geometry,
Third Edition 2008, Springer.
I
I
I
I
I
I
I
calcolo del convex hull;
intersezioni fra segmenti;
intersezioni di semipiani;
point location queries;
Voronoi Diagram e triangolazioni di Delaunay;
metodologie di base per il motion planning;
...
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Section 1
Introduzione
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Social geography
Market problem
Esempio di geografia social
In quale località è maggiormente
conveniente aprire un supermercato?
É necessario stimare il numero di clienti
che saranno attratti dal nuovo
supermercato.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Social geography
Market problem
Assunzioni del problema:
I medesimo prezzo in ogni sito;
I il costo di un bene o servizio è
uguale al costo del bene più il
costo di trasporto al sito;
I il costo di trasporto è uguale alla
distanza euclidea al sito
moltiplicato un prezzo fissato per
unità di distanza;
I i consumatori cercano di
minimizzare il costo di beni e
servizi.
Il Modello
Le assunzioni effettuate non
rispecchiano esattamente la realtà ma
possono comunque fornire una rozza
approssimazione.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Social geography
Market problem
Risultato
Le assunzioni del modello
portano a una suddivisione
dell’area in cui ogni gli
abitanti della stessa regione
si recheranno nello stesso
market.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Applicazioni
Applicazioni I
I contesti in cui il diagramma di Voroni è stato utilizzato con successo sono svariati:
I Torrette di osservazioni anticendio: il Voronoi Diagram traccia le linee di responsabilità
tra le aree di foresta per ogni torretta;
I Archeologia: individuazione di regioni sotto l’influenza di clan neolitici differenti, centri
cerimoniali o fortini di guerra;
I Cartografia: incollare insieme fotografie satellitari in grandi mappe costruite come
mosaici di immagini;
I Robotica: path planning in presenza di ostacoli;
I Zoologia: modellare e analizzare il territorio degli animali;
I Fisiologia: analisi della distribuzione capillare in sezioni di tessuto muscolare per
calcolare il trasporto di ossigeno.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Applicazioni
Applicazioni II
Numerosi altri contesti in cui il diagramma di Voronoi è stato applicato con successo sono
reperibili:
I https://www.ics.uci.edu/ eppstein/gina/scot.drysdale.html
I Joseph O’Rourke, Computational geometry in C, Cap.5, Second Edition, Cambridge
Press.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Section 2
Definizioni di base
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Concetti di base
I
Distanza euclidea;
I
Cella di pi ;
I
Diagramma di Voronoi di P - Vor (P );
I
Bisettore fra p e q;
I
Semipiano di p e p;
I
Ottenere la cella di pi .
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Concetti di base
Definizioni
Distanza euclidea d (p, q )
Dati due punti nel piano
p = (px , py )T q = (qx , qy )T
Si definisce distanza euclidea:
d (p, q ) =
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
q
(px − qx )2 + (py − qy )2
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Concetti di base
Definizioni
Diagramma di Voronoi di P
Dato un insieme finito di punti (o siti) nel
piano
P = {p1 , p2 , . . . pn }
il diagramma di Voronoi (Vor (P )) è l’insieme
di n celle V (pi ), i = 1 . . . n tc:
q ∈ V (pi ) ⇔ d (q , pi ) < d (q , pj ) ∀pj ∈ P j 6= i
In cui V (pi ) denota la cella assocciata al
punto pi .
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Concetti di base
Definizioni
Bisettore di p e q
Dati due punti p e q nel piano, definiamo il
bisettore di p e q come la retta passante per
il punto medio tra p e q e perpendicolare al
segmento pq
Semi–piano di p
Indichiamo il semipiano contenente p con
h(p, q ).
Semi–piano di q
Indichiamo il semipiano contenente q con
h(q , p). ⇒ dato un punto r nel piano,
r ∈ h(p, q ) ⇔ d (r , p) < d (r , q )
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Concetti di base
Definizioni
Osservazione
V (pi ) =
\
h(pi , pj )
1≤j ≤n, j 6=i
La cella di Voroni relativa al punto pi si
ottiene come l’intersezione di tutti i semipiani
h(pi , pj ).
⇒ (n − 1) intersezioni di semi–piani;
⇒ regione poligonale convessa limitata (o
illimitata) da al più:
I (n − 1) lati;
I (n − 1) vertici.
⇒ il diagramma di Voroni risultante avrà
come lati segmenti di retta o semirette;
eccetto il caso in cui i punti siano tutti
collineari nessun lato sarà una retta
completa (ma al più una semiretta).
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Section 3
Proprietà strutturali
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Caratterizzazione della struttura di Vor (P )
Struttura di Vor (P )
Caratterizzazione struttura di Vor (P )
Sia P = {p1 , p2 , . . . pn } insieme di punti distinti nel piano.
Allora abbiamo che Vor (P ):
1) è composto da n − 1 rette parallele se tutti i punti sono collineari;
2) è connesso e i lati sono o segmenti o semi–rette altrimenti;
Dim:
1) Semplice da dimostrare;
2) Dimostrare prima che i lati sono tutti semirette o segmenti e
successivamente che è connesso;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Caratterizzazione di lati e vertici di Vor(P)
Complessità di Vor (P )
Caratterizzazione complessità di Vor (P )
Dato un insieme di punti nel piano P = {p1 , p2 , . . . pn } con n ≥ 3, valgono le seguenti relazioni:
# vertici di Vor (P ) = nv ≤ 2n − 5
# lati di Vor (P ) = nl ≤ 3n − 6
Dim:
I Trattiamo il caso di punti non collineari;
I Utilizziamo la formula di Eulero relativa ai grafi planari connessi:
mv − ml + mf = 2
in cui:
I mv : numero di nodi;
I ml : numeri di archi;
I mf numeri di faccie.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Caratterizzazione di lati e vertici di Vor(P)
Complessità di Vor (P )
I Per poter applicare la formula di
Eulero aggiungiamo un vertice v∞
ottenendo il grafo aumentato G0 . Sia
V l’insieme dei vertici del grafo
aumentato e deg (v ) v ∈ V il grado di
un vertice (ovvero il numero di lati
incidenti su di esso). Indichiamo
inoltre con nv , nl rispettivamente il
numero di vertici e lati che compongo
G0 :
(nv + 1) − nl + n = 2
I Adesso ogni lato del grafo ha
esattamente 2 vertici, e sapendo che
ogni vertice ha almeno grado 3
(deg (v ) ≥ 3 ∀v ∈ V ) otteniamo:
2nl =
∑ deg (v ) ≥ 3(nv + 1)
v ∈V
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Caratterizzazione della struttura di V(P)
Struttura di Vor (P )
Quali porzioni di bisettori compongono
Vor (P )?
Quali intersezioni compongono Vor (P )?
Definizione di Cp (q )
La più grande circonferenza di q rispetto a
P, denotata con Cp (q ), è la circonferenza di
raggio massimo centrata in q che non
contiene nessun sito pi ∈ P al suo interno.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Caratterizzazione della struttura di V(P)
Struttura di Vor (P )
Teorema
Dati un insieme di punti nel piano P = {p1 , p2 , . . . pn }, per il relativo
diagramma di Voronoi Vor (P ) valgono le seguenti proprietà:
a) un punto q nel piano è un vertice di Vor (P ) ⇔ Cp (q) contiene 3
o più punti sul suo perimetro;
b) Il bisettore tra due siti pi e pj definisce un lato di Vor (P ) ⇔ ∃ q
sul bisettore tale che Cp (q) contiene sia pi , pj sul suo perimetro
ma nessun altro sito.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Section 4
Vor(P) Sweep Algorithm
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Idea
Algoritmo Naive
for each pi ∈ P
V (pi ) = R 2 ;
for each pj ∈ P
V (pi ) = V (pi ) ∩ h(pi , pj )
end
end
⇒ O (n2 log n). Migliorabile?
Fortune’s Algorithm O (n log n)
Algoritmo sweep line:
I spazzata dall’alto verso il basso;
I durante la spazzata vengono mantenute informazioni sulla struttura;
I le informazioni vengono aggiornate negli event point.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Informazioni da mantenere
Quali informazioni mantenere durante la
discesa?
Idea: mantenere informazioni riguardo alle
intersezioni di Vor (P ) fino a dove la sweep
line ` è arrivata ma non è possibile.
Soluzione: mantenere informazioni
riguardo la struttura di Vor (P ) relative ai siti
al di sopra di ` che non possono essere
modificate.
In altre parole mantere la rappresentazione
del luogo dei punti che sono più vicini ad
un qualche sito pi al di sopra della
sweepline, piuttosto che alla sweepline
stessa (e quindi a qualsiasi altro sito al di
sotto della sweepline).
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Parabola βi
Per quale punto q ∈ l + sappiamo per
certo il p ∈ P ad esso più vicino?
Dato pi ∈ `+ ∩ P
Se dist (q , pi ) ≤ dist (q , l ) ⇒ allora
sappiamo per certo che il più vicino sito non
risiede al di sotto di ` .
Dato q ∈ `+ , se ∃pi+ ∈ `+ ⇒ q non
appartiene a celle di Vor (P ) relative ai
vertici appartenenti a `− .
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Parabola βi
Definizione
Dato pi+ ∈ `+ , chiamiamo confine βi di pi+ il
luogo geometrico dei punti q ∈ `+ t.c.
d (q , pi+ ) = d (q , `)
ed evidentemente è definito da una parabola
la cui equazione è definita rispetto a pi :
y :=
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
1
2(pi ,y − `y )
(x 2 − 2pi ,x x + pi2,x + pi2,y −`2y )
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Parabola βi
Inserire il video che mostra come si muove la parabola fissato un
punto e facendo scorrere la sweep line;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Beach-line
Beach-line
Il luogo di punti del piano che sono più vicini
a qualche sito pi ∈ `+ che a ` è limitato
inferiormente da una curva continua
composta dalle parabole βi . Chiamiamo
beach-line tale sequenza di archi parabolici.
I una parabola può contribuire più volte
alla beach-line;
I chiamiamo break point i punti di
intersezione tra parabole adiacenti
nella beach-line;
I i breakpoint giacciono sui lati di
Vor (P ).
Idea sweep algorithm
⇒ Invece di mantenere le intersezioni di
Vor (P ) teniamo traccia della beach-line
mentre la sweepline scende.
Quali eventi modificano la beach-line?
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Site event
Site event :: nuovo lato Vor(P)
Site event
Un site event si verifica quando la sweepline
raggiunge un sito pi ∈ P
Cosa accade sulla beach-line?
I inizialmente la nuova parabola βi
interseca ` in due punti coincidenti;
I successivamente, via via che
` scende, βi le intersezioni tra βi e l
divergono ⇒ un nuovo lato di Vor (P )
viene definito.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Site event
Site event :: nuovo lato Vor(P)
Lemma
L’unico modo in cui un arco sulla beach-line
può apparire è in corrispondenza di un site
event.
Dimostrazione
Per assurdo supponiamo che un nuovo arco
può apparire anche non in corrispondenza di
un site event. Come può apparire il nuovo
arco βj ?
Parabole βi , βj relative ai punti pi , pj .
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Caso 1: il nuovo arco appare nel mezzo di
un’altra parabola βi . Assumendo
`u < pi ,y ≤ pj ,y calcolando
l’intersezione fra βi e βj si ha che
∆ > 0.
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Site event
Site event :: nuovo lato Vor(P)
Lemma
L’unico modo in cui un arco sulla beach-line
può apparire è in corrispondenza di un site
event.
Dimostrazione
Per assurdo supponiamo che un nuovo arco
può apparire anche non in corrispondenza di
un site event. Come può apparire il nuovo
arco βj ?
Circonferenza centrata in q.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Caso 2: il nuovo arco appare a cavallo di due
archi esistenti βi , βk in
corrispondenza del breakpoint q.
Essendo il punti di intersezione di tre
archi significa che è equidistante da
pi , pj , pk e dalla sweepline (ricordare
il significato delle
parabole).(Continua . . . )
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Site event
Site event :: nuovo lato Vor(P)
Lemma
L’unico modo in cui un arco sulla beach-line
può apparire è in corrispondenza di un site
event.
Dimostrazione
Per assurdo supponiamo che un nuovo arco
può apparire anche non in corrispondenza di
un site event. Come può apparire il nuovo
arco βj ?
Circonferenza centrata in q.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Caso 2: Se facciamo scendere di un ε la
sweepline mantenendo la
circonferenza tangente a l cosa
accade?
⇒ uno dei punti fra pi o pk sarà
inglobato;
⇒ uno dei punti fra pi o pk sarà più
vicino a l rispetto a pj ;
⇒ la parabola βj non potrà
contribuire alla beach-line.
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Site event
Site event :: nuovo lato Vor(P)
Corollario
Beach-line consiste al più in 2n − 1 archi
parabolici. Infatti un nuovo arco può essere
originato solo in corrispondenza di un nuovo
sito e può splittare un arco esistente al
massimo in due parti.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P)
Circle event
Un circle event si verifica quando la
beach-line raggiunge il punto più basso di
una circonferenza passante per tre siti che
definiscono archi consecutivi.
Cosa accade sulla beach-line?
I due break point collassano che
equivale a dire che due archi del
Vor (P ) si uniscono;
I un vertice di Vor (P ) è individuato.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P)
Circle event
Un circle event si verifica quando la
beach-line raggiunge il punto più basso di
una circonferenza passante per tre siti che
definiscono archi consecutivi.
Cosa accade sulla beach-line?
I due break point collassano che
equivale a dire che due archi del
Vor (P ) si uniscono;
I un vertice di Vor (P ) è individuato.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P) [Appendice]
Circle event
Un circle event si verifica quando la
beach-line raggiunge il punto più basso di
una circonferenza passante per tre siti che
definiscono archi consecutivi.
Cosa accade sulla beach-line?
I due break point collassano che
equivale a dire che due archi del
Vor (P ) si uniscono;
I un vertice di Vor (P ) è individuato.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P) [Appendice]
Lemma
L’unico modo in cui un arco esistente può
scomparire dalla beach-line è attraverso un
circle event.
Dimostrazione
Siano α, α 0 , α 00 i tre archi sulla beach-line
da sinistra verso destra, porzioni delle
parabole dei siti pi , pj , pk . In quali casi l’arco
α 0 può scomparire?
Caso 1: l’arco α e α 00 sono lo stesso arco ⇒
caso impossibile, perché
supponiamo che q sia l’unico punto di
tangenza, allora scorrendo di poco l
verso il basso la parabola βj non
scompare ma al contrario si biforca.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P) [Appendice]
Lemma
L’unico modo in cui un arco esistente può
scomparire dalla beach-line è attraverso un
circle event.
Dimostrazione
Siano α, α 0 , α 00 i tre archi sulla beach-line
da sinistra verso destra, porzioni delle
parabole dei siti pi , pj , pk . In quali casi l’arco
α 0 può scomparire?
Caso 2: gli archi α, α 0 , α 00 sono tutti distinti e
al momento in cui α 0 scompare sono
coincidenti tutti in un punto q. q è
equidistante sia da pi , pj , pk che l (in
quanto sulla frontiera di tutte le
parabole).Continua . . .
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P) [Appendice]
Lemma
L’unico modo in cui un arco esistente può
scomparire dalla beach-line è attraverso un
circle event.
Dimostrazione
Siano α, α 0 , α 00 i tre archi sulla beach-line
da sinistra verso destra, porzioni delle
parabole dei siti pi , pj , pk . In quali casi l’arco
α 0 può scomparire?
Caso 2: ⇒ Non può esiste un punto interno
alla circonferenza C (pi , pj , pk ) in
quanto se esistesse q non potrebbe
stare sulla beach-line.
⇒ q è un vertice di Vor (P ) (infatti
quando un arco sulla beach-line
collassa significa che due breakpoint
si fondono che equivale a dire che
due lati di Vor (P ) si uniscono).
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P) [Appendice]
Lemma
Ogni vertice è individuato per mezzo di un
circle event.
Dimostrazione
Dobbiamo dimostrare che appena prima che
la sweep line raggiunge il punto più basso
della circonferenza C (pi , pj , pk ), la beach
line è composta dai tre archi αi , αj , αk .
Infatti se consideriamo come prima la sweep
line appena prima che raggiunga il punto più
basso di C (pi , pj , pk ), dato che quest’ultima
non contiene nessun altro sito, è possibile
due circonferenza C (pi , pj ) e C (pj , pk )
passanti dai rispettivi siti e ancora tangenti
alla sweepline che a loro volta non
contengono nessun sito . . .
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Circle event :: nuovo vertice Vor(P) [Appendice]
Lemma
Ogni vertice è individuato per mezzo di un
circle event.
Dimostrazione
. . . Se esistono tali circonferenze allora nel
punto centrale pi , pj e pj , pk risultano essere
equidistanti. Quindi saranno presenti due
breakpoint sulla beach-line formati da tre
archi adiacenti. Perciò è possibile
individuare un circle event appena prima che
questo avvenga (controllando se i tre punti
relativi ai tre archi sono sulla stessa
circonferenza).
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Circle event
Costruire il diagramma di Voronoi
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Strutture
Strutture utilizzate
Quali strutture sono necessarie per costruire Vor(P)?
I
Doubly-connected Linked List - memorizzare struttura del
Diagramma di Voronoi. Data la struttura dinamica di Vor (P ) la
d.l.l. permette di ottimizzare l’accesso, l’eliminazione e
l’inserimento se implementata a basso livello. In Matlab è
consigliabile un cell array.
I
Balanced Binary Tree - memorizzazione beach-line
I
Event Queue - collezione dei site e circle event.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Strutture
Strutture utilizzate
Doubly-connected Linked List
Utilizzata per memorizzare il corrente stato
del diagramma di Voronoi.
I considerare i lati del diagramma di
Voronoi come archi direzionati;
I una cella è formata da una sequenza
di archi direzionati in senso orario (o
antiorario);
I dato che ogni lato è condiviso da due
celle, ad ogni lato corrispondono due
archi direzionati nel senso opposto;
⇒ permette la navigazione dell’intero
diagramma.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Strutture
Strutture utilizzate
Balanced Binary tree
Utilizzato per rappresentare la beach-line e
in particolare gli archi che la compongono, i
breakpoints e i relativi siti.
I nodi interni - rappresentano i
breakpoint tra due archi;
I nodi foglia - rappresentano gli archi
ognuno dei quali è rappresentato a
sua volta dal relativo sito. Ogni foglia
ha un puntatore al circle event che
farà scomparire il relativo arco.
O(nlogn) per trovare l’arco sopra ogni sito.
Sufficiente comparare l’ascissa del nuovo
sito con quella dei nodi interni.
Osservazione: le parabole non vengono
memorizzate esplicitamente.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Strutture
Strutture utilizzate
Event Queue
Un evento è un punto di rilievo che la
sweepline incontra mentre stà andando
verso il basso.
I site event - corrispondono ai siti in P;
I circle event - corrispondono al punto
più basso della circonferenza
passante per tre o più siti;
I tutti gli eventi sono ordinati per
priorità crescente in base alla
coordinata y .
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Algoritmo di Fortune per Vor (P )
1 Inizializzazione strutture;
:: inizializza coda degli eventi Q con tutti i siti P;
:: inizializza albero di ricerca binario T = 0/ ;
:: inizializza doubly linked list D = 0/ ;
2 finchè Q ! = 0/
:: rimuovi evento e da Q;
:: richiama gestisciEvento(e);
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Site Event
Procedura per la gestione degli eventi di
tipo sito (p ∈ P)
a localizza l’arco A sopra al nuovo sito
se esiste;
b rompi l’arco A sulla beachline
rimpiazzando il nodo foglia in T con
un sottoalbero rappresentante il
nuovo arco e i suoi breakpoints;
c aggiungi il record in D relativo al
nuovo lato che si stà formando;
d controlla la presenza di nuovi circle
event e inseriscili in Q se esistono.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Site Event
Procedura per la gestione degli eventi di
tipo sito (p ∈ P)
a localizza l’arco A sopra al nuovo sito
se esiste;
b rompi l’arco A sulla beachline
rimpiazzando il nodo foglia in T con
un sottoalbero rappresentante il
nuovo arco e i suoi breakpoints;
c aggiungi il record in D relativo al
nuovo lato che si stà formando;
d controlla la presenza di nuovi circle
event e inseriscili in Q se esistono.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Site Event
Procedura per la gestione degli eventi di
tipo sito (p ∈ P)
a localizza l’arco A sopra al nuovo sito
se esiste;
b rompi l’arco A sulla beachline
rimpiazzando il nodo foglia in T con
un sottoalbero rappresentante il
nuovo arco e i suoi breakpoints;
c aggiungi il record in D relativo al
nuovo lato che si stà formando;
d controlla la presenza di nuovi circle
event e inseriscili in Q se esistono.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Site Event
Procedura per la gestione degli eventi di
tipo sito (p ∈ P)
a localizza l’arco A sopra al nuovo sito
se esiste;
b rompi l’arco A sulla beachline
rimpiazzando il nodo foglia in T con
un sottoalbero rappresentante il
nuovo arco e i suoi breakpoints;
c aggiungi il record in D relativo al
nuovo lato che si stà formando;
d controlla la presenza di nuovi circle
event e inseriscili in Q se esistono.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Circle Event
Procedura per la gestione degli eventi di
tipo circle
a aggiungi un vertice per i
corrispondenti record (lati) in D;
b elimina da T le foglie corrispondenti
agli archi sulla beachline che stanno
scomparendo;
c crea un nuovo record lato in D;
d controlla la nuova tripla formata dai
nuovi archi vicini per circle event
potenziali.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Circle Event
Procedura per la gestione degli eventi di
tipo circle
a aggiungi un vertice per i
corrispondenti record (lati) in D;
b elimina da T le foglie corrispondenti
agli archi sulla beachline che stanno
scomparendo;
c crea un nuovo record lato in D;
d controlla la nuova tripla formata dai
nuovi archi vicini per circle event
potenziali.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Circle Event
Procedura per la gestione degli eventi di
tipo circle
a aggiungi un vertice per i
corrispondenti record (lati) in D;
b elimina da T le foglie corrispondenti
agli archi sulla beachline che stanno
scomparendo;
c crea un nuovo record lato in D;
d controlla la nuova tripla formata dai
nuovi archi vicini per circle event
potenziali.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Circle Event
Procedura per la gestione degli eventi di
tipo circle
a aggiungi un vertice per i
corrispondenti record (lati) in D;
b elimina da T le foglie corrispondenti
agli archi sulla beachline che stanno
scomparendo;
c crea un nuovo record lato in D;
d controlla la nuova tripla formata dai
nuovi archi vicini per circle event
potenziali.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Circle Event
Procedura per la gestione degli eventi di
tipo circle
a aggiungi un vertice per i
corrispondenti record (lati) in D;
b elimina da T le foglie corrispondenti
agli archi sulla beachline che stanno
scomparendo;
c crea un nuovo record lato in D;
d controlla la nuova tripla formata dai
nuovi archi vicini per circle event
potenziali.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Gestisci Circle Event
Procedura per la gestione degli eventi di
tipo circle
a aggiungi un vertice per i
corrispondenti record (lati) in D;
b elimina da T le foglie corrispondenti
agli archi sulla beachline che stanno
scomparendo;
c crea un nuovo record lato in D;
d controlla la nuova tripla formata dai
nuovi archi vicini per circle event
potenziali.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Algoritmo
Costo computazionale totale O (nlogn)
I
I
O (n) - numero di eventi da gestire (n siti che generano O (n)
circle event);
O (logn) - costo della gestione di un evento
site O (logn) individuazione in T dell’arco esistente sopra il nuovo sito;
site O (1) le operazioni rimanenti;
circle O (logn) eliminazione da T della foglia relativa all’arco che stà
scomparendo;
circle O (1) le operazioni rimanenti.
⇒ O (nlogn) costo computazionale totale.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Section 5
Voronoi Diagram e Path Planning
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Path Planning
Il problema
Dato un insieme di ostacoli poligonali nel
piano lo scopo è individuare un percorso
libero da collisioni che metta in
comunicazione due posizioni assegnate.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Path Planning
Il problema
Dato un insieme di ostacoli poligonali nel
piano lo scopo è individuare un percorso
libero da collisioni che metta in
comunicazione due posizioni assegnate.
Algoritmo
1 Definire un insieme di punti P lungo i
lati di ogni poligono, cornice inclusa;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Path Planning
Il problema
Dato un insieme di ostacoli poligonali nel
piano lo scopo è individuare un percorso
libero da collisioni che metta in
comunicazione due posizioni assegnate.
Algoritmo
1 Definire un insieme di punti P lungo i
lati di ogni poligono, cornice inclusa;
2 Costruire il diagramma di Voroni
rispetto a P;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Path Planning
Il problema
Dato un insieme di ostacoli poligonali nel
piano lo scopo è individuare un percorso
libero da collisioni che metta in
comunicazione due posizioni assegnate.
Algoritmo
1 Definire un insieme di punti P lungo i
lati di ogni poligono, cornice inclusa;
2 Costruire Vor (P );
3 Eliminare da Vor (P ) i lati che
intersecano l’interno degli ostacoli
ottenendo Vor (P )0 ;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Path Planning
Il problema
Dato un insieme di ostacoli poligonali nel
piano lo scopo è individuare un percorso
libero da collisioni che metta in
comunicazione due posizioni assegnate.
Algoritmo
1 Definire un insieme di punti P lungo i
lati di ogni poligono, cornice inclusa;
2 Costruire Vor (P );
3 Eliminare da Vor (P ) i lati che
intersecano l’interno degli ostacoli
ottenendo Vor (P )0 ;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Path Planning
Il problema
Dato un insieme di ostacoli poligonali nel
piano lo scopo è individuare un percorso
libero da collisioni che metta in
comunicazione due posizioni assegnate.
Algoritmo
1 Definire un insieme di punti P lungo i
lati di ogni poligono, cornice inclusa;
2 Costruire Vor (P );
3 Eliminare da Vor (P ) i lati che
intersecano l’interno degli ostacoli
ottenendo Vor (P )0 ;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Path Planning
Il problema
Dato un insieme di ostacoli poligonali nel
piano lo scopo è individuare un percorso
libero da collisioni che metta in
comunicazione due posizioni assegnate.
Algoritmo
1 Definire un insieme di punti P lungo i
lati di ogni poligono, cornice inclusa;
2 Costruire Vor (P );
3 Eliminare da Vor (P ) i lati che
intersecano l’interno degli ostacoli
ottenendo Vor (P )0 ;
4 Convertire il diagramma ottenuto in
un grafo G(V , E ) i cui vertici e lati
corrispondono a quelli di Vor (P )0 ;
5 Collegare pstart e pgoal ai vertici più
vicini in Vor (P )0 ;
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
6 Individuare un path che collega pstart
a pgoal tramite un qualsiasi algoritmo
Universities of
di visita di grafi.
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Sketch Algorithm
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Section 6
Voronoi Diagram per controllo di rotondità
(smallest-width annulus problem)
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Smallest-width annulus problem
Il problema
Supponiamo di dover costruire un oggetto la
cui forma deve essere il più circolare
possibile. Quindi una volta costruito ne
vogliamo testare la rotondità. Per fare
questo ci affidiamo a macchine di
misurazioni che determinano molti punti sul
bordo dell’oggetto.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Rotondità
Definizione
La rotondità di un insieme di punti è definita
come la larghezza del più piccolo anello
circolare che contiene quei punti. Un anello
è la regione che si trova tra due
circonferenze concentriche e la larghezza è
la differenza fra i raggi. Indicheremo con:
I Couter la circonferenza esterna;
I Cinner la circonferenza interna
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
L’anello più stretto
Casi Possibili
Dato uninsieme di punti P, l’anello più stretto
può essere dei seguenti tipi:
I Couter contiene almeno 3 punti di P e
Cinner contiene almeno 1 punto di P;
I Couter contiene almeno 1 punto di P e
Cinner contiene almeno 3 punti di P;
I Couter contiene almeno 2 punti di P e
Cinner contiene almeno 2 punti di P;
Obbiettivo
Per conoscere la larghezza dell’anello
dobbiamo individuare il centro dell’anello
stesso. Per individuare il centro
introduciamo farthest-point Voronoi
Diagram.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Farthest Voronoi diagram
Definizione
Il farthest-point Voronoi Diagram (fpVD)
consiste nella partizione del piano in regioni
nelle quali risiedono i punti che hanno il sito
più lontano in comune.
Costruzione
La cella di un punto pi nell’fpVD è
l’intersezione di n − 1 semi-piani (analogo a
Vor (P )) ma viene considerato l’altro lato del
bisettore.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Farthest Voronoi diagram - alcune proprietà
Prop. 1
Per qualsiasi punto nel piano, il relativo
punto più lontano fra i punti in P deve essere
un punto che giace sul convex hull di P.
Prop 2
Supponiamo pi ∈ P sul convex hull. Sia q un
punto nel piano per cui pi è il punto più
lontano. Sia l (pi , q ) la retta passante da pi e
q. Allora tutti punti nella semiretta su l (pi , q )
sono nella cella di pi ⇒ celle illimitate;
Prop 3
Il centro della circonferenza con raggio
minimo che include tutti i punti di P:
I è un vertice di fpVD;
I punto medio di un lato di fpVD.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Farthest Voronoi diagram - Esempio
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Farthest Voronoi diagram - algoritmo di costruzione
Algoritmo
Fase 1:
I calcolare convex hull di P (O (n log n));
I considerare i vertici della convex hull in ordine
casuale p1 . . . ph ;
for i = h . . . 4 (−1)
- rimuovi pi dalla convex hull;
- collega i vertici adiacenti a pi dalla convex
hull;
- memorizza cw (pi ) (il vicino in senso
orario);
- memorizza ccw (pi ) (il vicino in senso
anti-orario);
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Farthest Voronoi diagram - algoritmo di costruzione
Algoritmo
Fase 1:
I calcolare convex hull di P (O (n log n));
I considerare i vertici della convex hull in ordine
casuale p1 . . . ph ;
for i = h . . . 4 (−1)
- rimuovi pi dalla convex hull;
- collega i vertici adiacenti a pi dalla convex
hull;
- memorizza cw (pi ) (il vicino in senso
orario);
- memorizza ccw (pi ) (il vicino in senso
anti-orario);
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Farthest Voronoi diagram - algoritmo di costruzione
Algoritmo
Indichiamo con Fi il fpVD(p1 , p2 , . . . , pi ).
Fase 2:
I calcolare fpVD di p1 , p2 , p3 → F3 ;
for i = 4 . . . h
- aggiungi pi a fpVD Fi −1 per ottenere Fi
Osservazione Per costruire in modo efficiente Fi a
partire da Fi −1 manteniamo un puntatore ∀1≤j ≤i −1 pj
al primo lato semi-infinito della cella pj che si incontra
in senso antiorario (nella doubly-connected linked
list).
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Ottenere Fi a partire da Fi −1
I All’inserimento di pi la relativa cella sarà
definita all’interno delle celle dei sui vicini
cw (pi ), ccw (pi ) che in Fi −1 sono adiacenti;
I Ricordiamo che ccw (pi ) ha un puntatore al
lato di Fi −1 che separa le celle di
cw (pi ), ccw (pi ) in Fi −1 ;
I il bisettore fra pi e ccw (pi ) genera una nuova
semiretta (lato di fpVD) che starà nella cella di
ccw (pi );
I grazie al puntatore di ccw (pi ) al primo lato
della sua cella in senso antiorario
attraversiamo i lati delle celle di Fi −1 per
controllare quali sono intersecate;
I quando individuiamo un intersezione
passiamo alla cella successiva, relativa a un
punto pj , confinante e ripetiamo tutti i passaggi
(considerando l’intersezione fra il bisettore
pi , pj e i lati della cella di pj );
I l’algoritmo termina quando il lato puntato da
cw (pi ) viene incontrato.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Complessità
Idea
O (n log n) - complessità calcolo convex hull;
O (1) - accesso al primo lato in senso antiorario della
cella di pi ;
O (ki ) - se ki è il numero di lati che definiscono il
confine allora per costruire la cella di pi :
I visitiamo O (ki ) lati e vertici di Fi −1 ;
I rimuoviamo O (ki ) vertici e lati e creiamo
O (ki ) lati e vertici;
⇒ aggiungere pi ha un costo lineare nell’ordine della
complessità della relativa cella.
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Complessità - stimare ki
Quante lati ha mediamente una cella?
Sapendo che:
I al più il numero di lati di un Fi è pari a 2i − 3;
I ogni lato limita esattamente 2 celle;
I ogni punto pi ha la stessa probabilità di essere
aggiunto;
Abbiamo che il numero medio di lati di ogni cella è
dato da:
ki ≤
2(2i − 3)
i
=
4i − 6
i
<4
⇒ il tempo per costruire Fi a partire da Fi −1 è
costante O (1).
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Torniamo al problema dell’anello
Abbiamo i seguenti casi:
:: Cinner interseca almeno tre punti di P ⇒ il
centro è un vertice di Vor (P );
:: Couter interseca almeno tre punti di P ⇒ il
centro è un vertice di vfVD (P );
:: sia Cinnner che Couter contengono due punti ⇒
il centro starà su un lato di Vor (P ) e
contemporaneamente su un lato di fpVD (P ).
⇒ possiamo ottenere un insieme di punti
ragionevolmente piccolo che dovrà contenere il
centro dell’anello più stretto.
Come?
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Introduzione Definizioni di base Proprietà strutturali Vor(P) Sweep Algorithm Voronoi Diagram e Path Planning Voronoi Diagram per controllo d
Smallest-width annulus problem
Torniamo al problema dell’anello
Algoritmo
- calcola Vor (P );
- calcola fpVD (P );
for each v ∈ V (fpVD (P ))
individua il sito più vicino a v ;
end
for each v ∈ V (Vor (P ))
individua il sito più vicino a v ;
end
for each e0 ∈ E (Vor (P ))
for each e00 ∈ E (fpVD (P ))
calcola intersezione fra e0 ed e00 ;
end
end
end
Duccio Mugnaini - [email protected]
Diagramma di Voronoi
Universities of
Thank you for your attention.