2. SOMMARIO
• Query su mesh navigabili senza indici
• Strutture ausiliarie: alberi di ricerca
• Quadtree, PR-quadtree e location code
• PR3T-quadtree
• PM-quadtree: PM2-quadtree
• PM2T-quadtree
• Analisi costi
• Analisi performance
2
3. QUERY SU MESH IN 2D
Location query
trovare i triangoli che contengono un punto (x,y)
Window query
trovare i triangoli che intersecano un rettangolo
(xmin,xmax,ymin,ymax)
Range query
trovare i triangoli che intersecano un cerchio
(x,y,radius)
3
4. QUERY SU MESH NAVIGABILI
Quale triangolo contiene il punto (300,200)? t TV TE TT
A 1,2,7 a,h,g λ,B,λ
v coord VV VE VT e EV EE ET B 2,3,7 b,i,h λ,C,A
1 30,350 7,2 g,a A a 1,2 g,g,h,b A,λ C 3,4,7 c,j,i λ,D,B
2 160,330 3,7,1 b,h,a B,A b 2,3 h,a,i,c B,λ D 4,5,7 d,k,j λ,E,C
c 3,4 i,b,j,d C,λ
3 315,430 4,7,2 c,i,b C,B E 5,6,7 e.f.k λ,λ,D
d 4,5 j,c,k,e D,λ
4 450,335 5,7,3 d,j,c D,C O 6
e 5,6 k,d,f,f E,λ
e
5 375,160 6,7,4 e,k,d E,D f 6,7 e,e,k,g E,λ f E
5
6 250,40 7,5 f,e E g 7,1 h,f,a,a A,λ 7 k
D
7 225,190 1,2,3, g,h,i, A,B, h 7,2 i,g,b,a B,A j d
g
4,5,6 j,k,f C,D, i 7,3 j,h,c,b C,B i
A h C
E,F j 7,4 k,i,d,c D,C 4
1 B
O(#triangoli) anche nel caso a c
k 7,5 f,j,e,d E,D b
peggiore con le svolte 2 3
4
5. INDICE SPAZIALE
• Struttura ausiliaria
• Non fa parte della mesh
• Suddivide le regioni
• Regole di divisione
• Ricerca limitata a tot regioni
• Ogni regione contiene info
• Dominio (estremi)
• Vertici all’interno
• Triangoli intersecati
• Edge intersecati
• Rapido accesso all’indice
• Strutture di tipo albero
5
20. PR-QUADTREE (CONSIDERAZIONI)
Struttura non dipende dall’ordine di inserimento dell’albero
Ogni nodo dell’albero rappresenta una regione nello spazio 2D
Ogni nodo dell’albero può contenere solo un punto
Spazio diviso sempre in quattro quadranti di ugual dimensione
Inserimento ricorsivo finché la foglia vuota non viene trovata/creata
Un singolo inserimento può aumentare di molti livello l’albero
se i punti sono particolarmente vicini
Minore è la distanza tra i punti, maggiore sarà la profondità dell’albero
20
21. POINTER-LESS RAPPRESENTATION
Evitiamo di memorizzare:
• I puntatori (4 per ogni nodo interno)
• Nodi interni
Memorizziamo solo i nodi foglia con relativo location code che
codifica il cammino all’interno dell’albero per arrivarci
Si evita di memorizzare una grande quantità di puntatori e di nodi
all’interno dell’albero
Diversi metodi per realizzarlo
Irene Gargantini, An Effective Way to Rapresent Quadtrees, 1982
21
22. INDICI PER MESH POLIGONALI
PM3T-quadtree
• Memorizza triangoli
• Stessa divisione dei PR-quadtree
PM2-quadtree
• Memorizza edge
• Qualsiasi polygon map non solo triangoli
• Divisione regioni più fine
PM2T-quadtree
• Memorizza triangoli
• Divisione regioni più fine
22
23. PM3T QUADTREE
Estensione del PR-quadtree per mesh triangolari
Divisione spaziale sui vertici identica al PR-quadtree
Una foglia può contenere un vertice e la lista dei triangoli intersecati
vi: x, y, z 3N
t i : v 1, v 2 , v 3 3T ≈ 6N (Eulero)
li: loc, v, list* 3LN + 2TL
LN è il numero di foglie dell’indice
TL è la lunghezza di tutte le liste di triangoli
Handle/Manico della lista
Ogni nodo della lista contiene l’indice del
triangolo e il puntatore al successivo nodo
23
24. CLASSE DEI PM QUADTREE
Simili ai PR-quadtree, ma definiti su polygon map
• Alberi di ricerca quaternari
• Memorizzano i punti all’interno della regione
• Memorizzano anche gli spigoli
• Il partizionamento definito rispetto ai vertici con regole aggiuntive
24
25. PM2 QUADTREE
Estensione del PM-quadtree
Divisione spaziale più fine del PR-quadtree (e del PM3T-quadtree)
Una foglia può contenere un vertice e la lista degli edge intersecati
1) Una foglia/regione che
contiene un vertice può
intersecare solo edge che
incidono su tale vertice
2) Una foglia/regione che non
contiene un vertice può
intersecare solo edge che
incidono sullo stesso vertice
esterno al blocco
25
26. PM2 QUADTREE (COSTO)
Funziona per qualsiasi poligono, non solo triangoli
A causa delle regole 1 e 2 abbiamo, in generale, più regioni/foglie
rispetto ad un PM3T-quadtree e quindi LN sarà maggiore
vi: x, y, z 3N
ei: v1, v2 2E ≈ 6N (formula di Eulero)
li: loc, list* 2LN + 2EL
il vertice all’interno di una foglia è facilmente ricavabile
(gli edge nella lista hanno tutti un vertice comune)
LN è il numero di foglie dell’indice
EL è la lunghezza di tutte le liste di edge
26
27. PM2T QUADTREE
Estensione del PR-quadtree per mesh triangolari
Divisione spaziale più fine del PR-quadtree (e del PM3T-quadtree)
Una foglia può contenere un vertice e la lista dei triangoli intersecati
1) Una foglia/regione che
contiene un vertice può
intersecare solo triangoli che
incidono su tale vertice
2) Una foglia/regione che non
contiene un vertice può
intersecare solo triangoli che
incidono sullo stesso vertice
esterno al blocco
27
28. PM2T QUADTREE (TIPO FOGLIA)
4 differenti tipi di foglia/regione:
Foglia completamente vuota ha tipo -1
Foglia intersecata da almeno 3 triangoli ha come tipo l’indice v del
vertice condiviso, triangoli memorizzati non esplicitamente
v è un numero intero positivo
Foglia intersecata da 1 solo triangolo t ha come tipo l’indice del
triangolo come –2(t+1) negativo pari –(tipo/2)–1
Foglia intersecata da 2 triangoli t1 e t2 memorizza l’indice di uno dei
triangoli come –2(t1+1)+1 o –2(t2+1)+1 negativo dispari
in modo che sia diverso da -1 ((1–tipo)/2)–1
28
29. PM2T QUADTREE (COSTO)
A causa delle regole 1 e 2 abbiamo, in generale, più regioni/foglie
rispetto ad un PM3T-quadtree e quindi LN sarà maggiore
vi: x, y, z, t 4N
t i : v1 , v2 , v3, t 1 , t 2 , t 3 6T ≈ 12N (formula di Eulero)
(classica struttura indicizzata con adiacenze)
li: loc, tipo 2LN (nessuna lista)
grazie al tipo e alle relazioni tra vertici e triangoli possiamo navigare la mesh
LN è il numero di foglie dell’indice
LN ≈ 5N per dati sintetizzati (63% in più rispetto alla struttura classica)
LN ≈ 6N per dati reali (75% in più rispetto alla struttura classica)
De Floriani, Fancinoli, Magillo, Dimitri; A HIERARCHICAL SPATIAL INDEX FOR TRIANGULATED SURFACES; 2008
29
30. ANALISI: STRUTTURA DELL’ALBERO
De Floriani, Fancinoli, Magillo, Dimitri; A
HIERARCHICAL SPATIAL INDEX FOR
TRIANGULATED SURFACES; 2008
30
31. ANALISI: OCCUPAZIONE
Table: Depth of the tree, number of leaf
nodes, and storage costs on real data
Rome 957’456 vertices 1’914’867 triangles
Dolomites 810’000 vertices 1’619’963 triangles
De Floriani, Fancinoli, Magillo, Dimitri; A
HIERARCHICAL SPATIAL INDEX FOR
TRIANGULATED SURFACES; 2008
31
32. ANALISI: PERFORMANCE
Point location: trovare il triangolo che contiene un punto
Costo: discesa nell’albero per trovare la regione che contiene il
punto + test di point-in-triangle per ogni triangolo nella regione
Meno svolte
(pesanti a causa
dell’aritmetica FP)
Varianza minore: caso
peggiore vicino alla media
Più nodi visitati a causa
della maggior profondità
dell’albero
Meno triangoli controllati
(Per i PM2-quadtree si ha informazione solo sugli edge quindi il calcolo diventa complesso)
De Floriani, Fancinoli, Magillo, Dimitri; A HIERARCHICAL SPATIAL INDEX FOR TRIANGULATED SURFACES; 2008
32