geração de malhas – sme5827 poligonização e estruturas de dados
TRANSCRIPT
![Page 1: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/1.jpg)
Geração de Malhas – SME5827
Poligonização e Estruturas de Dados
Afonso PaivaICMC-USP
15 de outubro de 2013
![Page 2: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/2.jpg)
Células e Simplexos
Definição (célula)Dado um conjunto de pontos {v0, v1, . . . , vk} ⊂ Rn, a célula gerada porestes pontos é o conjunto (combinação convexa):
[v0, v1, . . . , vk ] =
{v =
k∑i=0
λivi ; λi ≥ 0 ;k∑
i=0
λi = 1
}
ExemploA célula gerada por [v0, v1, v2] pode ser um ponto, um segmento de retaou um triângulo, de acordo com a relação de dependência linear dos vetoresv1 − v0 e v2 − v0.
![Page 3: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/3.jpg)
Células e Simplexos
Definição (célula)Dado um conjunto de pontos {v0, v1, . . . , vk} ⊂ Rn, a célula gerada porestes pontos é o conjunto (combinação convexa):
[v0, v1, . . . , vk ] =
{v =
k∑i=0
λivi ; λi ≥ 0 ;k∑
i=0
λi = 1
}
ExemploA célula gerada por [v0, v1, v2] pode ser um ponto, um segmento de retaou um triângulo, de acordo com a relação de dependência linear dos vetoresv1 − v0 e v2 − v0.
![Page 4: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/4.jpg)
Células e Simplexos
Definição (posição geral)Dado um conjunto de pontos {v0, v1, . . . , vm} ⊂ Rn, dizemos que elesestão em posição geral, se para qualquer subconjunto {v0, v1, . . . , vk}, comk ≤ n, os vetores v1 − v0, v2 − v0, . . . , vk − v0 são LI.
P.G.
0v
P.G.
0v
1v
P.G.
0v
1v2v
Não P.G.
0v
1v
2v
Não P.G.0v
1v
3v2v
![Page 5: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/5.jpg)
Células e Simplexos
Definição (posição geral)Dado um conjunto de pontos {v0, v1, . . . , vm} ⊂ Rn, dizemos que elesestão em posição geral, se para qualquer subconjunto {v0, v1, . . . , vk}, comk ≤ n, os vetores v1 − v0, v2 − v0, . . . , vk − v0 são LI.
P.G.
0v
P.G.
0v
1v
P.G.
0v
1v2v
Não P.G.
0v
1v
2v
Não P.G.0v
1v
3v2v
![Page 6: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/6.jpg)
Células e Simplexos
Definição (k-simplexo)Quando {v0, v1, . . . , vk} ⊂ Rn estão em posição geral, a célula por elesgerada é chamada de simplexo de dimensão k ou k-simplexo. Denotaremostal simplexo por 〈v0, v1, . . . , vk〉.
0-simplexo 2-simplexo1-simplexo 3-simplexo
Dado um simplexo σ = 〈v0, v1, . . . , vk〉, cada ponto vi é chamado devértice. Os 1-simplexos gerados pelo par [vi , vj ], com i 6= j , são chamadosde arestas. Os 2-simplexos gerados por [vi , vj , vk ], com i 6= j 6= k , sãochamados de faces de σ.
![Page 7: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/7.jpg)
Células e Simplexos
Definição (k-simplexo)Quando {v0, v1, . . . , vk} ⊂ Rn estão em posição geral, a célula por elesgerada é chamada de simplexo de dimensão k ou k-simplexo. Denotaremostal simplexo por 〈v0, v1, . . . , vk〉.
0-simplexo 2-simplexo1-simplexo 3-simplexo
Dado um simplexo σ = 〈v0, v1, . . . , vk〉, cada ponto vi é chamado devértice. Os 1-simplexos gerados pelo par [vi , vj ], com i 6= j , são chamadosde arestas. Os 2-simplexos gerados por [vi , vj , vk ], com i 6= j 6= k , sãochamados de faces de σ.
![Page 8: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/8.jpg)
Células e Simplexos
Definição (k-simplexo)Quando {v0, v1, . . . , vk} ⊂ Rn estão em posição geral, a célula por elesgerada é chamada de simplexo de dimensão k ou k-simplexo. Denotaremostal simplexo por 〈v0, v1, . . . , vk〉.
0-simplexo 2-simplexo1-simplexo 3-simplexo
Dado um simplexo σ = 〈v0, v1, . . . , vk〉, cada ponto vi é chamado devértice. Os 1-simplexos gerados pelo par [vi , vj ], com i 6= j , são chamadosde arestas. Os 2-simplexos gerados por [vi , vj , vk ], com i 6= j 6= k , sãochamados de faces de σ.
![Page 9: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/9.jpg)
Decomposição Celular
DefiniçãoUma decomposição celular de um subconjunto D ⊂ Rn é um conjuntofinito de células C = {ci} que satisfazem às seguintes propriedades:
1. D = ∪ici e2. Se ci , cj ∈ C então ci ∩ cj ∈ C.
0v 1v
3v 2vDecomposição celular do quadrado unitário quepossui células de 0, 1 e 2 dimensões:
I dimensão 0: v0, v1, v2, v3
I dimensão 1: [v0, v1], [v1, v2], [v2, v3], [v3, v0]
I dimensão 2: [v0, v1, v2, v3]
![Page 10: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/10.jpg)
Decomposição Celular
DefiniçãoUma decomposição celular de um subconjunto D ⊂ Rn é um conjuntofinito de células C = {ci} que satisfazem às seguintes propriedades:
1. D = ∪ici e2. Se ci , cj ∈ C então ci ∩ cj ∈ C.
0v 1v
3v 2vDecomposição celular do quadrado unitário quepossui células de 0, 1 e 2 dimensões:
I dimensão 0: v0, v1, v2, v3
I dimensão 1: [v0, v1], [v1, v2], [v2, v3], [v3, v0]
I dimensão 2: [v0, v1, v2, v3]
![Page 11: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/11.jpg)
Triangulação
DefiniçãoQuando todos os elementos de uma decomposição celular de uma região Dsão simplexos dizemos que ela é uma triangulação de D e denotaremospor T (D).
região D duas triangulações de D
triangulação válida
trinagulação inválida
![Page 12: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/12.jpg)
Triangulação
DefiniçãoQuando todos os elementos de uma decomposição celular de uma região Dsão simplexos dizemos que ela é uma triangulação de D e denotaremospor T (D).
região D duas triangulações de D
triangulação válida
trinagulação inválida
![Page 13: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/13.jpg)
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
0v 1v
3v 2v
A triangulação de um quadrado é formada pelos simplexos:
I 0-simplexos: v0, v1, v2, v3
I 1-simplexos: 〈v0, v1〉, 〈v1, v2〉, 〈v2, v3〉, 〈v3, v0〉, 〈v0, v2〉I 2-simplexos: 〈v0, v1, v2〉, 〈v0, v2, v3〉
![Page 14: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/14.jpg)
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
0v 1v
3v 2v
A triangulação de um quadrado é formada pelos simplexos:I 0-simplexos: v0, v1, v2, v3
I 1-simplexos: 〈v0, v1〉, 〈v1, v2〉, 〈v2, v3〉, 〈v3, v0〉, 〈v0, v2〉I 2-simplexos: 〈v0, v1, v2〉, 〈v0, v2, v3〉
![Page 15: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/15.jpg)
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
0v 1v
3v 2v
A triangulação de um quadrado é formada pelos simplexos:I 0-simplexos: v0, v1, v2, v3
I 1-simplexos: 〈v0, v1〉, 〈v1, v2〉, 〈v2, v3〉, 〈v3, v0〉, 〈v0, v2〉
I 2-simplexos: 〈v0, v1, v2〉, 〈v0, v2, v3〉
![Page 16: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/16.jpg)
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
0v 1v
3v 2v
A triangulação de um quadrado é formada pelos simplexos:I 0-simplexos: v0, v1, v2, v3
I 1-simplexos: 〈v0, v1〉, 〈v1, v2〉, 〈v2, v3〉, 〈v3, v0〉, 〈v0, v2〉I 2-simplexos: 〈v0, v1, v2〉, 〈v0, v2, v3〉
![Page 17: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/17.jpg)
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
Usando a diagonal do cubo, podemos decompô-lo em 6 tetraedros(3-simplexos).
![Page 18: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/18.jpg)
Poligonização
Objetivo: Queremos aproximar por polígonos (triângulos) uma superfícieimplícita S = f −1(0), onde f ∈ C 0 e 0 é valor regular de f .
Considerações:
![Page 19: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/19.jpg)
Poligonização
Objetivo: Queremos aproximar por polígonos (triângulos) uma superfícieimplícita S = f −1(0), onde f ∈ C 0 e 0 é valor regular de f .
Considerações:
![Page 20: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/20.jpg)
Poligonização
Objetivo: Queremos aproximar por polígonos (triângulos) uma superfícieimplícita S = f −1(0), onde f ∈ C 0 e 0 é valor regular de f .
Considerações:
Em várias simulações de escoamento de fluidos a superfície livre é definidaatravés de uma função implícita (level-set).
![Page 21: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/21.jpg)
Poligonização
Objetivo: Queremos aproximar por polígonos (triângulos) uma superfícieimplícita S = f −1(0), onde f ∈ C 0 e 0 é valor regular de f .
Considerações:
f(x) < 0
f(x) > 0
S = f (0)-1
A função f define duas regiões no espaço.
![Page 22: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/22.jpg)
Poligonização
Objetivo: Queremos aproximar por polígonos (triângulos) uma superfícieimplícita S = f −1(0), onde f ∈ C 0 e 0 é valor regular de f .
Considerações:
n
O vetor normal é dado por n = ∇f (x).
![Page 23: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/23.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Algoritmo
![Page 24: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/24.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Algoritmo
Passo 1: fazer uma decomposição simplicial no domínio de f , isto é, dividiro domínio em tetraedros.
![Page 25: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/25.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Algoritmo
Passo 2: se f não for uma função discreta, então avalie f (x) em todos osvértices do grid.
![Page 26: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/26.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Algoritmo
Passo 3: aproxime f (x) linearmente nos tetraedros onde f muda de sinal.
![Page 27: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/27.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Tabela de Casos
I 2 casos (a menos de permutações) de configuração de sinal dafunção f em cada tetraedro.
-
++
+
-
+
+-
![Page 28: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/28.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Aproximação linear por partes
-
+
+
0v
1v
3v
rS
Seja r ∈ f −1(0) na aresta 〈v0, v1〉, logo:
r = (1− t) v0 + t v1
Basta determinar o valor de t. Fazendo,
0 = f (r) = f ((1− t) v0 + t v1)
≈ (1− t) f (v0) + t f (v1)
Portanto,
t =f (v0)
f (v0)− f (v1)
![Page 29: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/29.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Aproximação linear por partes
-
+
+
0v
1v
3v
rS
Seja r ∈ f −1(0) na aresta 〈v0, v1〉, logo:
r = (1− t) v0 + t v1
Basta determinar o valor de t. Fazendo,
0 = f (r) = f ((1− t) v0 + t v1)
≈ (1− t) f (v0) + t f (v1)
Portanto,
t =f (v0)
f (v0)− f (v1)
![Page 30: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/30.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Aproximação linear por partes
-
+
+
0v
1v
3v
rS
Seja r ∈ f −1(0) na aresta 〈v0, v1〉, logo:
r = (1− t) v0 + t v1
Basta determinar o valor de t. Fazendo,
0 = f (r) = f ((1− t) v0 + t v1)
≈ (1− t) f (v0) + t f (v1)
Portanto,
t =f (v0)
f (v0)− f (v1)
![Page 31: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/31.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Aproximação linear por partes
-
+
+
0v
1v
3v
rS
Seja r ∈ f −1(0) na aresta 〈v0, v1〉, logo:
r = (1− t) v0 + t v1
Basta determinar o valor de t.
Fazendo,
0 = f (r) = f ((1− t) v0 + t v1)
≈ (1− t) f (v0) + t f (v1)
Portanto,
t =f (v0)
f (v0)− f (v1)
![Page 32: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/32.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Aproximação linear por partes
-
+
+
0v
1v
3v
rS
Seja r ∈ f −1(0) na aresta 〈v0, v1〉, logo:
r = (1− t) v0 + t v1
Basta determinar o valor de t. Fazendo,
0 = f (r) = f ((1− t) v0 + t v1)
≈ (1− t) f (v0) + t f (v1)
Portanto,
t =f (v0)
f (v0)− f (v1)
![Page 33: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/33.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Aproximação linear por partes
-
+
+
0v
1v
3v
rS
Seja r ∈ f −1(0) na aresta 〈v0, v1〉, logo:
r = (1− t) v0 + t v1
Basta determinar o valor de t. Fazendo,
0 = f (r) = f ((1− t) v0 + t v1)
≈ (1− t) f (v0) + t f (v1)
Portanto,
t =f (v0)
f (v0)− f (v1)
![Page 34: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/34.jpg)
Marching Tetrahedra: Bloomenthal, 1998
Aproximação linear por partes
-
+
+
0v
1v
3v
rS
Seja r ∈ f −1(0) na aresta 〈v0, v1〉, logo:
r = (1− t) v0 + t v1
Basta determinar o valor de t. Fazendo,
0 = f (r) = f ((1− t) v0 + t v1)
≈ (1− t) f (v0) + t f (v1)
Portanto,
t =f (v0)
f (v0)− f (v1)
![Page 35: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/35.jpg)
Marching Cubes: Lorensen & Cline, 1987
I Faz uma decomposição celular do domínio de f , isto é, particiona odomínio em cubos.
![Page 36: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/36.jpg)
Marching Cubes: Lorensen & Cline, 1987
I 15 casos (a menos de permutações) de configuração de sinal dafunção f em cada cubo.
![Page 37: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/37.jpg)
Marching Cubes: Lorensen & Cline, 1987
Problemas:
I Problemas de ambiguidadeI Difícil de implementar
![Page 38: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/38.jpg)
Marching Cubes: Lorensen & Cline, 1987
Problemas:
I Problemas de ambiguidadeI Difícil de implementar
![Page 39: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/39.jpg)
Estruturas de Dados (ED)
O que armazenar na ED?
I Geometria:
I coordenadas 2D ou 3D;
I Atributos de vértice ou face:
I normal, cor, coordenada de textura;
I Topologia:
I relações de adjacência (conectividade).
![Page 40: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/40.jpg)
Estruturas de Dados (ED)
O que armazenar na ED?
I Geometria:
I coordenadas 2D ou 3D;I Atributos de vértice ou face:
I normal, cor, coordenada de textura;
I Topologia:
I relações de adjacência (conectividade).
![Page 41: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/41.jpg)
Estruturas de Dados (ED)
O que armazenar na ED?
I Geometria:I coordenadas 2D ou 3D;
I Atributos de vértice ou face:
I normal, cor, coordenada de textura;
I Topologia:
I relações de adjacência (conectividade).
![Page 42: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/42.jpg)
Estruturas de Dados (ED)
O que armazenar na ED?
I Geometria:I coordenadas 2D ou 3D;
I Atributos de vértice ou face:
I normal, cor, coordenada de textura;I Topologia:
I relações de adjacência (conectividade).
![Page 43: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/43.jpg)
Estruturas de Dados (ED)
O que armazenar na ED?
I Geometria:I coordenadas 2D ou 3D;
I Atributos de vértice ou face:I normal, cor, coordenada de textura;
I Topologia:
I relações de adjacência (conectividade).
![Page 44: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/44.jpg)
Estruturas de Dados (ED)
O que armazenar na ED?
I Geometria:I coordenadas 2D ou 3D;
I Atributos de vértice ou face:I normal, cor, coordenada de textura;
I Topologia:
I relações de adjacência (conectividade).
![Page 45: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/45.jpg)
Estruturas de Dados (ED)
O que armazenar na ED?
I Geometria:I coordenadas 2D ou 3D;
I Atributos de vértice ou face:I normal, cor, coordenada de textura;
I Topologia:I relações de adjacência (conectividade).
![Page 46: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/46.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:
I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
![Page 47: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/47.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;
I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:
I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
![Page 48: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/48.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:
I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
![Page 49: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/49.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?
I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:
I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
![Page 50: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/50.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?
I Quais são as faces adjacentes a face k?I Modificações:
I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
vj
![Page 51: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/51.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:
I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
vj
![Page 52: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/52.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:
I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
vj
![Page 53: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/53.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:I Remover ou adicionar um vértice/face;
I edge-flip, edge collapse, vertex split
vj
![Page 54: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/54.jpg)
Estruturas de Dados (ED)
O que a ED deve suportar?
I Rendering;I Consultas geométricas:
I Quais são os vértices da face i?I Qual são os vértices do 1-anel do vértice j?I Quais são as faces adjacentes a face k?
I Modificações:I Remover ou adicionar um vértice/face;I edge-flip, edge collapse, vertex split
vj
edge-�ip
edge collapse
vertex split
![Page 55: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/55.jpg)
Estruturas de Dados (ED)
O quão eficiente é a ED?
I Tempo de construção(pré-processamento);
I Tempo de resposta de uma consulta;I Tempo para realizar uma operação;I Consumo de memória RAM.
![Page 56: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/56.jpg)
Estruturas de Dados (ED)
O quão eficiente é a ED?
I Tempo de construção(pré-processamento);
I Tempo de resposta de uma consulta;I Tempo para realizar uma operação;I Consumo de memória RAM.
![Page 57: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/57.jpg)
Estruturas de Dados (ED)
O quão eficiente é a ED?
I Tempo de construção(pré-processamento);
I Tempo de resposta de uma consulta;
I Tempo para realizar uma operação;I Consumo de memória RAM.
![Page 58: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/58.jpg)
Estruturas de Dados (ED)
O quão eficiente é a ED?
I Tempo de construção(pré-processamento);
I Tempo de resposta de uma consulta;I Tempo para realizar uma operação;
I Consumo de memória RAM.
![Page 59: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/59.jpg)
Estruturas de Dados (ED)
O quão eficiente é a ED?
I Tempo de construção(pré-processamento);
I Tempo de resposta de uma consulta;I Tempo para realizar uma operação;I Consumo de memória RAM.
![Page 60: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/60.jpg)
Face Set
I Face: 3 posições;I Não possui conectividade;I Arquivos do formato STL;I Simples e redundante.
Triângulos(x1
1 , y11 , z
11 ) (x1
2 , y12 , z
12 ) (x1
3 , y13 , z
13 )
(x21 , y
21 , z
21 ) (x2
2 , y22 , z
22 ) (x2
3 , y23 , z
23 )
(x31 , y
31 , z
31 ) (x3
2 , y32 , z
32 ) (x3
3 , y33 , z
33 )
......
...(x f1 , y
f1 , z
f1 ) (x f2 , y
f2 , z
f2 ) (x f3 , y
f3 , z
f3 )
![Page 61: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/61.jpg)
Shared Vertex
I Vértice: posição;I Face: índices dos vértices;I Não possui informação de vizinhança;I Arquivos dos formatos OBJ, OFF e PLY;
Vérticesx1 y1 z1
x2 y2 z2
x3 y3 z3
......
...xv y v zv
Triângulosv11 v1
2 v13
v21 v2
2 v23
v31 v3
2 v33
......
...vf1 vf2 vf3
![Page 62: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/62.jpg)
Exemplo: arquivo OBJ
Tetraedro
# OBJ file format with ext .objv 1.0 0.0 0.0v 0.0 1.0 0.0v 0.0 0.0 1.0v 0.0 0.0 0.0f 2 4 3f 4 2 1f 3 1 2f 1 3 4
![Page 63: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/63.jpg)
Shared Vertex
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
I Quem são os vértices da face f1?;
I O(1) – basta consultar a lista de faces;I Quem são os vértices do 1-anel do vértice v3?;
I busca completa em todos os vértices;
I Os vértices v2 e v6 são adjacentes?;
I busca completa em todas as faces.
![Page 64: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/64.jpg)
Shared Vertex
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
I Quem são os vértices da face f1?;I O(1) – basta consultar a lista de faces;
I Quem são os vértices do 1-anel do vértice v3?;
I busca completa em todos os vértices;
I Os vértices v2 e v6 são adjacentes?;
I busca completa em todas as faces.
![Page 65: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/65.jpg)
Shared Vertex
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
I Quem são os vértices da face f1?;I O(1) – basta consultar a lista de faces;
I Quem são os vértices do 1-anel do vértice v3?;
I busca completa em todos os vértices;I Os vértices v2 e v6 são adjacentes?;
I busca completa em todas as faces.
![Page 66: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/66.jpg)
Shared Vertex
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
I Quem são os vértices da face f1?;I O(1) – basta consultar a lista de faces;
I Quem são os vértices do 1-anel do vértice v3?;I busca completa em todos os vértices;
I Os vértices v2 e v6 são adjacentes?;
I busca completa em todas as faces.
![Page 67: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/67.jpg)
Shared Vertex
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
I Quem são os vértices da face f1?;I O(1) – basta consultar a lista de faces;
I Quem são os vértices do 1-anel do vértice v3?;I busca completa em todos os vértices;
I Os vértices v2 e v6 são adjacentes?;
I busca completa em todas as faces.
![Page 68: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/68.jpg)
Shared Vertex
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
I Quem são os vértices da face f1?;I O(1) – basta consultar a lista de faces;
I Quem são os vértices do 1-anel do vértice v3?;I busca completa em todos os vértices;
I Os vértices v2 e v6 são adjacentes?;I busca completa em todas as faces.
![Page 69: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/69.jpg)
Half-Edge (HE)
I Vértice:I posiçãoI 1 HE que sai do vértice
I Half-Edge:I orientação consistenteI 1 índice do vértice de origemI 1 índice da face incidenteI 1, 2, ou 3 índices de HEs
(próxima, anterior e oposta)I Face:
I 1 índice da HE adjacente
![Page 70: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/70.jpg)
Half-Edge (HE)
I Vértice:I posiçãoI 1 HE que sai do vértice
I Half-Edge:I orientação consistenteI 1 índice do vértice de origemI 1 índice da face incidenteI 1, 2, ou 3 índices de HEs
(próxima, anterior e oposta)
I Face:I 1 índice da HE adjacente
![Page 71: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/71.jpg)
Half-Edge (HE)
I Vértice:I posiçãoI 1 HE que sai do vértice
I Half-Edge:I orientação consistenteI 1 índice do vértice de origemI 1 índice da face incidenteI 1, 2, ou 3 índices de HEs
(próxima, anterior e oposta)I Face:
I 1 índice da HE adjacente
![Page 72: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/72.jpg)
1-Anel com Half-Edge
1. Comece em um vértice
2. HE que sai do vértice3. HE oposta4. Próxima HE5. HE oposta6. Próxima HE7. · · ·
![Page 73: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/73.jpg)
1-Anel com Half-Edge
1. Comece em um vértice2. HE que sai do vértice
3. HE oposta4. Próxima HE5. HE oposta6. Próxima HE7. · · ·
![Page 74: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/74.jpg)
1-Anel com Half-Edge
1. Comece em um vértice2. HE que sai do vértice3. HE oposta
4. Próxima HE5. HE oposta6. Próxima HE7. · · ·
![Page 75: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/75.jpg)
1-Anel com Half-Edge
1. Comece em um vértice2. HE que sai do vértice3. HE oposta4. Próxima HE
5. HE oposta6. Próxima HE7. · · ·
![Page 76: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/76.jpg)
1-Anel com Half-Edge
1. Comece em um vértice2. HE que sai do vértice3. HE oposta4. Próxima HE5. HE oposta
6. Próxima HE7. · · ·
![Page 77: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/77.jpg)
1-Anel com Half-Edge
1. Comece em um vértice2. HE que sai do vértice3. HE oposta4. Próxima HE5. HE oposta6. Próxima HE7. · · ·
![Page 78: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/78.jpg)
Conectividade baseada em Face
I Vértice:I posição
I Aresta:I nenhuma informação (explícita)
I Face:I 3 índices de vérticesI 3 índices de faces vizinhas
![Page 79: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/79.jpg)
Conectividade baseada em Face
I Vértice:I posição
I Aresta:I nenhuma informação (explícita)
I Face:I 3 índices de vérticesI 3 índices de faces vizinhas
![Page 80: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/80.jpg)
Conectividade baseada em Face
I Vértice:I posição
I Aresta:I nenhuma informação (explícita)
I Face:I 3 índices de vérticesI 3 índices de faces vizinhas
![Page 81: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/81.jpg)
Conectividade baseada em Aresta
I Vértice:I posiçãoI 1 índice da aresta incidente
I Aresta:I nenhuma informação de orientaçãoI 2 índices de vérticesI 2 índices de faces vizinhasI 4 arestas
I Face:I 1 índice de aresta
![Page 82: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/82.jpg)
Conectividade baseada em Aresta
I Vértice:I posiçãoI 1 índice da aresta incidente
I Aresta:I nenhuma informação de orientaçãoI 2 índices de vérticesI 2 índices de faces vizinhasI 4 arestas
I Face:I 1 índice de aresta
![Page 83: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/83.jpg)
Conectividade baseada em Aresta
I Vértice:I posiçãoI 1 índice da aresta incidente
I Aresta:I nenhuma informação de orientaçãoI 2 índices de vérticesI 2 índices de faces vizinhasI 4 arestas
I Face:I 1 índice de aresta
![Page 84: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/84.jpg)
Matriz de Adjacência
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
v1 v2 v3 v4 v5 v6
v1 0 1 1 0 0 0v2 1 0 1 1 0 0v3 1 1 0 1 0 1v4 0 1 1 0 1 1v5 0 0 0 1 0 1v6 0 0 1 1 1 0
aij =
{1 se os vértices vi e vj formam uma aresta0 caso contrário
I Nenhuma informação de conectividade entre umvértice e suas faces adjacentes;
I Esparsa e simétrica (grafos simples não orientados);I Pode representar malhas non-manifold.
![Page 85: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/85.jpg)
Matriz de Adjacência
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
v1 v2 v3 v4 v5 v6
v1 0 1 1 0 0 0v2 1 0 1 1 0 0v3 1 1 0 1 0 1v4 0 1 1 0 1 1v5 0 0 0 1 0 1v6 0 0 1 1 1 0
aij =
{1 se os vértices vi e vj formam uma aresta0 caso contrário
I Nenhuma informação de conectividade entre umvértice e suas faces adjacentes;
I Esparsa e simétrica (grafos simples não orientados);I Pode representar malhas non-manifold.
![Page 86: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/86.jpg)
Matriz de Adjacência
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
v1 v2 v3 v4 v5 v6
v1 0 1 1 0 0 0v2 1 0 1 1 0 0v3 1 1 0 1 0 1v4 0 1 1 0 1 1v5 0 0 0 1 0 1v6 0 0 1 1 1 0
aij =
{1 se os vértices vi e vj formam uma aresta0 caso contrário
I Nenhuma informação de conectividade entre umvértice e suas faces adjacentes;
I Esparsa e simétrica (grafos simples não orientados);
I Pode representar malhas non-manifold.
![Page 87: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/87.jpg)
Matriz de Adjacência
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3f 4
v1 v2 v3 v4 v5 v6
v1 0 1 1 0 0 0v2 1 0 1 1 0 0v3 1 1 0 1 0 1v4 0 1 1 0 1 1v5 0 0 0 1 0 1v6 0 0 1 1 1 0
aij =
{1 se os vértices vi e vj formam uma aresta0 caso contrário
I Nenhuma informação de conectividade entre umvértice e suas faces adjacentes;
I Esparsa e simétrica (grafos simples não orientados);I Pode representar malhas non-manifold.
![Page 88: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/88.jpg)
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I Corner – c
I Triângulo – c.tI Vértice – c.vI Corner próximo em c.t – c.n
(sentido anti-horário)I Corner anterior em c.t – c.p (≡ c.n.n)I Corner oposto – c.oI Corner direito – c.r (≡ c.n.o)I Corner esquerdo – c.l (≡ c.p.o)
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
![Page 89: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/89.jpg)
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I Corner – cI Triângulo – c.t
I Vértice – c.vI Corner próximo em c.t – c.n
(sentido anti-horário)I Corner anterior em c.t – c.p (≡ c.n.n)I Corner oposto – c.oI Corner direito – c.r (≡ c.n.o)I Corner esquerdo – c.l (≡ c.p.o)
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
![Page 90: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/90.jpg)
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I Corner – cI Triângulo – c.tI Vértice – c.v
I Corner próximo em c.t – c.n(sentido anti-horário)
I Corner anterior em c.t – c.p (≡ c.n.n)I Corner oposto – c.oI Corner direito – c.r (≡ c.n.o)I Corner esquerdo – c.l (≡ c.p.o)
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
![Page 91: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/91.jpg)
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I Corner – cI Triângulo – c.tI Vértice – c.vI Corner próximo em c.t – c.n
(sentido anti-horário)
I Corner anterior em c.t – c.p (≡ c.n.n)I Corner oposto – c.oI Corner direito – c.r (≡ c.n.o)I Corner esquerdo – c.l (≡ c.p.o)
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
![Page 92: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/92.jpg)
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I Corner – cI Triângulo – c.tI Vértice – c.vI Corner próximo em c.t – c.n
(sentido anti-horário)I Corner anterior em c.t – c.p (≡ c.n.n)
I Corner oposto – c.oI Corner direito – c.r (≡ c.n.o)I Corner esquerdo – c.l (≡ c.p.o)
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
![Page 93: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/93.jpg)
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I Corner – cI Triângulo – c.tI Vértice – c.vI Corner próximo em c.t – c.n
(sentido anti-horário)I Corner anterior em c.t – c.p (≡ c.n.n)I Corner oposto – c.o
I Corner direito – c.r (≡ c.n.o)I Corner esquerdo – c.l (≡ c.p.o)
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
![Page 94: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/94.jpg)
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I Corner – cI Triângulo – c.tI Vértice – c.vI Corner próximo em c.t – c.n
(sentido anti-horário)I Corner anterior em c.t – c.p (≡ c.n.n)I Corner oposto – c.oI Corner direito – c.r (≡ c.n.o)I Corner esquerdo – c.l (≡ c.p.o)
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
![Page 95: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/95.jpg)
Corner Table
Armazenamento
I para cada vértice uma lista de todos os seus corners
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
corner c.v c.t c.n c.p c.o c.l c.rc1 v1 f1 c2 c3 c6 ∅ ∅c2 v2 f1 c3 c1 ∅ ∅ c6
c3 v3 f1 c1 c2 ∅ c6 ∅c4 v3 f2 c5 c6 ∅ c7 c1
c5 v2 f2 c6 c4 c7 c1 ∅c6 v4 f2 c4 c5 c1 ∅ c7...
......
......
......
...
Dada uma face j os corners são enumerados da forma: 3j , 3j − 1 e 3j − 2
![Page 96: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/96.jpg)
Corner Table
Armazenamento
I para cada vértice uma lista de todos os seus corners
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
corner c.v c.t c.n c.p c.o c.l c.rc1 v1 f1 c2 c3 c6 ∅ ∅c2 v2 f1 c3 c1 ∅ ∅ c6
c3 v3 f1 c1 c2 ∅ c6 ∅c4 v3 f2 c5 c6 ∅ c7 c1
c5 v2 f2 c6 c4 c7 c1 ∅c6 v4 f2 c4 c5 c1 ∅ c7...
......
......
......
...
Dada uma face j os corners são enumerados da forma: 3j , 3j − 1 e 3j − 2
![Page 97: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/97.jpg)
Corner Table
Armazenamento
I para cada vértice uma lista de todos os seus corners
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
corner c.v c.t c.n c.p c.o c.l c.rc1 v1 f1 c2 c3 c6 ∅ ∅c2 v2 f1 c3 c1 ∅ ∅ c6
c3 v3 f1 c1 c2 ∅ c6 ∅c4 v3 f2 c5 c6 ∅ c7 c1
c5 v2 f2 c6 c4 c7 c1 ∅c6 v4 f2 c4 c5 c1 ∅ c7...
......
......
......
...
Dada uma face j os corners são enumerados da forma: 3j , 3j − 1 e 3j − 2
![Page 98: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/98.jpg)
Corner Table
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
I Quais são os vértices da face f3?
I os c.v de corners 9, 8 e 7I Os vértices v2 e v6 são adjacentes?
I passe pelos corners de v2, testando se c.p.v ou c.n.n são v6
I Quais são as faces adjacentes a v3?
I verefique c.t de todos os corners de vértice v3
![Page 99: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/99.jpg)
Corner Table
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
I Quais são os vértices da face f3?I os c.v de corners 9, 8 e 7
I Os vértices v2 e v6 são adjacentes?
I passe pelos corners de v2, testando se c.p.v ou c.n.n são v6
I Quais são as faces adjacentes a v3?
I verefique c.t de todos os corners de vértice v3
![Page 100: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/100.jpg)
Corner Table
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
I Quais são os vértices da face f3?I os c.v de corners 9, 8 e 7
I Os vértices v2 e v6 são adjacentes?
I passe pelos corners de v2, testando se c.p.v ou c.n.n são v6
I Quais são as faces adjacentes a v3?
I verefique c.t de todos os corners de vértice v3
![Page 101: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/101.jpg)
Corner Table
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
I Quais são os vértices da face f3?I os c.v de corners 9, 8 e 7
I Os vértices v2 e v6 são adjacentes?I passe pelos corners de v2, testando se c.p.v ou c.n.n são v6
I Quais são as faces adjacentes a v3?
I verefique c.t de todos os corners de vértice v3
![Page 102: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/102.jpg)
Corner Table
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
I Quais são os vértices da face f3?I os c.v de corners 9, 8 e 7
I Os vértices v2 e v6 são adjacentes?I passe pelos corners de v2, testando se c.p.v ou c.n.n são v6
I Quais são as faces adjacentes a v3?
I verefique c.t de todos os corners de vértice v3
![Page 103: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/103.jpg)
Corner Table
v2
v1
v3
v4
v6
v5
f 1 f 2
f 3
f 4c1
c2 c5
c6
c3 c4c8
c9
c7
c11
c12
c10
I Quais são os vértices da face f3?I os c.v de corners 9, 8 e 7
I Os vértices v2 e v6 são adjacentes?I passe pelos corners de v2, testando se c.p.v ou c.n.n são v6
I Quais são as faces adjacentes a v3?I verefique c.t de todos os corners de vértice v3
![Page 104: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/104.jpg)
Processamento Geométrico
Suavização de Vértice (Botsch & Kobbelt, 2004)I Melhora a qualidade dos triângulosI Move um vértice v para o baricentro bv de seu 1-anel
![Page 105: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/105.jpg)
Processamento Geométrico
Suavização de Vértice (Botsch & Kobbelt, 2004)I Melhora a qualidade dos triângulosI Move um vértice v para o baricentro bv de seu 1-anel
v
b v
![Page 106: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/106.jpg)
Processamento Geométrico
Suavização de Vértice (Botsch & Kobbelt, 2004)I Melhora a qualidade dos triângulosI Move um vértice v para o baricentro bv de seu 1-anel
v
b v
v = v + α [dv − (dv · nv)nv] e dv = bv − v ,
onde nv é a normal do vértice v e α ∈ [0, 1] é um fator de relaxação.
![Page 107: Geração de Malhas – SME5827 Poligonização e Estruturas de Dados](https://reader035.vdocuments.net/reader035/viewer/2022081323/5874bfeb1a28ab1a558b8f0a/html5/thumbnails/107.jpg)
Qualidade da Malha
Razão de Aspecto dos Triângulos
r =4√3A4
a2 + b2 + c2
onde a, b e c são os comprimentos dos lados do triângulo e A4 é a área dotriângulo que pode ser calculada pela fórmula de Heron:
A4 =√
s(s − a)(s − b)(s − c) com s =a+ b + c
2
Valores perto de 1 indicam que os 4s se aproximam de um 4 equilátero.