Index for meshes 2d
-
Upload
alberto-minetti -
Category
Technology
-
view
103 -
download
8
description
Transcript of Index for meshes 2d
1
A L B E R T O M I N E T T I
P A O L A M A I O L I N O
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
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
QUERY SU MESH NAVIGABILI
Quale triangolo contiene il punto (300,200)?
4
v coord VV VE VT
1 30,350 7,2 g,a A
2 160,330 3,7,1 b,h,a B,A
3 315,430 4,7,2 c,i,b C,B
4 450,335 5,7,3 d,j,c D,C
5 375,160 6,7,4 e,k,d E,D
6 250,40 7,5 f,e E
7 225,190 1,2,3,
4,5,6
g,h,i,
j,k,f
A,B,
C,D,
E,F 1
2 3
4
5
6
7
e EV EE ET
a 1,2 g,g,h,b A,λ
b 2,3 h,a,i,c B,λ
c 3,4 i,b,j,d C,λ
d 4,5 j,c,k,e D,λ
e 5,6 k,d,f,f E,λ
f 6,7 e,e,k,g E,λ
g 7,1 h,f,a,a A,λ
h 7,2 i,g,b,a B,A
i 7,3 j,h,c,b C,B
j 7,4 k,i,d,c D,C
k 7,5 f,j,e,d E,D a b
c
d
e f
g
h i
j
k
A
B
C
D
E
t TV TE TT
A 1,2,7 a,h,g λ,B,λ
B 2,3,7 b,i,h λ,C,A
C 3,4,7 c,j,i λ,D,B
D 4,5,7 d,k,j λ,E,C
E 5,6,7 e.f.k λ,λ,D
O(#triangoli) anche nel caso
peggiore con le svolte
O
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
ALBERO
Grafo diretto
• Aciclico
• Connesso
• Senza sotto-alberi condivisi
• Una sola radice
Elimineremo nodi interni e puntatori
6
BINARY SEARCH TREE
Ricerca in una dimensione
L’elemento 64 è presente nell’albero?
7
Cammino:
60,74,65,63,64!
Complessità logaritmica
POINT REGION QUADTREE
8
Indice per punti nello spazio bidimensionale
POINT REGION QUADTREE (SITUAZIONE INIZIALE)
9
Ogni punto in una regione/foglia dell’albero
Dividiamo le regioni sempre in 4 ricorsivamente
POINT REGION QUADTREE (INSERIEMENTO DI A E B)
10
A
B
POINT REGION QUADTREE (A E B INSERITI)
11
A
B
POINT REGION QUADTREE (INSERIMENTO DI C E D)
12
A
B
C
D
POINT REGION QUADTREE (C INSERITO)
13
A
B
C
D
POINT REGION QUADTREE (C E D INSERITI)
14
A
B
C
D
POINT REGION QUADTREE (INSERIMENTO DI E)
15
A
B
C
D
E
POINT REGION QUADTREE (INSERIMENTO DI E)
16
A
B
C
D
E
POINT REGION QUADTREE (E INSERITO)
17
A
B
C
D
E
POINT REGION QUADTREE (E INSERITO)
18
C
D B
POINT REGION QUADTREE
19
C
D B F
G H K J A E M P N L
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
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
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
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
23
Ogni nodo della lista contiene l’indice del
triangolo e il puntatore al successivo nodo
Handle/Manico della lista
vi: x, y, z 3N
ti: v1, v2, v3 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
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
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
25
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
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
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
27
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
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
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
ti: v1 , v2 , v3, t1 , t2 , t3 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
ANALISI: STRUTTURA DELL’ALBERO
30
De Floriani, Fancinoli, Magillo, Dimitri; A
HIERARCHICAL SPATIAL INDEX FOR
TRIANGULATED SURFACES; 2008
ANALISI: OCCUPAZIONE
31
De Floriani, Fancinoli, Magillo, Dimitri; A
HIERARCHICAL SPATIAL INDEX FOR
TRIANGULATED SURFACES; 2008
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
ANALISI: PERFORMANCE
32
(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
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
Meno triangoli controllati
Più nodi visitati a causa
della maggior profondità
dell’albero