Representação Geométrica Rodrigo de Toledo (CG1, UFRJ, 2010.2) Níveis de escala Aqui Cena Meso • Objetos do mundo virtual • Textura Macro Microscale • 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 f 0 • superfícies implícitas são definidas por uma função f: R3R • 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: 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 spheres ellipsoids cones cylinders hyperboloids • Para entender a nomenclatura 3D, primeiro vamos ver a nomenclatura 2D... Curvas em 2D Classificação das Quádricas Saddle Cela do cavalo • 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 – 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 A: B: A B: B AB CSG 1D A: B: A B: A B: A – B: B – A: A–B AB B–A CSG 1D • Classificação in/out por região: A B AB AB A–B B–A in in in in out out in out in out in out out in in out out in out out out out out out 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 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 1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 t = 0.0 Por que cúbicas? • Grau 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)? f(x) x • Mas como representar esses casos? Uma função para cada dimensão Q(t ) x(t ) y(t ) z(t ) Matricialmente ax bx C cx dx az bz cz dz ay by cy dy T t3 t2 t 1 Q(t ) x(t ) y(t ) z(t ) T C • Derivada em t ? d Q(t ) dt 3a t x 2 2bxt cx 3ayt 2 2byt cy 3azt 2 2bzt cz Algoritmo de De Casteljau Interpolação x Aproximação John Edson R. de Carvalho Algoritmo de De Casteljau P1 P12 (u) u = 0.25 P01 (u) P0 P02 (u) 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) P0 P12 (u) P2 Algoritmo de De Casteljau P1 0≥u≥1 P02(u) P0 P2 ∑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 – 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 dn Q(t ) for igual. – Se a direção e magnitude de n dt • Para funções de grau alto, pode-se ter continuidade de grau ainda maior: n-polinomial Cn-1 • Existe G2? Existe C0? 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: Q(t ) x(t ) y(t ) z(t ) T C • Vamos reescrever C como o resultado da multiplicação entre M e G, onde G são as constrains geométricas Q(t ) x(t ) y(t ) z(t ) t 3 t 2 m11 m 21 t 1 m31 m41 • Blending Function: B = T • M m12 m22 m32 m42 m13 m23 m33 m43 m14 m24 m34 m44 G1x G 2x G3 x G4 x G1 y G2 y G3 y G4 y G1z G2 z G3 z G4 z 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 P1 P3 P0 P2 – No caso acima, quem são G1, G2, G3 e G4? t 3 t 2 m11 m 21 m31 t 1 m41 m12 m22 m32 m42 m13 m23 m33 m43 m14 m24 m34 m44 G1x G 2x G3 x G4 x G1 y G2 y G3 y G4 y G1z G2 z G3 z G4 z Bézier • No caso de Bézier, quais são os valores de M11 a M44? Q(t ) t 3 t 2 m11 m 21 t 1 m31 m41 m12 m22 m32 m42 m13 m23 m33 m43 m14 m24 m34 m44 P0 P 1 P2 P3 Q(t ) (1 t )3 P0 3t (1 t )2 P1 3t 2 (1 t )P2 t 3 P3 Lembrando que: (a-b)3 = a3 – 3a2b + 3ab2 – b3 1 3 3 3 6 3 3 3 0 0 0 1 1 0 0 0 e (a-b)2 = a2 – 2ab + b2 Últimas observações Bézier • Fecho convexo • Continuidade G1: pontos colineares • E para ter continuidade C1? Hermite • 4 constrains geométricos: – 2 pontos e suas 2 tangentes: R1 P4 P1 R4 P1 P GH 4 R1 R4 1 2 2 1 3 3 2 1 MH 0 0 1 0 1 0 0 0 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: – 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 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): Q(t ) T M G • Substituindo t por s (temos que ter outra variável para o caso das Q( s ) S M G • Imaginemos os pontos em G variando em 3D, parametrizado por t: G1 (t ) G (t ) Q( s, t ) S M G (t ) S M 2 G3 (t ) G ( t ) 4 superfícies), então: • 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 • 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 x( s, t ) S T BT PBT x ( s, t ) s 3 s2 1 3 3 3 6 3 s 1 3 3 0 0 0 1 1 P0, 0 0 P1, 0 0 P2, 0 0 P3, 0 P0,1 P1,1 P2,1 P3,1 P0, 2 P1, 2 P2, 2 P3, 2 P0,3 1 3 3 P1,3 3 6 3 P2,3 3 3 0 P3,3 1 0 0 1 t 3 0 t 2 0 t 0 1 • Se os pontos de controle não se modificam, pode-se pré-computar o produto das 3 matrizes do meio: x ( s, t ) s 3 s 2 M 0, 0 M 1, 0 s 1 M 2, 0 M 3, 0 M 0,1 M 0, 2 M 1,1 M 1, 2 M 2,1 M 2, 2 M 3,1 M 3, 2 M 0 , 3 t 3 M 1,3 t 2 M 2,3 t M 3,3 1 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 OK Não 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 n m dBin m x Pi , j B j t s s ,t i 0 j 0 ds s x x n s s ,t t s ,t n m dBj x n Pi , j Bi s t s ,t i 0 j 0 dt m nˆ n n t 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: mapa de altura por bordo (superfícies poliédricas) por volume (voxles) 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) 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. 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 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 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: P ( x1 , y1 , z1 ), ( x2 , y2 , z 2 ),...,( xn , yn , zn ) • 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 Face-Edge Radial-Edge • Criada em 1986 por Weiler. • Representa objetos non-manifold (não variedades). • Armazena a lista ordenada de faces incidentes em uma aresta. • Muito mais complicada que a Winged-Edge. Radial-Edge Half-edge data structure • 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 A reference to the vertex it points to • Face data structure stores: – A reference to an half-edge in the face • Vertex data structure stores: – A reference to the outgoing half-edge Half-edge data structure • Example: 7 6 4 5 3 1 9 2 10 3 1 he 0 1 2 Face list f e 0 e0 1 e8 2 … 2 0 0 Vertex list V coord 0 000 1 100 2 110 3 ….. 8 11 Half-edge list he to_vertex 0 1 1 2 2 3 3 0 next_he 1 2 3 0 opposite_he 6 11 15 18 face 0 0 0 0 Half-edge • The half-edges in the DCEL that border a face, form a circular linked-list around its perimeter (anti-clockwise); i.e. each half-edge in the loop stores a pointer to the face it borders (incident). • Each half-edge is directed and can be described in a Java class as follows: class H_Edge { Vertex vOrig; H_Edge eTwin; Face f; H_Edge eNext; H_Edge ePrev; f H_Edge vOrig } ePrev eTwin eNext DCEL Component - Vertex • A vertex in the DCEL stores: – its actual location of the point on the plane, and – a pointer to exactly ONE of the H_Edge, which uses this vertex as its origin. class Vertex { Point2D p; H_Edge hEdge; } hEdge Vertex p=(x,y) • There may be several H_Edge which origins start at the same vertex. We need only one, and it does not matter which one. DCEL Component – Face • A face component stores – a reference to any one of the half-edges it borders (the face’s outer-most boundary), and – a set of references to half-edges of unique holes inside the face. class Face { H_Edge eOuterComp; List<H_Edge> eInnerComps; } eInnerComps[0] Face eOuterComp DCEL Example: Planar Subdivision v11 15 14 v9 13 v8 f3 12 v10 f4 11 v7 10 v6 9 f2 8 7 v5 v4 6 v3 5 f1 4 3 2 v1 1 0 v2 0 1 2 3 4 5 6 7 8 9 10 11 Vertex p v1 (1,1) v2 (10,0) v3 (9,5) v4 (2,7) v5 (5,8) v6 (8,9) v7 (5,11) v8 (7,13) v9 (1,13) v10 (11,12) v11 (6,15) hEdge e1_3 e2_3 e3_4 e4_9 e5_9 e6_7 e7_8 e8_6 e9_11 DCEL Example: Planar Subdivision Half-Edge e1_3 14 e3_1 v9 v8 13 v10 e2_3 f3 12 e3_2 f4 11 v7 e10_3 10 e11_10 v6 9 f2 v5 e9_11 8 e4_9 7 v4 e3_4 6 e4_3 v3 5 f1 e9_4 4 e5_9 3 e3_5 2 v1 e5_3 1 v2 e9_5 0 0 1 2 3 4 5 6 7 8 9 10 11 e11_9 15 v11 vOrig v1 eTwin e3_1 f eNext f1 e3_4 ePrev e3_1 DCEL Example: Planar Subdivision v11 15 14 v9 13 v8 f3 12 v10 f4 11 v7 10 v6 9 f2 8 7 v5 eTwin f eNext e11_10 f3 e11_9 ePrev e3_10 v4 6 v3 5 f1 4 3 2 v1 1 0 Half-Edge vOrig e10_11 v10 e3_10 e6_7 e8_6 e7_8 e8_7 e7_6 e6_8 v2 0 1 2 3 4 5 6 7 8 9 10 11 Face eOuterComp f1 NULL f2 f3 f4 eInnerComps e1_3 Adjacency Queries • Given a half-edge e, we can perform queries in constant time. • Example: Vertex v1 Vertex v2 Face f1 = Face f2 = = e . vOrig; = e . eTwin . vOrig; f1 e . f; e . eTwin . f; v1 v2 e f2 Iterated Adjacency Queries • Iterating over the half-edges adjacent to a given face f. H_Edge hEdge = f . eOuterComp; do { // Do something with edge. hEdge = hEdge . eNext; } while ( Iterated Adjacency Queries • Iterating over the half-edges on a given vertex v. H_Edge hEdge = v . hEdge; do { // Do something with edge. hEdge = hEdge . eTwin . eNext; } while ( 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)