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.