Title: Representa
1Representação Geométrica
- Rodrigo de Toledo
- (CG1, UFRJ)
2Níveis de escala
Aqui
- Representação dos objetos
3Representaçã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
4Representação Geométrica Implícita
- Quádricas, cúbicas, etc...
- CSG
5Exemplo círculo
Representação Implícita Representação
Paramétrica Representação Explícita
6Superfí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) lt 0
- exterior f(x,y,z) gt 0
f ? 0
f ? 0
7Classificaçã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
8Quádricas
Esfera x2 y2 z2 1
9Representação matricial das quádricas
- Matriz simétrica Q4x4 contendo os 10 coeficientes
10Classificação das quádricas
- Para entender a nomenclatura 3D, primeiro vamos
ver a nomenclatura 2D...
11Curvas em 2D
12Classificação das Quádricas
Saddle Cela do cavalo
13Cúbicas
14Quárticas
- Torus é a quártica mais conhecida
15Qual a complexidade da equação do coração?
f(x,y,z) (2x2 y2 z2 1)3 0.1 x2 z3 y2
z3
16Cá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?
17CSG (Constructive Solid Geometry)
18CSG
Diferença
União
Interseção
19CSG
- 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...
20Half-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)
21CSG 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.
22CSG 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.
23CSG 1D
A
B
A ? B
A
B
24CSG 1D
A
B
A ? B
A B
B A
A B
B A
A ? B
25CSG 1D
- Classificação in/out por região
A B A ? B A ? B 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
A B A ? B A ? B A B B A
in in
in out
out in
out out
Exercício Preencher a tabela acima!
26CSG 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.
27Algumas 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.
28Possí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
29Representaçã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...
30http//www.cin.ufpe.br/marcelow/Marcelow/Ensino.h
tml
31Curvas Paramétricas Cúbicas
- Por que paramétricas?
- são descritas em t
- f(t), 0 t 1
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
t
32Por que cúbicas?
- Grau 3
- Por que não lt3?
- Pouca flexibilidade
- Por que não gt3?
- 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
33Paramétricas
- Por que não f(x), ao invés de f(t)?
- Mas como representar esses casos?
f(x)
x
34Uma função para cada dimensão
35(No Transcript)
36Matricialmente
37Algoritmo de De Casteljau
Interpolação x Aproximação
38John Edson R. de Carvalho
3912
12
40Algoritmo de De Casteljau
P1
P12 (u)
u 0.25
P02 (u)
P01 (u)
P0
P2
41Algoritmo de De Casteljau
P1
u 0.5
P12 (u)
P02 (u)
P01 (u)
P0
P2
42Algoritmo de De Casteljau
P1
P01 (u)
u 0.75
P02 (u)
P12 (u)
P2
P0
43Algoritmo de De Casteljau
P1
0 u 1
P02(u)
P2
P0
44u 0.25
P1
P12
P02
P01
P0
P2
4513
13
46http//en.wikipedia.org/wiki/Bézier_curve
47(No Transcript)
48(No Transcript)
49Peso (influência) de cada ponto
?bi(u) 1, 0 u 1
50Juntando 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
51Continuidade
- 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
- 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?
52(No Transcript)
53C0, C1, C2, C3, C4
54Classificaçã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
55Blending 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
56Bézier
- 70s
- 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?
57Bé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
58Últimas observações Bézier
59Ú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?
60Hermite
- 4 constrains geométricos
- 2 pontos e suas 2 tangentes
R1
P4
P1
R4
61Hermite
- Hermite Blending Function
- Familia de curvas alterando magnitude e direção
de R1
62Splines
- 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.
63B-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
64 Superfícies paramétricas
65 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
66 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
67- Cada Gi(t) TMG, é definido por Gi gi1,
gi2, gi3, gi4T - Usando (ABC)T CT BT AT,
- Gi(t) GTMTTT gi1, gi2, gi3, gi4T MT TT,
- Então
- Escrito separadamente
68Superfícies de Bèzier
69Retalhos 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)
70Propriedades 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
71Retalhos 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
72Malhas 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
73Continuidade 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
74Desenhando 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
75Desenhando 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
76Procedimento 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
77Normal
- Como calcular a normal de uma superfície
paramétrica Q(s,t) no ponto sa e tß ?
t ß
s a
78Computando 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
79Exemplos 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
80Representação Geométrica Explícita
- Referências das transparências
- Prof. Paulo Roma
- Prof. Thomas Ottmann e Khaireel A. Mohamed
-
81Paradigma 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)
82Representaçã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)
83Representaçã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.
84Propriedades
- 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.
85Relaçã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
86Geometria 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
87Manifold
- 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
88Subdivisã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!
899 tipos de Relacionamentos de Adjacência
90Codificaçã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.
91Sugestões?
92Codificaçã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.
93Desenho da Malha
- Cada aresta é desenhada duas vezes, pelos duas
faces que a compartilham. - Não é bom para plotadoras ou filmes.
94Ponteiros 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.
95Exemplo
96Ponteiros 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.
97Exemplo
98Outra linha de solução...
- DCEL Doubly-Connected Edge List
- winged-edge
- radial-edge
- half-edge
99Winged-Edge
100Winged-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
101DCEL (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!!!
102Estrutura 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
103Có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
104DCEL Example Planar Subdivision
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,1
3) (1,13) (11,12) (6,15)
hEdge e1_3 e2_3 e3_4 e4_9 e5_9 e6_7 e7_8 e8_6 e9_1
1
((Fazer exemplo no quadro))
105DCEL Example Planar Subdivision
Half-Edge e1_3 e3_1 e2_3 e3_2 e10_3 e11_10 e9_11 e
4_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
106DCEL Example Planar Subdivision
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
107Half-edge data structure
- Vertex list
- V coord he
- 0 0 0 0 0
- 1 0 0 1
- 1 1 0 2
- ..
- 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
10
108Exemplos de questões de prova
109Triâ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 GPUs
- Triângulo é sempre rígido (ex Torre Eifel)
110Outros 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)