Mergehull3d

42
Mergehull 3D Fecho Convexo no R³ por Rafael Vieira CRAb – Grupo de Computação Gráfica Departamento de Computação UFC

description

Um algoritmo para computar o fecho convexo 3d de pontos no espaço. O algoritmo se utilizado do mergehull 2d e computa de maneira eficiente o poliedro resultante.

Transcript of Mergehull3d

Page 1: Mergehull3d

Mergehull 3DFecho Convexo no R³

por Rafael Vieira

CRAb – Grupo de Computação Gráfica

Departamento de Computação

UFC

Page 2: Mergehull3d

2

Sumário

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

Page 3: Mergehull3d

3

HIstórico

Chand-Kappur desenvolvem o algoritmo do Embrulho que é eficiente para n pontos em uma dimensão arbitrária 1970 [1]

Graham desenvolve o primeiro algoritmo com Ordem de complexidade inferior a O(n²)[2]

Jarvis desenvolve uma especialização do método de Chand-Kappur[3]

Preparata e Hong desenvolvem o primeiro algoritmo para fechos Convexos 3D emO(nlogn) [4]

Preparata - An Wang Professor of Computer Science

Page 4: Mergehull3d

4

Teoria: Fecho Convexo

Fecho Convexo

Page 5: Mergehull3d

5

Teoria: Mergehull 2Dpor Preparata e Hong

Entrada n pontos Ordena os pontos pelas coordenadas(x ou y)

Divide os pontos em n/2 conjuntos de pontos

Fecho Convexo de 1 ponto é ele mesmo

Fecho Convexo de 2 pontos é uma aresta

Encontrar Tangente Superior e Inferior aos FC

Unir Fechos Convexos removendo pontos e arestas internas

Saída Fecho Convexo dos pontos iniciais

Page 6: Mergehull3d

6

Teoria: Fecho Convexo 2D

Divisão e Conquista

Page 7: Mergehull3d

7

Teoria: Fecho Convexo 2D

i=0 i=1i=1 i=2 i=2i=2i=2

Page 8: Mergehull3d

8

Teoria: Fecho Convexo 2D

i=0 i=1i=1 i=2 i=2i=2i=2

Page 9: Mergehull3d

9

Teoria: Fecho Convexo 2D

i=0 i=1i=1Tang inferiorTang superior

Page 10: Mergehull3d

10

Teoria: Fecho Convexo 2D

i=0Tang inferiorTang superior

Page 11: Mergehull3d

11

Teoria: Fecho Convexo 2D

i=0Tang inferiorTang superior

Page 12: Mergehull3d

12

Teoria: Fecho Convexo 2D

i=0Tang inferiorTang superior

Page 13: Mergehull3d

13

Teoria: Fecho Convexo 2D

Tang inferiorTang superior

Page 14: Mergehull3d

14

Teoria: Fecho Convexo 2D

Tang inferiorTang superior

Page 15: Mergehull3d

15

Teoria: Fecho Convexo 2D

Tang inferiorTang superior

Page 16: Mergehull3d

16

Função Chave União 2D

Casos que precisam ser tratados:

Polígono com Aresta

Polígono com Vértice

Aresta com Aresta

Aresta com Vértice

Vértice com Vértice

Page 17: Mergehull3d

17

Casos Patológicos

Pontos Colineares, retorna os 2 vértices com maior distância

Pontos Coincidentes, remove

Obs: O algoritmo Mergehull 2D é necessário para uma implementação eficiente do algoritmo Mergehull 3D em ordem de complexidade.

Page 18: Mergehull3d

18

Teoria: Mergehull 3Dpor Preparata e Hong

Entrada n pontos Ordena os pontos pelas coordenadas(x, y ou z)

Divide os pontos em n/2 conjuntos de pontos

Projeta-se os pontos em um dos planos XY, YZ ou XZ

Encontrar Tangente Superior ou Inferior por Mergehull 2D

A partir das tangentes cria-se um cilindro de faces tangentes aos dois poliedros

Une os dois poliedros com as faces tangentes removendo faces, arestas e vértices internos

Saída Fecho Convexo dos pontos iniciais

Page 19: Mergehull3d

19

Teoria: Mergehull 3Dpor Preparata e Hong

Repare que os poliedros serão formados pela projeção dos pontos nos casos Base da recursão por Mergehull 2D, uma vez que retornemos ao R³ teremos um tetraedro no caso mais comum.

Page 20: Mergehull3d

20

Teoria Fecho Convexo 3D

P1P2

2 poliedros quaisquer

Page 21: Mergehull3d

21

Teoria Fecho Convexo 3D

Projeção em XY

P1 P2

Page 22: Mergehull3d

22

Teoria Fecho Convexo 3D

Encontra uma tangente (a,b) tal que a pertence a P1 e b pertence a P2

P1 P2

Page 23: Mergehull3d

23

Teoria Fecho Convexo 3D

P1P2

tangente superior Retorna ao R³

Repare que a tangente não retorna obrigatoriamente em um mesmo plano

Page 24: Mergehull3d

24

Teoria Fecho Convexo 3D

P1 P2

tangente superior Cria face artificial + (0, -1, 0)

Page 25: Mergehull3d

25

Teoria Fecho Convexo 3D1º comparação

P1 P2

tangente superior

1º Comparação: Qual ai em que ai pertence a P1 forma com (a,b) a face com maior ângulo convexo com a face artificial ou anterior

Page 26: Mergehull3d

26

Teoria Fecho Convexo 3D1º comparação

P1 P2

tangente superior

1º Comparação: Qual bi em que bi pertence a P2 forma com (a,b) a face com maior ângulo convexo com a face artificial ou anterior

Page 27: Mergehull3d

27

Teoria Fecho Convexo 3D2º comparação

P1 P2

tangente superior

2º Comparação: Escolhe uma das duas faces de P1 ou P2 que forma o maior ângulo convexo com a face anterior ou a face artificial(se for a primeira).

Face tangente com vérticeem B ângulo 90º

Page 28: Mergehull3d

28

Teoria: Mergehull 3Dpor Preparata e Hong

A tangente inicial deve ser obrigatoriamente uma aresta do cilindro Convexo que une os dois poliedros

A tangente possui dois pontos 1 pertencente ao primeiro poliedro e o 2 pertencente ao segundo poliedro Uma vez que tenhamos uma tangente aos poliedros podemos usar a idéia do algoritmo do embrulho para encontrar uma face inicial tangente porém de forma mais eficiente

Buscamos apenas em vértices vizinhos ao vértice que possui uma tangente(aresta) pertencente ao Fecho Convexo 3D

Quando concluirmos o cilindro tangente aos dois poliedros aplicamos a união 3D

Page 29: Mergehull3d

29

Teoria: Mergehull 3Dpor Preparata e Hong

A cada nova face devemos definir uma nova tangente ou aresta pertence ao fecho no caso de P1 e P2 a nova tangenteseria (a, bi)

O cilindro tangente será umaintercalação de vértices de P1 e P2

Por exemplo: a1b2b4a2b6a6

Ao lado:

* o cilindro tangente sendoformado(cima)

* Intercalação de Arestas dospoliedros(baixo)

Page 30: Mergehull3d

30

Função Chave União 3D

Casos que precisam ser tratados:

Poliedro com Polígono

Poliedro com Aresta

Poliedro com Vértice

Polígono com Polígono(Face)

Outros casos são tratados com Mergehull 2D

Page 31: Mergehull3d

31

Casos Patológicos

Pontos Colineares, retorna os 2 vértices com maior distância

Pontos Coincidentes, remove

Polígonos degenerados, descarta(face, sem perder vértices)

Pontos pertencem ao mesmo Plano, triangulação

Projeção retorna uma linha ou ponto,projeta-se em outro plano

Page 32: Mergehull3d

32

Implementação

Vetor, armazena vetor

Poligono, armazena polígono ou face

Poliedro, armazena poliedro

Desenha, desenha poliedro e polígonos

FC3D, aplica mergehull 2D

FC2D, aplica mergehull 3D

Mergelex, ordena os pontos

Page 33: Mergehull3d

33

Casos de Uso: Cubo

Pela fórmula de Euler:

F + V = A + 2

Page 34: Mergehull3d

34

Casos de Uso: Pirâmide

Pela fórmula de Euler:

F + V = A + 2

Page 35: Mergehull3d

35

Casos de Uso: Octaedro

Pela fórmula de Euler:

F + V = A + 2

Page 36: Mergehull3d

36

Casos de Uso: 2 Octaedros

Pela fórmula de Euler:

F + V = A + 2

Page 37: Mergehull3d

37

Casos de Uso: 100 pontos aleatórios

Pela fórmula de Euler:

F + V = A + 2

Page 38: Mergehull3d

38

Tema

A implementação de um Tema para o trabalho basou-se em um modelo de papel do Sonic.

Page 39: Mergehull3d

39

Tema: Sonic

Cedido gentilmente por Gustavo Wilke.

O Sonic é formado pela divisão por região do personagem em fechos convexos distintos.

Page 40: Mergehull3d

40

Tema: Sonic

Page 41: Mergehull3d

41

Tema: Sonic

Page 42: Mergehull3d

42

Referências

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

2. Ronald Graham, - An Efficient Algorithm for Determining the Convex Hull of a Finite Point Set – 1972

3. A. Jarvis, - On the Identification of the Convex Hull of of a Finite Set of Points in the Plane – 1973

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

5. Ottmann, Thomas – Computational Geometry – WS 2007/08 – Lecture 2 - Supplementary