Post on 10-Jan-2017
Geração de Malhas – SME5827
Poligonização e Estruturas de Dados
Afonso PaivaICMC-USP
15 de outubro de 2013
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.
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.
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
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
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 σ.
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 σ.
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 σ.
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]
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]
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
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
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〉
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〉
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〉
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〉
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
Usando a diagonal do cubo, podemos decompô-lo em 6 tetraedros(3-simplexos).
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:
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:
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).
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.
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).
Marching Tetrahedra: Bloomenthal, 1998
Algoritmo
Marching Tetrahedra: Bloomenthal, 1998
Algoritmo
Passo 1: fazer uma decomposição simplicial no domínio de f , isto é, dividiro domínio em tetraedros.
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.
Marching Tetrahedra: Bloomenthal, 1998
Algoritmo
Passo 3: aproxime f (x) linearmente nos tetraedros onde f muda de sinal.
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.
-
++
+
-
+
+-
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)
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)
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)
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)
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)
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)
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)
Marching Cubes: Lorensen & Cline, 1987
I Faz uma decomposição celular do domínio de f , isto é, particiona odomínio em cubos.
Marching Cubes: Lorensen & Cline, 1987
I 15 casos (a menos de permutações) de configuração de sinal dafunção f em cada cubo.
Marching Cubes: Lorensen & Cline, 1987
Problemas:
I Problemas de ambiguidadeI Difícil de implementar
Marching Cubes: Lorensen & Cline, 1987
Problemas:
I Problemas de ambiguidadeI Difícil de implementar
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).
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).
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).
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).
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).
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).
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).
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
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
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
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
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
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
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
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
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
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.
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.
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.
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.
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.
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 )
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
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
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.
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.
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.
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.
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.
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.
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
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
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
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. · · ·
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. · · ·
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. · · ·
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. · · ·
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. · · ·
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. · · ·
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
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
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
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
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
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
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.
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.