Mergehull3d

Post on 05-Jul-2015

1.114 views 0 download

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

Mergehull 3DFecho Convexo 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 Tema Dificuldades Referências

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

4

Teoria: Fecho Convexo

Fecho Convexo

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

6

Teoria: Fecho Convexo 2D

Divisão e Conquista

7

Teoria: Fecho Convexo 2D

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

8

Teoria: Fecho Convexo 2D

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

9

Teoria: Fecho Convexo 2D

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

10

Teoria: Fecho Convexo 2D

i=0Tang inferiorTang superior

11

Teoria: Fecho Convexo 2D

i=0Tang inferiorTang superior

12

Teoria: Fecho Convexo 2D

i=0Tang inferiorTang superior

13

Teoria: Fecho Convexo 2D

Tang inferiorTang superior

14

Teoria: Fecho Convexo 2D

Tang inferiorTang superior

15

Teoria: Fecho Convexo 2D

Tang inferiorTang superior

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

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.

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

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.

20

Teoria Fecho Convexo 3D

P1P2

2 poliedros quaisquer

21

Teoria Fecho Convexo 3D

Projeção em XY

P1 P2

22

Teoria Fecho Convexo 3D

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

P1 P2

23

Teoria Fecho Convexo 3D

P1P2

tangente superior Retorna ao R³

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

24

Teoria Fecho Convexo 3D

P1 P2

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

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

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

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º

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

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)

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

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

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

33

Casos de Uso: Cubo

Pela fórmula de Euler:

F + V = A + 2

34

Casos de Uso: Pirâmide

Pela fórmula de Euler:

F + V = A + 2

35

Casos de Uso: Octaedro

Pela fórmula de Euler:

F + V = A + 2

36

Casos de Uso: 2 Octaedros

Pela fórmula de Euler:

F + V = A + 2

37

Casos de Uso: 100 pontos aleatórios

Pela fórmula de Euler:

F + V = A + 2

38

Tema

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

39

Tema: Sonic

Cedido gentilmente por Gustavo Wilke.

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

40

Tema: Sonic

41

Tema: Sonic

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