Delaunay3D

17
Delaunay 3D Tetraedralização no R³ por Rafael Vieira CRAb – Grupo de Computação Gráfica Departamento de Computação UFC

description

Uma apresentação de um algoritmo simples para resolução do problema de tetraedralização no espaço.

Transcript of Delaunay3D

Delaunay 3DTetraedralização no R³

por Rafael Vieira

CRAb – Grupo de Computação Gráfica

Departamento de Computação

UFC

2

Sumário

Histórico Teoria Implementação Estudos de Caso Dificuldades Referências

3

Histórico

No meio do século 19, o problema geométrico dos Diagramas de Proximidade alimentava as ciências da matemática e da física.

A usagem informal dos diagramas foi realizada primeiro por Descartes em 1644 e Dirichlet que os usou em 2 e 3 dimensões em seus estudos sobre formas quádricas em 1850.

A formalização e a definição dos diagramas pelo matemático russo Georgy Fedoseevich Voronoï para qualquer dimensão ocorreu apenas em 1908

Boris Delaunay, matemático russo, definiu sua divisão triangular em 1934 no seu artigo “Sur la sphère vide” publicado no Boletim da Academia de Ciências da USSR.

A triangulação de Delaunay é um grafo dual de Voronoi.

Voronoi

Delaunay

4

Teoria

Uma divisão em regiões de Delaunay para um conjunto de pontos P em uma dimensão d é tal que no interior de cada hiperesfera definida por (d+1) pontos, não existe nenhum ponto de P em seu interior.

Atenção: Os conjuntos (d+1) pontos não podem pertencer ao mesmo hiperplano de dimensão (d-1).

Delaunay em 2 dimensões

5

Teoria

A tetraedralização de Delaunay é um caso particular para 3 dimensões.

Os subconjuntos de 4 pontos de P não podem pertencer a um mesmo plano.

6

Algoritmo

Entrada: um conjunto de Pontos V em 3 dimensões

1. Encontra um vértice de V na dimensão x, y ou z mínimo ou máximo

2. Determine uma face Inicial F0 pertencente ao FC3D

3. Procura em qual lado de F0 está o conjunto V (similar linha 10)

4. Determina o 1º Poliedro P[0] pelo ponto de V que possui o maior ângulo sólido com F0.

5. Adicione P[0] em uma FILA

6. Adicione P[0] no Poliedro final PF

7. Enquanto FILA não for vazia

8. Remova um Poliedro P[i] de FILA

9. Para cada face livre F[j] de P[i]

10. Procura quais pontos T estão acima de F[j]

11. Determina o Poliedro P[i+1] adjacente a F[j](similar linha 4).

12. Determina Faces Livres de P[i+1]

13 Adicione P[i+1] em FILA

14. Adicione P[i+1] no Poliedro final PF

Saída: um conjunto de tetraedros PF formados por V

7

Face inicial

1. Obtemos sem perca de generalidade o ponto de ordenada mínima P(x,y,z)

2. Construímos uma face artificial FA, usando como referência a base canônica no espaço XZ

3. Escolhemos uma aresta A contendo P da face artificial e verificamos qual ponto P' forma uma face F com FA de com maior angulo.

4. Descartamos a primeira face e repetimos o processo para a face com PP' e P+(1,0,0) ou P+(0,0,1) encontrar o último vértice da face inicial

P

P + (0,0,1)P + (1,0,0)

P

P + (1,0,0) P + (0,0,1)

8

A que lado de uma face um ponto pertence

Usamos o produto misto ou o volume orientado para determinamos a qual lado um vértice V[i] pertence.

Repare como a orientação de cada face é importante.

Normal

A

B

C

V[i]

D = ((C – B) x (A – B)) * (V[i] - B)

D < 0 D > 0

9

Ângulo Sólido

Usamos a fórmula apresentada por Oosterom[3] para cálculo do ângulo Sólido para cada V[i] em relação a nossa Face F corrente(triângulo hachurado abaixo).

O vértice V[i] com maior ângulo sólido será usado para formar o novo tetraedro. Ele é o centro da esfera exibida abaixo:

Numerador produto misto→Denominador produto escalar→

R1, R2 e R3 claros na fórmula acima sãoos módulos dos vetores

10

Faces Livres

São determinadas por:

* Pertencem ao fecho convexo: isto é, não possuem nenhum vértice em um dos seus lados(d>0 e d <0)

* Já possuem uma face correspondente no Poliedro final PF.

* São a base de um poliedro recém formado

Faces Livres

Faces Não Livres

11

Implementação

Classes:

Vetor

Polígono

Poliedro

Desenha

Delaunay

12

Estudos de Caso 14 pontos

13

Estudos de Caso 50 pontos

14

Estudos de Caso 100 pontos

15

Estudos de Caso 200 pontos

16

Dificuldades

Verificar a validade do algoritmo para casos complexos. Com poucos vértices é fácil verificar a validade, mas para muitos vértices se torna inviável.

Identificar casos patológicos, embora podemos contar com os mesmos casos citados em Mergehull 3D, podem existir outros casos ainda não identificados.

Ter acesso aos artigos originais de Delaunay

17

Referências

1. Chand, Kapur - An algorithm for convex polytopes – 1970.

2. F. P. Preparata , S. J. Hong - Convex hulls of finite sets of points in two and three dimensions – 1977

3. Van Oosterom, A. Strackee, J. - The Solid Angle of a Plane Triangle - 1983 4. P. C. P. Carvalho e L. H. de Figueiredo, Introdução à Geometria Computational, 18° Colóquio Brasileiro de Matemática, IMPA, 1991