32
1 ALBERTO MINETTI PAOLA MAIOLINO

Index for meshes 2d

Embed Size (px)

DESCRIPTION

Other autor: Paola Maiolino

Citation preview

Page 1: 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

Page 2: Index for meshes 2d

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

Page 3: Index for meshes 2d

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

Page 4: Index for meshes 2d

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

Page 5: Index for meshes 2d

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

Page 6: Index for meshes 2d

ALBERO

Grafo diretto

• Aciclico

• Connesso

• Senza sotto-alberi condivisi

• Una sola radice

Elimineremo nodi interni e puntatori

6

Page 7: Index for meshes 2d

BINARY SEARCH TREE

Ricerca in una dimensione

L’elemento 64 è presente nell’albero?

7

Cammino:

60,74,65,63,64!

Complessità logaritmica

Page 8: Index for meshes 2d

POINT REGION QUADTREE

8

Indice per punti nello spazio bidimensionale

Page 9: Index for meshes 2d

POINT REGION QUADTREE (SITUAZIONE INIZIALE)

9

Ogni punto in una regione/foglia dell’albero

Dividiamo le regioni sempre in 4 ricorsivamente

Page 10: Index for meshes 2d

POINT REGION QUADTREE (INSERIEMENTO DI A E B)

10

A

B

Page 11: Index for meshes 2d

POINT REGION QUADTREE (A E B INSERITI)

11

A

B

Page 12: Index for meshes 2d

POINT REGION QUADTREE (INSERIMENTO DI C E D)

12

A

B

C

D

Page 13: Index for meshes 2d

POINT REGION QUADTREE (C INSERITO)

13

A

B

C

D

Page 14: Index for meshes 2d

POINT REGION QUADTREE (C E D INSERITI)

14

A

B

C

D

Page 15: Index for meshes 2d

POINT REGION QUADTREE (INSERIMENTO DI E)

15

A

B

C

D

E

Page 16: Index for meshes 2d

POINT REGION QUADTREE (INSERIMENTO DI E)

16

A

B

C

D

E

Page 17: Index for meshes 2d

POINT REGION QUADTREE (E INSERITO)

17

A

B

C

D

E

Page 18: Index for meshes 2d

POINT REGION QUADTREE (E INSERITO)

18

C

D B

Page 19: Index for meshes 2d

POINT REGION QUADTREE

19

C

D B F

G H K J A E M P N L

Page 20: Index for meshes 2d

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

Page 21: Index for meshes 2d

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

Page 22: Index for meshes 2d

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

Page 23: Index for meshes 2d

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

Page 24: Index for meshes 2d

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

Page 25: Index for meshes 2d

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

Page 26: Index for meshes 2d

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

Page 27: Index for meshes 2d

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

Page 28: Index for meshes 2d

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

Page 29: Index for meshes 2d

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

Page 30: Index for meshes 2d

ANALISI: STRUTTURA DELL’ALBERO

30

De Floriani, Fancinoli, Magillo, Dimitri; A

HIERARCHICAL SPATIAL INDEX FOR

TRIANGULATED SURFACES; 2008

Page 31: Index for meshes 2d

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

Page 32: Index for meshes 2d

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