v - USP

Transcrição

v - USP
Métodos Numéricos para Geração de Malhas – SME0250
Complexos Simpliciais e
Estruturas de Dados
Afonso Paiva
ICMC-USP
19 de agosto de 2016
Qualidade da malha importa
Dois parabolóides: z = x 2 + y 2 com (x, y ) ∈ [−1, 1]2 com 400 triângulos.
Qualidade da malha importa
Dois parabolóides: z = x 2 + y 2 com (x, y ) ∈ [−1, 1]2 com 400 triângulos.
Triângulos finos causam erro de discretização e
de interpolação de derivadas.
Células e Simplexos
Definição (célula)
Dado um conjunto de pontos {v0 , v1 , . . . , vk } ⊂ Rn , a célula gerada por
estes pontos é o conjunto (combinação convexa):
(
)
k
k
X
X
[v0 , v1 , . . . , vk ] = v =
λi vi ; λi ≥ 0 ;
λi = 1
i=0
i=0
Células e Simplexos
Definição (célula)
Dado um conjunto de pontos {v0 , v1 , . . . , vk } ⊂ Rn , a célula gerada por
estes pontos é o conjunto (combinação convexa):
(
)
k
k
X
X
[v0 , v1 , . . . , vk ] = v =
λi vi ; λi ≥ 0 ;
λi = 1
i=0
i=0
Exemplo
A célula gerada por [v0 , v1 , v2 ] pode ser um ponto, um segmento de reta
ou um triângulo, de acordo com a relação de dependência linear dos vetores
v1 − v0 e v2 − v0 .
Células e Simplexos
Definição (posição geral)
Dado um conjunto de pontos {v0 , v1 , . . . , vm } ⊂ Rn , dizemos que eles
estão em posição geral, se para qualquer subconjunto {v0 , v1 , . . . , vk }, com
k ≤ n, os vetores v1 − v0 , v2 − v0 , . . . , vk − v0 são LI.
Células e Simplexos
Definição (posição geral)
Dado um conjunto de pontos {v0 , v1 , . . . , vm } ⊂ Rn , dizemos que eles
estão em posição geral, se para qualquer subconjunto {v0 , v1 , . . . , vk }, com
k ≤ n, os vetores v1 − v0 , v2 − v0 , . . . , vk − v0 são LI.
v0
v0
v0
v1
P.G.
v1
P.G.
P.G.
v0
v1
v2
Não P.G.
v1
v0
v2
v3
Não P.G.
v2
Células e Simplexos
Definição (k-simplexo)
Quando {v0 , v1 , . . . , vk } ⊂ Rn estão em posição geral, a célula por eles
gerada é chamada de simplexo de dimensão k ou k-simplexo. Denotaremos
tal simplexo por hv0 , v1 , . . . , vk i.
Células e Simplexos
Definição (k-simplexo)
Quando {v0 , v1 , . . . , vk } ⊂ Rn estão em posição geral, a célula por eles
gerada é chamada de simplexo de dimensão k ou k-simplexo. Denotaremos
tal simplexo por hv0 , v1 , . . . , vk i.
0-simplexo
1-simplexo
2-simplexo
3-simplexo
Células e Simplexos
Definição (k-simplexo)
Quando {v0 , v1 , . . . , vk } ⊂ Rn estão em posição geral, a célula por eles
gerada é chamada de simplexo de dimensão k ou k-simplexo. Denotaremos
tal simplexo por hv0 , v1 , . . . , vk i.
0-simplexo
1-simplexo
2-simplexo
3-simplexo
Dado σ = hv0 , . . . , vk i, cada ponto vi é chamado de vértice (ou 0-faces).
Os 1-simplexos gerados pelo par hvi , vj i, com i 6= j, são chamados de
arestas (1-faces). Os 2-simplexos gerados por hvi , vj , vk i, com i 6= j 6= k,
são chamados de faces (2-faces) de σ.
Decomposição Celular
Definição (decomposição celular)
Uma decomposição celular de um subconjunto D ⊂ Rn é um conjunto
finito de células C = {ci } que satisfazem às seguintes propriedades:
1. D = ∪i ci e
2. Se ci , cj ∈ C então ci ∩ cj ∈ C.
Decomposição Celular
Definição (decomposição celular)
Uma decomposição celular de um subconjunto D ⊂ Rn é um conjunto
finito de células C = {ci } que satisfazem às seguintes propriedades:
1. D = ∪i ci e
2. Se ci , cj ∈ C então ci ∩ cj ∈ C.
v3
v0
v2
v1
Decomposição celular do quadrado unitário que
possui 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 ]
Complexo Simplicial
Definição (complexo simplicial)
Quando todos os elementos de uma decomposição celular de uma região D
são simplexos dizemos que ela é um complexo simplicial (ou triangulação)
de D e denotaremos por T (D).
Complexo Simplicial
Definição (complexo simplicial)
Quando todos os elementos de uma decomposição celular de uma região D
são simplexos dizemos que ela é um complexo simplicial (ou triangulação)
de D e denotaremos por T (D).
trinagulação inválida
região D
duas triangulações de D
triangulação válida
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
v3
v2
v0
v1
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
v3
v2
v0
v1
A triangulação de um quadrado é formada pelos simplexos:
I
0-simplexos: v0 , v1 , v2 , v3
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
v3
v2
v0
v1
A triangulação de um quadrado é formada pelos simplexos:
I
0-simplexos: v0 , v1 , v2 , v3
I
1-simplexos: hv0 , v1 i, hv1 , v2 i, hv2 , v3 i, hv3 , v0 i, hv0 , v2 i
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
v3
v2
v0
v1
A triangulação de um quadrado é formada pelos simplexos:
I
0-simplexos: v0 , v1 , v2 , v3
I
1-simplexos: hv0 , v1 i, hv1 , v2 i, hv2 , v3 i, hv3 , v0 i, hv0 , v2 i
I
2-simplexos: hv0 , v1 , v2 i, hv0 , v2 , v3 i
Triangulação de Coxeter-Freudenthal-Kuhn (CFK)
Usando a diagonal do cubo, podemos decompô-lo em 6 tetraedros
(3-simplexos).
Fecho
Definição (fecho)
Seja Σ uma coleção de simplexos em T (D). O fecho de Σ, denotado por
close(Σ), é o menor subconjunto de T (D) que contém todas faces de Σ.
Fecho
Definição (fecho)
Seja Σ uma coleção de simplexos em T (D). O fecho de Σ, denotado por
close(Σ), é o menor subconjunto de T (D) que contém todas faces de Σ.
O fecho close(σ) pode ser obtido adicionando a σ todas as suas faces.
Estrela
Definição (estrela)
Seja Σ uma coleção de simplexos em T (D). Uma estrela de Σ, denotada
por star(Σ), é o conjunto de todos os simplexos em T (D) que tenham
uma face em Σ.
Estrela
Definição (estrela)
Seja Σ uma coleção de simplexos em T (D). Uma estrela de Σ, denotada
por star(Σ), é o conjunto de todos os simplexos em T (D) que tenham
uma face em Σ.
Geralmente star(Σ) não é um complexo simplicial!
Link & 1-anel
Definição (link)
Seja Σ uma coleção de simplexos em T (D). O link de Σ, denotado por
link(Σ), é definido por close(star(Σ)) \ star(close(Σ)).
Link & 1-anel
Definição (link)
Seja Σ uma coleção de simplexos em T (D). O link de Σ, denotado por
link(Σ), é definido por close(star(Σ)) \ star(close(Σ)).
Link & 1-anel
Definição (link)
Seja Σ uma coleção de simplexos em T (D). O link de Σ, denotado por
link(Σ), é definido por close(star(Σ)) \ star(close(Σ)).
Definição (1-anel)
O 1-anel de um vértice v é o conjunto de vértices de link(v).
Estruturas de Dados (ED)
O que armazenar na ED?
Estruturas de Dados (ED)
O que armazenar na ED?
I
Geometria:
Estruturas de Dados (ED)
O que armazenar na ED?
I
Geometria:
I
coordenadas 2D ou 3D;
Estruturas de Dados (ED)
O que armazenar na ED?
I
Geometria:
I
I
coordenadas 2D ou 3D;
Atributos de vértice ou face:
Estruturas de Dados (ED)
O que armazenar na ED?
I
Geometria:
I
I
coordenadas 2D ou 3D;
Atributos de vértice ou face:
I
normal, cor, coordenada de textura;
Estruturas de Dados (ED)
O que armazenar na ED?
I
Geometria:
I
I
I
I
coordenadas 2D ou 3D;
Atributos de vértice ou face:
normal, cor, coordenada de textura;
Topologia:
Estruturas de Dados (ED)
O que armazenar na ED?
I
Geometria:
I
I
I
I
coordenadas 2D ou 3D;
Atributos de vértice ou face:
normal, cor, coordenada de textura;
Topologia:
I
relações de adjacência (conectividade).
Estruturas de Dados (ED)
O que a ED deve suportar?
Estruturas de Dados (ED)
O que a ED deve suportar?
I
Rendering;
Estruturas de Dados (ED)
O que a ED deve suportar?
I
I
Rendering;
Consultas geométricas:
Estruturas de Dados (ED)
O que a ED deve suportar?
I
I
Rendering;
Consultas geométricas:
I
Quais são os vértices da face i?
Estruturas de Dados (ED)
O que a ED deve suportar?
I
I
Rendering;
Consultas geométricas:
I
I
Quais são os vértices da face i?
Qual são os vértices do 1-anel do vértice j?
vj
Estruturas de Dados (ED)
O que a ED deve suportar?
I
I
Rendering;
Consultas geométricas:
I
I
I
Quais são os vértices da face i?
Qual são os vértices do 1-anel do vértice j?
Quais são as faces adjacentes a face k?
vj
Estruturas de Dados (ED)
O que a ED deve suportar?
I
I
Rendering;
Consultas geométricas:
I
I
I
I
Quais são os vértices da face i?
Qual são os vértices do 1-anel do vértice j?
Quais são as faces adjacentes a face k?
Modificações:
vj
Estruturas de Dados (ED)
O que a ED deve suportar?
I
I
Rendering;
Consultas geométricas:
I
I
I
I
Quais são os vértices da face i?
Qual são os vértices do 1-anel do vértice j?
Quais são as faces adjacentes a face k?
Modificações:
I
Remover ou adicionar um vértice/face;
vj
Estruturas de Dados (ED)
O que a ED deve suportar?
I
I
Rendering;
Consultas geométricas:
I
I
I
I
Quais são os vértices da face i?
Qual são os vértices do 1-anel do vértice j?
Quais são as faces adjacentes a face k?
vj
Modificações:
I
I
Remover ou adicionar um vértice/face;
edge-flip, edge collapse, vertex split
edge collapse
edge-flip
vertex split
Estruturas de Dados (ED)
O quão eficiente é a ED?
Estruturas de Dados (ED)
O quão eficiente é a ED?
I
Tempo de construção
(pré-processamento);
Estruturas de Dados (ED)
O quão eficiente é a ED?
I
Tempo de construção
(pré-processamento);
I
Tempo de resposta de uma consulta;
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;
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.
(x11 , y11 , z11 )
(x12 , y12 , z12 )
(x13 , y13 , z13 )
..
.
f
(x1 , y1f , z1f )
Triângulos
(x21 , y21 , z21 )
(x22 , y22 , z22 )
(x23 , y23 , z23 )
..
.
(x31 , y31 , z31 )
(x32 , y32 , z32 )
(x33 , y33 , z33 )
..
.
(x2f , y2f , z2f )
(x3f , y3f , z3f )
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értices
x1 y1 z1
x2 y2 z2
x3 y3 z3
..
..
..
.
.
.
Triângulos
v11 v21 v31
v12 v22 v32
v13 v23 v33
..
..
..
.
.
.
xv
v1f
yv
zv
v2f
v3f
Shared Vertex no MATLAB
Como representar e desenhar um tetraedro no MATLAB?
V1
V3
V1
V4
V2
V1
Shared Vertex no MATLAB
Como representar e desenhar um tetraedro no MATLAB?
V1
V3
V1
Vértices
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
0.0 0.0 0.0
V4
V2
V1
Shared Vertex no MATLAB
Como representar e desenhar um tetraedro no MATLAB?
V1
V3
V1
Vértices
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
0.0 0.0 0.0
V4
V2
Triângulos
v2 v4 v3
v4 v2 v1
v3 v1 v2
v1 v3 v4
V1
Atenção: impor orientação nas faces (regra da mão direita).
Shared Vertex no MATLAB
Como representar e desenhar um tetraedro no MATLAB?
V1
V3
V1
Vértices
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
0.0 0.0 0.0
V4
V2
Triângulos
v2 v4 v3
v4 v2 v1
v3 v1 v2
v1 v3 v4
V1
Atenção: impor orientação nas faces (regra da mão direita).
trimesh(trigs,X,Y,Z)
% trigs: lista de triângulos (índices)
% X,Y,Z: coordenadas dos vértices
Exemplo: arquivos .OBJ
Tetraedro
#
v
v
v
v
f
f
f
f
OBJ
1.0
0.0
0.0
0.0
2 4
4 2
3 1
1 3
file format with ext .obj
0.0 0.0
1.0 0.0
0.0 1.0
0.0 0.0
3
1
2
4
Shared Vertex
v3
v6
f3
v1
f1
f2
v2
I
Quem são os vértices da face f1 ?;
v4
f4
v5
Shared Vertex
v3
v6
f3
v1
f1
f2
v4
v2
I
Quem são os vértices da face f1 ?;
I
O(1) – basta consultar a lista de faces;
f4
v5
Shared Vertex
v3
v6
f3
v1
f1
f2
v4
f4
v2
I
Quem são os vértices da face f1 ?;
I
I
O(1) – basta consultar a lista de faces;
Quem são os vértices do 1-anel do vértice v3 ?;
v5
Shared Vertex
v3
v6
f3
v1
f1
f2
v4
f4
v2
I
Quem são os vértices da face f1 ?;
I
I
O(1) – basta consultar a lista de faces;
Quem são os vértices do 1-anel do vértice v3 ?;
I
busca completa em todos os vértices;
v5
Shared Vertex
v3
v6
f3
v1
f1
f2
v4
f4
v2
I
Quem são os vértices da face f1 ?;
I
I
I
I
O(1) – basta consultar a lista de faces;
Quem são os vértices do 1-anel do vértice v3 ?;
busca completa em todos os vértices;
Os vértices v2 e v6 são adjacentes?;
v5
Shared Vertex
v3
v6
f3
v1
f1
f2
v4
f4
v2
I
Quem são os vértices da face f1 ?;
I
I
I
I
O(1) – basta consultar a lista de faces;
Quem são os vértices do 1-anel do vértice v3 ?;
busca completa em todos os vértices;
Os vértices v2 e v6 são adjacentes?;
I
busca completa em todas as faces.
v5
Aquecimento MATLAB
Exercício
Plote no MATLAB um parabolóide usando os comandos meshgrid e surf.
Aquecimento MATLAB
Exercício
Plote no MATLAB um parabolóide usando os comandos meshgrid e surf.
Exercício
Faça uma função que gere uma malha triangular do parabolóide do
exercício anterior. Para plotar use o comando trimesh do MATLAB.
Half-Edge (HE)
I
Vértice:
I
I
posição
1 HE que sai do vértice
Half-Edge (HE)
I
Vértice:
I
I
I
posição
1 HE que sai do vértice
Half-Edge:
I
I
I
I
orientação consistente
1 índice do vértice de origem
1 índice da face incidente
1, 2, ou 3 índices de HEs
(próxima, anterior e oposta)
Half-Edge (HE)
I
Vértice:
I
I
I
Half-Edge:
I
I
I
I
I
posição
1 HE que sai do vértice
orientação consistente
1 índice do vértice de origem
1 índice da face incidente
1, 2, ou 3 índices de HEs
(próxima, anterior e oposta)
Face:
I
1 índice da HE adjacente
1-Anel com Half-Edge
1. Comece em um vértice
1-Anel com Half-Edge
1. Comece em um vértice
2. HE que sai do vértice
1-Anel com Half-Edge
1. Comece em um vértice
2. HE que sai do vértice
3. HE oposta
1-Anel com Half-Edge
1. Comece em um vértice
2. HE que sai do vértice
3. HE oposta
4. Próxima HE
1-Anel com Half-Edge
1. Comece em um vértice
2. HE que sai do vértice
3. HE oposta
4. Próxima HE
5. HE oposta
1-Anel com Half-Edge
1. Comece em um vértice
2. HE que sai do vértice
3. HE oposta
4. Próxima HE
5. HE oposta
6. Próxima HE
7. · · ·
Matriz de Adjacência
v3
v6
f3
v1
f1
f2
v4
f4
v5
v2
aij =
v1
v2
v3
v4
v5
v6
v1
0
1
1
0
0
0
v2
1
0
1
1
0
0
v3
1
1
0
1
0
1
v4
0
1
1
0
1
1
1 se os vértices vi e vj formam uma aresta
0 caso contrário
v5
0
0
0
1
0
1
v6
0
0
1
1
1
0
Matriz de Adjacência
v3
v6
f3
v1
f1
f2
v4
v5
v2
aij =
I
f4
v1
v2
v3
v4
v5
v6
v1
0
1
1
0
0
0
v2
1
0
1
1
0
0
v3
1
1
0
1
0
1
v4
0
1
1
0
1
1
1 se os vértices vi e vj formam uma aresta
0 caso contrário
Nenhuma informação de conectividade entre um
vértice e suas faces adjacentes;
v5
0
0
0
1
0
1
v6
0
0
1
1
1
0
Matriz de Adjacência
v3
v6
f3
v1
f1
f2
v4
f4
v5
v2
aij =
v1
v2
v3
v4
v5
v6
v1
0
1
1
0
0
0
v2
1
0
1
1
0
0
v3
1
1
0
1
0
1
v4
0
1
1
0
1
1
1 se os vértices vi e vj formam uma aresta
0 caso contrário
I
Nenhuma informação de conectividade entre um
vértice e suas faces adjacentes;
I
Esparsa e simétrica (grafos simples não orientados);
v5
0
0
0
1
0
1
v6
0
0
1
1
1
0
Matriz de Adjacência
v3
v6
f3
v1
f1
f2
v4
f4
v5
v2
aij =
v1
v2
v3
v4
v5
v6
v1
0
1
1
0
0
0
v2
1
0
1
1
0
0
v3
1
1
0
1
0
1
v4
0
1
1
0
1
1
1 se os vértices vi e vj formam uma aresta
0 caso contrário
I
Nenhuma informação de conectividade entre um
vértice e suas faces adjacentes;
I
Esparsa e simétrica (grafos simples não orientados);
I
Pode representar malhas non-manifold.
v5
0
0
0
1
0
1
v6
0
0
1
1
1
0
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I
Corner – c
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I
Corner – c
I
Triângulo – c.t
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I
Corner – c
I
Triângulo – c.t
I
Vértice – c.v
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I
Corner – c
I
Triângulo – c.t
I
Vértice – c.v
I
Corner próximo em c.t – c.n
(sentido anti-horário)
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I
Corner – c
I
Triângulo – c.t
I
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)
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I
Corner – c
I
Triângulo – c.t
I
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.o
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
Corner é um vértice com um dos seus triângulos incidentes
I
Corner – c
I
Triângulo – c.t
I
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.o
I
Corner direito – c.r (≡ c.n.o)
I
Corner esquerdo – c.l (≡ c.p.o)
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
Armazenamento
I
para cada vértice uma lista de todos os seus corners
Corner Table
Armazenamento
I
para cada vértice uma lista de todos os seus corners
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
corner
c.v
c.t
c.n
c.p
c.o
c.l
c.r
c1
c2
c3
c4
c5
c6
..
.
v1
v2
v3
v3
v2
v4
..
.
f1
f1
f1
f2
f2
f2
..
.
c2
c3
c1
c5
c6
c4
..
.
c3
c1
c2
c6
c4
c5
..
.
c6
∅
∅
∅
c7
c1
..
.
∅
∅
c6
c7
c1
∅
..
.
∅
c6
∅
c1
∅
c7
..
.
Corner Table
Armazenamento
I
para cada vértice uma lista de todos os seus corners
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
corner
c.v
c.t
c.n
c.p
c.o
c.l
c.r
c1
c2
c3
c4
c5
c6
..
.
v1
v2
v3
v3
v2
v4
..
.
f1
f1
f1
f2
f2
f2
..
.
c2
c3
c1
c5
c6
c4
..
.
c3
c1
c2
c6
c4
c5
..
.
c6
∅
∅
∅
c7
c1
..
.
∅
∅
c6
c7
c1
∅
..
.
∅
c6
∅
c1
∅
c7
..
.
Dada uma face j os corners são enumerados da forma: 3j, 3j − 1 e 3j − 2
Corner Table
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
I
Quais são os vértices da face f3 ?
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
I
Quais são os vértices da face f3 ?
I
os c.v de corners 9, 8 e 7
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
I
Quais são os vértices da face f3 ?
I
I
os c.v de corners 9, 8 e 7
Os vértices v2 e v6 são adjacentes?
f3
c6
c9
v4
c10
v6
c7
c12
f4
c11
v5
Corner Table
v3
c8
c3 c4
v1
c1
f2
f1
c2 c5
v2
I
c6
c9
v4
c10
f4
c11
v5
Quais são os vértices da face f3 ?
I
I
f3
v6
c7
c12
os c.v de corners 9, 8 e 7
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
Corner Table
v3
c8
c3 c4
v1
c1
f2
f1
f3
c6
c2 c5
v2
I
f4
c11
v5
os c.v de corners 9, 8 e 7
Os vértices v2 e v6 são adjacentes?
I
I
v4
c10
Quais são os vértices da face f3 ?
I
I
c9
v6
c7
c12
passe pelos corners de v2 , testando se c.p.v ou c.n.n são v6
Quais são as faces adjacentes a v3 ?
Corner Table
v3
c8
c3 c4
v1
c1
f2
f1
f3
c6
c2 c5
c9
v4
c10
v6
c7
c12
f4
c11
v2
I
Quais são os vértices da face f3 ?
I
I
os c.v de corners 9, 8 e 7
Os vértices v2 e v6 são adjacentes?
I
I
v5
passe pelos corners de v2 , testando se c.p.v ou c.n.n são v6
Quais são as faces adjacentes a v3 ?
I
verefique c.t de todos os corners de vértice v3
Cálculo da Normal
Normal por Face (regra da mão direita)
nT = [(b − a) × (c − a)]/k(b − a) × (c − a)k
Cálculo da Normal
Normal por Face (regra da mão direita)
nT = [(b − a) × (c − a)]/k(b − a) × (c − a)k
n
c
b
T
a
Cálculo da Normal
Normal por Face (regra da mão direita)
nT = [(b − a) × (c − a)]/k(b − a) × (c − a)k
n
c
b
T
a
Normal por Vértice (Gouraud shading)
na = v/kvk com v =
X
T ∈ star(a)
nT area(T )
Processamento Geométrico
Suavização de Vértice (Botsch & Kobbelt, 2004)
I
Melhora a qualidade dos triângulos
I
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ângulos
I
Move um vértice v para o baricentro bv de seu 1-anel
b
v
v
Processamento Geométrico
Suavização de Vértice (Botsch & Kobbelt, 2004)
I
Melhora a qualidade dos triângulos
I
Move um vértice v para o baricentro bv de seu 1-anel
b
v
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 (Desigualdade de Weizenbock)
√
4 3 area(T )
R= 2
a + b2 + c 2
onde a, b e c são os comprimentos dos lados de um triângulo T e a área
do triângulo pode ser calculada pela fórmula de Heron:
area(T ) =
p
a+b+c
s(s − a)(s − b)(s − c) com s =
2
Valores perto de 1 indicam que os 4s se aproximam de um 4 equilátero.
Qualidade da Malha

Documentos relacionados