Representação Geométrica

Slides:



Advertisements
Apresentações semelhantes
Geometria Computacional Fecho Convexo II
Advertisements

Programação em Java Prof. Maurício Braga
Instituto de Computação - UFF 1 Computação Gráfica I Professor: Anselmo Montenegro Conteúdo: - Transformações geométricas no plano.
Computação Gráfica I Conteúdo: Professor: - Objetos gráficos planares
Computação Gráfica I Conteúdo: Professor: - Objetos gráficos espaciais
Teoria dos Grafos – Aula 2
Geometria Computacional Galeria de Arte
Luiz Marcos Curvas paramétricas Luiz Marcos
Vetores Representação e características Operações I Decomposição
MÉTODOS MATEMÁTICOS EM BIOLOGIA
PERCEPTRON (CONTINUAÇÃO)
The Cyclops Project German-Brazilian Cooperation Programme on IT CNPq GMD DLR Departamento de Informática e Estatística - INE/CTC/UFSC Computação Gráfica:
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
Introdução à Computação Gráfica Recorte
Introdução à Computação Gráfica Geometria
Geometria Computacional Interseção de Segmentos
Interseção de Semiplanos
Geometria Computacional Fecho Convexo
Geometria Computacional Primitivas Geométricas
Decomposição Trapezoidal
2002 LCG/UFRJ. All rights reserved. 1 Localização no Plano Claudio Esperança Paulo Roma.
DIM102 1 Curvas e Superfícies 35T56 – Sala 3F4 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.
35T56 – Sala 3F4 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227
Computação Gráfica Interativa - Gattass
Computação Gráfica Interativa - Gattass
WAR STORY Stripping Triangulations Luciana Oliveira e Silva
FUNÇÃO MODULAR.
Computação Gráfica: Aula2: Curvas e Superfícies
Computação Gráfica: Aula2: Curvas e Superfícies
Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger.
Na barra de mensagens, clique em Habilitar Edição,
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Aula 4: Matrizes e Operações Matriciais
Funções.
Algoritmos em Grafos Conceitos principais Prof. André Renato
POLIEDROS COLÉGIO DECISIVO Matemática Professor Wilen
Informática Teórica Engenharia da Computação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Teoria dos Grafos Definições e Terminologia
Aula prática 6 Vetores e Matrizes
Operações em uma subdivisão planar 2D
Matemática para Economia III
Aula 13 Derivação Implícita, derivadas das funções trigonométricas inversas e derivadas de funções logarítmicas.
Computação Gráfica Aula 11 Curvas Prof. Leo.
O problema do emparelhamento máximo
Aula prática 6 Vetores e Matrizes
Professor João Gilberto
Computação Gráfica Aula 12 Superfícies Prof. Leo.
Introdução à Computação Gráfica Curvas
Técnicas de Modelagem para Aplicações em Computação Gráfica
Computação Gráfica – Visibilidade
Matemática para Economia III
Campus de Caraguatatuba
Matemática 3º ano – Ensino Médio
Navegação e Controle de Robôs Móveis PLANEJAMENTO DE CAMINHOS.
Geometria Computacional
Computação Gráfica – Modelagem Geométrica
Computação Gráfica – Modelagem Geométrica
2.3. Aplicações das Integrais Simples
Transformada de Hough Processamento global para a detecção de linhas retas numa imagem Nenhum conhecimento é necessário a respeito da posição das linhas.
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Geometria Computacional Fecho Convexo
CÁLCULO COM GEOMETRIA ANALÍTICA II Funções de várias variáveis
Operações para entrada de dados –Compilação de dados codificação de dados geográficos de uma forma conveniente para o sistema; incluem a digitalização,
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Cálculo Diferencial e Integral I
Introdução à Computação Gráfica Rasterização
Geometria Espacial.
Transcrição da apresentação:

Representação Geométrica Rodrigo de Toledo (CG1, UFRJ)

Níveis de escala Cena Meso Objetos do mundo virtual Textura Aqui Macro Microscale Microscale: niveau PHISIQUE FR (Subsurface scattering) FR (Photon mapping) Representação dos objetos Nível fotométrico

Representação da geometria Implícita Equação determina a descrição geométrica Ex: quádricas, cúbicas e torus Paramétrica Função determina regra de construção Ex: Bézier, Nurbs Explícita A geometria é descrita “ponto-a-ponto” Ex: malha de triângulo e mapa de alturas

Representação Geométrica Implícita Quádricas, cúbicas, etc... CSG

Exemplo: círculo Representação Implícita: Representação Paramétrica: Representação Explícita:

Superfícies implícitas superfícies implícitas são definidas por uma função f : R3R A função divide o espaço em três: surperfíce: f(x,y,z)  0 interior: f(x,y,z) < 0 exterior: f(x,y,z) > 0 f  0 f  0

Classificação das superfícies implícitas O grau da polinomial da função é que define o grau da superfície. Grau 2: quádricas Grau 3: cúbicas Grau 4: quárticas A quantidade de parâmetros S para cada grau p pode ser calculada usando: Calcular para grau 2, 3 e 4

Quádricas Quádricas: Esfera: x2 + y2 + z2 = 1

Representação matricial das quádricas Matriz simétrica Q4x4 contendo os 10 coeficientes:

Classificação das quádricas cylinders ellipsoids cones hyperboloids spheres Para entender a nomenclatura 3D, primeiro vamos ver a nomenclatura 2D...

Curvas em 2D

Classificação das Quádricas Saddle Cela do cavalo http://en.wikipedia.org/wiki/Quadric vide wikepedia

Cúbicas

Quárticas Torus é a quártica mais conhecida:

Qual a complexidade da equação do coração? f(x,y,z) = (2x2 + y2 + z2 – 1)3 – 0.1 x2 z3 – y2 z3

Cálculo da normal à superfície Gradiente da superfície no ponto x,y,z Qual é a normal de uma quádrica? Qual é a normal normalizada do ponto [x,y,z] numa esfera de raio unitário?

CSG (Constructive Solid Geometry)

CSG Operações booleanas Diferença União Interseção A diferença não é comutativa

CSG Objeto é representado por uma árvore Obs: Operadores em nós internos Primitivas simples nas folhas Combinação bottom-up Obs: Como há operações não comutativas, as arestas são ordenadas Pode haver nós de transformação: rotação, translação e escala...

Half-spaces Alguns sistemas CSG, além de primitivas sólidas, também fazem uso de half-spaces, ou seja, planos que dividem o espaço em dois Como definir um cubo a partir de half-spaces? 6 half-spaces Vantagem: Para se fazer um corte, não precisa usar um objeto com vários lados. Desvantagem: Problema de validação: nem toda combinação pode resultar em um objeto válido (talvez só faça sentido usar para subtração)

CSG & raytracing Um objeto em CSG é comumente descrito por combinações de objetos implícitos, cujos cálculos de interseção com a reta são conhecidos, tornando o raytracing de objetos CSG uma extensão natural.

CSG & raytracing Realizar operações booleanas com sólidos nem sempre é uma operação fácil É mais fácil interpretar o que acontece com um raio atravessando esse sólido. redução do problema a cálculos em intervalos 1D Goldstein and Nagel, “3-D Visual Simulation”, Simulation, January 1971.

CSG 1D A B A  B A: B: A  B:

CSG 1D A: B: A  B: A  B: A – B: B – A: A – B B – A A  B

CSG 1D Classificação in/out por região: A B A  B A  B A – B B – A in Exercício: Preencher a tabela acima!

CSG & Rasterização Também é possível visualizar sólidos CSG com rasterização Ordenação a posteriori dos fragmentos (pixels de cada primitiva) Vide: Rossignac and Requicha, “Depth-buffering Display Techniques for Constructive Solid Geometry”, CG & A, September 1986.

Algumas questões A ordem na árvore tem importância? Sim, verticalmente e horizontalmente (dif.). Existe uma representação única, dado um objeto final e suas primitivas? Não A árvore tem que ser binária? Os nós de união e interseção poderiam ter mais de um filho, mas diferença é sempre entre dois filhos.

Possíveis questões de prova Monte a árvore CSG deste sólido, sabendo que as folhas são 2 cilindros e 1 esfera Monte a árvore CSG deste sólido e desenhe o que acontece com o raio r ao longo do seu caminho para cada nó da árvore à raíz. in r out

Representação Geométrica Paramétrica Curvas paramétricas cúbicas Introdução Continuidade Algoritmo de De Casteljau Hermite, Bézier e Splines (B-Splines e Nurbs) Superfícies paramétricas bicúbicas Bézier...

http://www.cin.ufpe.br/~marcelow/Marcelow/Ensino.html

Curvas Paramétricas Cúbicas Por que paramétricas? são descritas em t f(t), 0 ≤ t ≤ 1 t = 0.8 0.7 1.0 0.6 0.9 0.4 0.0 0.1 0.2 0.3 0.5

Por que cúbicas? Grau 3: Por que não <3? Por que não >3? Pouca flexibilidade Por que não >3? Computacionalmente caro “Franjas” indesejáveis (unwanted wiggles) Por que 3? Controle suave (derivadas) da curva passando em dois pontos Menor grau de curva em 3D

Paramétricas Por que não f(x), ao invés de f(t)? Mas como representar esses casos? f(x) x

Uma função para cada dimensão

Matricialmente Derivada em t ?

Algoritmo de De Casteljau Interpolação x Aproximação

John Edson R. de Carvalho

12 12

Algoritmo de De Casteljau P1 P12 (u) u = 0.25 P02 (u) P01 (u) P0 P2

Algoritmo de De Casteljau P1 u = 0.5 P02 (u) P12 (u) P01 (u) P0 P2

Algoritmo de De Casteljau P1 P01 (u) u = 0.75 P02 (u) P12 (u) P0 P2

Algoritmo de De Casteljau P1 0 ≥ u ≥ 1 P02(u) P0 P2

u = 0.25 P1 P12 P02 P01 Para a animação funcionar: 45º P012 P0 P2

13 13

http://en.wikipedia.org/wiki/Bézier_curve

Peso (influência) de cada ponto: ∑bi(u) = 1, 0 ≥ u ≥ 1

Juntando curvas Como representar uma curva grande? Poderia se usar uma curva de grau n (n grande para caramba ) Ou, pode-se fazer emendas de cúbicas Mas nesse caso, queremos garantir uma boa continuidade no ponto de junção

Continuidade Geometric Continuity G0 G1 C1 C2 Cn Duas curvas tem um ponto de junção G1 Se no ponto de junção, a direção (não necessariamente a magnitude) do vetor tangente é igual para as duas curvas C1 Se, além da direção, a magnitude for igual. C2 Se a direção e magnitude da derivada segunda for igual. Cn Se a direção e magnitude de for igual. Para funções de grau alto, pode-se ter continuidade de grau ainda maior: n-polinomial  Cn-1 Existe G2? Existe C0? Normalmente estamos interessados em G1, C1 pode ser over-restriction

http://escience.anu.edu.au/lecture/cg/Spline/printCG.en.html http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/figures/ch08-6.gif

C0, C1, C2, C3, C4

Classificação das curvas Definidas por 4 constrains geométricas Bézier (4 pontos) Hermite (2 pontos e 2 tangentes) Splines São C1 e C2 nos pontos de junção Porém, não interpolam os pontos (aproximam) 3 tipos: B-splines Nonuniform B-splines (Nurbs) β-splines

Blending Function Matricialmente, podemos definir a curva como: Vamos reescrever C como o resultado da multiplicação entre M e G, onde G são as constrains geométricas Blending Function: B = T • M

Bézier 70’s Como vimos no algoritmo de De Casteljau para construção de curvas de Bézier 4 pontos definem a curva de Bézier No caso acima, quem são G1, G2, G3 e G4? P0 P1 P2 P3

Bézier No caso de Bézier, quais são os valores de M11 a M44? Lembrando que: (a-b)3 = a3 – 3a2b + 3ab2 – b3 e (a-b)2 = a2 – 2ab + b2

Últimas observações Bézier Fecho convexo

Últimas observações Bézier Como garantir que duas curvas de Bézier P0P1P2P3 e P4P5P6P7 tenham Continuidade G0? Continuidade G1? Continuidade C1? Qual a grau de continuidade da seguinte curva?

Hermite 4 constrains geométricos: 2 pontos e suas 2 tangentes: R1 P4

Hermite Hermite Blending Function Familia de curvas alterando magnitude e direção de R1

Splines Origem: “ducks” usados para retorcer uma chapa de metal flexível (spline) na determinação de superfícies curvas para navios, aviões e carros. Observe que a spline interpola todos os pontos de controle A spline é contínua em C0, C1 e C2.

B-splines Splines tem duas desvantagens: B-splines são uma solução: Os coeficientes dependem de todos os pontos de controle ou seja, mover um ponto de controle pode afetar toda a curva A computação depende de inversão de matrizes B-splines são uma solução: Os segmentos dependem de alguns poucos pontos de controle Tem a mesma continuidade das splines Menor computação Porém: não interpolam todos os pontos Uniforme x não-uniforme Se os pontos de controles estiverem equidistantemente distribuídos, então ela é uniforme Caso contrário: não uniforme: NURBS mais sobre splines

Superfícies paramétricas

Superfícies paramétricas bicúbicas Multiplicação de duas curvas A informação geométrica que define uma curva é também em função de uma variável paramétrica Forma geral de uma superfície 3D:

Superfícies paramétricas bicúbicas Vimos que um curva cúbica pode ser definida por (onde G é o vetor geométrico): Substituindo t por s (temos que ter outra variável para o caso das superfícies), então: Imaginemos os pontos em G variando em 3D, parametrizado por t: Se Gi(t) forem cúbicos, então Q(s,t) é uma superfície paramétrica bicúbica

Cada Gi(t) = T•M•G, é definido por Gi = [gi1, gi2, gi3, gi4]T Usando (ABC)T= CT • BT • AT, Gi(t) = GT•MT•TT = [gi1, gi2, gi3, gi4]T •MT •TT, Então: Escrito separadamente:

Superfícies de Bèzier

Retalhos de Bézier x(s,t) Curvas na fronteira são curvas de Bézier Qualquer curva para s ou t constante é uma curva Bézier Podemos pensar assim: Cada linha da grade com 4 pontos de controle define uma curva de Bézier para o parâmetro s Ao avaliar cada curva para um mesmo s obtemos 4 pontos de controle “virtuais” Pontos de controle “virtuais” definem uma curva Bézier em t Avaliando esta curva em um dado t resulta no ponto x(s,t) x(s,t)

Propriedades dos Retalhos de Bézier O retalho interpola os pontos dos cantos da grade de controle Decorre das propriedades análogas das curvas de Bézier O plano tangente em um ponto do canto é dado pelas duas arestas da grade incidentes no ponto Decorre do fato que as curvas Bézier das fronteiras incidentes têm tangentes definidas pelas arestas correspondentes O retalho é restrito ao fecho convexo da grade de controle As funções de base somam 1 e são positivas em toda parte

Retalhos Bézier em Forma Matricial Se os pontos de controle não se modificam, pode-se pré-computar o produto das 3 matrizes do meio:

Malhas de Retalhos Bézier São malhas compostas de diversos retalhos unidos ao longo de suas fronteiras As arestas das grades de controle precisam se justapor perfeitamente As grades precisam ser quadriláteros OK Não Não OK

Continuidade em Malhas de Retalhos Bézier Como no caso das curvas Bézier, os pontos de controle precisam satisfazer restrições para assegurar continuidade paramétrica Continuidade ao longo das arestas dos retalhos: C0 → Pontos de controle da aresta são os mesmos em ambos retalhos C1 → Pontos de controle vizinhos aos da aresta têm que ser colineares e eqüidistantes C2 → Restrições sobre pontos de controle mais distantes da aresta Para obter continuidade geométrica, as restrições são menos rígidas G1 → Pontos de controle vizinhos aos da aresta têm que ser colineares mas não precisam ser eqüidistantes Para obter continuidade C1 nos vértices das grades Todas as arestas incidentes no ponto têm que ser colineares

Desenhando Retalhos Bézier Opção 1: Avaliar o retalho para um conjunto de pontos do domínio paramétrico e triangular Normalmente, s e t são tomados em intervalos (regulares ou não) de forma que os pontos avaliados formam uma grade Cada célula da grade é constituída de quatro pontos que vão gerar 2 triângulos Não se usa quadriláteros visto que os pontos não são necessariamente co-planares Renderização fácil com triangle strips Vantagem: Simples e suportado pelo OpenGL Desvantagem: Não há uma maneira fácil de controlar o aspecto da superfície de forma adaptativa

Desenhando Retalhos Bézier Opção 2: Usar subdivisão Permite controle de erro durante a aproximação Definida de forma semelhante à subdivisão de curvas Bézier, mas refinamento é feito de forma alternada nos dois eixos de parâmetros Sucessivamente computar pontos médios dos vértices e uní-los Aplicar procedimento inicialmente em cada linha da grade de controle: 4x4 → 4x7 Repetir procedimento para cada coluna da grade de controle: 4x7 → 7x7

Procedimento Adaptativo Através da subdivisão obtemos 4 grades de controle e testamos: Se a grade é aproximadamente plana, ela é desenhada Senão, subdividir em 4 sub-grades e aplicar o procedimento recursivamente Problema: Retalhos vizinhos podem não ser subdivididos uniformemente Rachaduras: polígonos de controle não se justapõem Pode ser consertado forçando grades mais subdivididas a se justaporem às grades menos subdivididas ao longo da aresta comum Rachadura

Normal Como calcular a normal de uma superfície paramétrica Q(s,t) no ponto s=α e t=β ? t = β s = α

Computando o Vetor Normal Derivadas parciais em relação a t e a s pertencem ao plano tangente Vetor normal é calculado normalizando o produto cruzado de ambas

Exemplos de outras superfícies paramétricas Superfícies criadas por rotação de um curva em torno de um eixo Knots: movimentação de um círculo no espaço Exemplo: Trefoil Knot

Representação Geométrica Explícita Referências das transparências: Prof. Paulo Roma Prof. Thomas Ottmann e Khaireel A. Mohamed

Paradigma dos quatro universos. Objetos do universo físico: “sólidos” (formas) Universo matemático, descrição: Implícita x Paramétrica x Explícita Explicitamente, exemplos de representação: por volume (voxles) mapa de altura por bordo (superfícies poliédricas)

Representação explícita por bordo (superfícies poliédricas) Qualquer poliedro convexo pode ser representado por uma subdivisão planar (representação linear por partes) Malha de polígonos (ou malha de triângulos) Faltou conceito de 2-manifold e “aresta homeomorfa a uma vizinhança”, vide Gomes & Velho, pag 212/213 Faltou referência bibliografica para a afirmação acima (tirada das notas de aulas do Paulo Cezar)

Representação Linear por Partes Superfície com geometria complexa pode ser aproximada por uma superfície linear por partes. Particiona-se o domínio da parametrização por um conjunto de polígonos. Cada vértice no domínio poligonal é levado para a superfície pela parametrização. A conectividade entre vértices adjacentes se mantem. Faltou um exemplo de objeto 3D complexo e sua parametrização (como imagens do Bruno Levy)

Propriedades Gera uma malha poligonal, definida por um conjunto de vértices, arestas e faces. Cada aresta é compartilhada por no máximo duas faces. A interseção de duas faces é uma aresta, um vértice ou vazia. Relação de Euler F + V = A + 2 Adjacência de vértices, arestas e faces é chamada de topologia da superfície.

Relação de Euler F + V = A + 2 (Foi Você que Assassinou o 2) Existe uma face externa F + V = A + 2s s é a quantidade de bordas da malha (depende do genus do objeto) O genus do objeto depende da quantidade de “alças” (handles) g = 0 Faltou figura com bordas internas g = 1 g = 2

Geometria x Topologia Dois objetos com a mesma geometria podem ter topologias diferentes Dois objetos com a mesma topologia podem ter geometrias diferentes Vamos nos concentrar na topologia! Problema em 2D

Manifold Uma superfície é 2-manifold se em todo o seu domínio ela for localmente homeomorfa a um disco Era legal ter umas imagens com o disco projetado, como no Foley... manifold non-manifold edge Non-manifold vertex

Subdivisão Planar Como representar (codificar)? lista de vértices e arestas, ou lista de vértices e faces, Winged edge ou Half edge ou ... Operações sobre Malhas Poligonais Achar todas as arestas que incidem em um vértice. Achar as faces que incidem numa aresta ou vértice. Achar as arestas na fronteira de uma face As 9 perguntas devem ser respondidas em tempo ótimo!

9 tipos de Relacionamentos de Adjacência

Codificação Explícita. Ponteiros para lista de vértices. Ponteiros para lista de arestas. Winged-Edge (Half-Edge, Face-Edge). Quad-Edge (Guibas-Stolfi). Radial-Edge. Half-Edge.

Sugestões?

Codificação Explícita A mais simples. Cada face armazena explicitamente a lista ordenada das coordenadas dos seus vértices: Muita redundância de informação. Consultas são complicadas. Obriga a execução de algoritmos geométricos para determinar adjacências.

Desenho da Malha Cada aresta é desenhada duas vezes, pelos duas faces que a compartilham. Não é bom para plotadoras ou filmes.

Ponteiros para Lista de Vértices Vértices são armazenados separadamente. Há uma lista de vértices. Faces referenciam seus vértices através de ponteiros. Proporciona maior economia de memória. Achar adjacências ainda é complicado. Arestas ainda são desenhadas duas vezes.

Exemplo

Ponteiros para Lista de Arestas Há também uma lista de arestas. Faces referenciam as suas arestas através de ponteiros. Arestas são desenhadas percorrendo-se a lista de arestas. Introduzem-se referências para as duas faces que compartilham uma aresta. Facilita a determinação das duas faces incidentes na aresta.

Exemplo

Outra linha de solução... DCEL: Doubly-Connected Edge List winged-edge radial-edge half-edge

Winged-Edge

Winged-Edge Criada em 1974 por Baumgart. Foi um marco na representação por fronteira. Armazena informação na estrutura associada às arestas (número de campos é fixo). Todos os 9 tipos de adjacência entre vértices, arestas e faces são determinados em tempo constante. Atualizada com o uso de operadores de Euler, que garantem: V – A + F = 2. Porém, o tamanho da estrutura é: 3V + 8A + F 8A, porque são 8 ponteiros F, porque um ponteiro para edge... Por que 3V???? (talvez xyz?)

DCEL (Doubly-Connected Edge List ) Winged-Edge Facial-Edge Resolve faces dentro de faces Radial-Edge (Weiler, 1986) Representa objetos non-manifold. Armazena a lista ordenada de faces incidentes em uma aresta. Muito mais complicada que a Winged-Edge. Half-edge Enxuta A mais popular!!!

Estrutura de dados Half-edge A estrutura de dados de uma Half-edge deve armazenar: Ponteiro para a half-edge seguinte Ponteiro para a half-edge oposta Ponteiro para sua face Ponteiro para o vértice de origem Face data structure stores: Ponteiro para uma das half-edges da face Vertex data structure stores: Ponteiro para uma das half-edges de origem no vértice

Código da estrutura Half-edge class H_Edge { Vertex vOrig; H_Edge eTwin; H_Edge eNext; Face f; } class Vertex { Point2D p; H_Edge hEdge; } class Face { H_Edge hEdge; } Observações: Para um mesmo Vertex podem existir diversos H_Edge, porém, basta guardar um deles com origem no Vertex. Na face, basta guardar uma de suas H_Edge H_Edge f eNext ePrev vOrig eTwin

DCEL Example: Planar Subdivision 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 f1 f3 f2 f4 Vertex v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 p (1,1) (10,0) (9,5) (2,7) (5,8) (8,9) (5,11) (7,13) (1,13) (11,12) (6,15) hEdge e1_3 e2_3 e3_4 e4_9 e5_9 e6_7 e7_8 e8_6 e9_11 ((Fazer exemplo no quadro))

DCEL Example: Planar Subdivision 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 f1 f3 f2 f4 Half-Edge e1_3 e3_1 e2_3 e3_2 e10_3 e11_10 e9_11 e4_9 e3_4 e4_3 e9_4 e5_9 e3_5 e5_3 e9_5 e11_9 vOrig v1 eTwin e3_1 f f1 eNext e3_4 ePrev e3_1

DCEL Example: Planar Subdivision 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 f1 f3 f2 f4 Half-Edge e10_11 e3_10 e6_7 e8_6 e7_8 e8_7 e7_6 e6_8 vOrig v10 eTwin e11_10 f f3 eNext e11_9 ePrev e3_10 Face f1 f2 f3 f4 eOuterComp NULL eInnerComps e1_3

Half-edge data structure Example: Vertex list V coord he 0 0 0 0 0 1 0 0 1 1 1 0 2 ….. Face list f e 0 e0 e8 … 1 2 3 4 5 7 6 GERAR UM EXEMPLO MELHOR, com letras para as half-edges (Quantas half-edges?) Criar dois tipos de exercício: . preencher uma tabela de half-edge dado algum objeto (ex: o cubo)... . Fazer um algoritmo qualquer de busca... Half-edge list he to_vertex next_he opposite_he face 0 1 1 6 0 2 2 11 0 3 3 15 0 0 0 18 0 9 1 2 3 8 11 10

Exemplos de questões de prova this P1, 2011.1 P1, 2010.2 P3, 2011.1

Triângulos Muitos sistemas trabalham exclusivamente com malhas de triângulos Por que triângulos? Algumas propriedades especiais: Vértices são sempre coplanares Sempre convexo Interpolação linear (coordenadas baricêntricas) Qualquer malha de polígonos pode ser transformada em malha de triângulos Especialidade das GPU’s Triângulo é sempre rígido (ex: Torre Eifel)

Outros Temas em Geometria Computacional Interseção de segmento de linhas Localização de Ponto Em um polígono Em uma subdivisão planar Triangulação de Delaunay Delaunay (maximiza o menor ângulo de todos os triângulos) “gordura dos triângulos” Diagramas de Voronoi Mapa de localização de ponto mais próximo Grafo complementar ao Delaunay Fecho Convexo 3D Planejamento de Movimentação de Robôs Grafos de Visibilidade Árvores Espaciais Kd-Trees Quadtrees BSP (Binary Space Partition)