representação geométrica rodrigo de toledo (cg1, ufrj)

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

Upload: internet

Post on 21-Apr-2015

111 views

Category:

Documents


6 download

TRANSCRIPT

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

Representação Geométrica

Rodrigo de Toledo(CG1, UFRJ)

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

Níveis de escala

Cena

Macro Microscale

Meso

• Objetos do mundo virtual

• Representação dos objetos

• Textura

• Nível fotométrico

Aqui

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

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

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

Representação Geométrica Implícita

• Quádricas, cúbicas, etc...

• CSG

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

Exemplo: círculo

Representação Implícita:

Representação Paramétrica:

Representação Explícita:

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

Superfícies implícitas

• 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

f 0

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

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:

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

Quádricas

– Quádricas:

Esfera: x2 + y2 + z2 = 1

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

Representação matricial das quádricas

• Matriz simétrica Q4x4 contendo os 10 coeficientes:

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

Classificação das quádricas

• Para entender a nomenclatura 3D, primeiro vamos ver a nomenclatura 2D...

cylindersellipsoids cones hyperboloidsspheres

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

Curvas em 2D

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

Classificação das Quádricas

• vide wikepedia

SaddleCela do cavalo

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

Cúbicas

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

Quárticas

• Torus é a quártica mais conhecida:

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

Qual a complexidade da equação do coração?

f(x,y,z) = (2x2 + y2 + z2 – 1)3 – 0.1 x2 z3 – y2 z3

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

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?

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

CSG (Constructive Solid Geometry)

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

CSG

• Operações booleanas

União

Diferença

Interseção

A diferençanão é comutativa

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

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...

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

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)

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

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.

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

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.

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

CSG 1D

A B A B

A:

B:

A B:

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

CSG 1DA:

B:

A B:

A B:

A – B:

B – A:

A B B – A

A – B

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

CSG 1D

• Classificação in/out por região:

Exercício: Preencher a tabela acima!

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

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

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.

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

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.

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

Possíveis questões de provaMonte 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.

rin

out

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

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...

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

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

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

Curvas Paramétricas Cúbicas

• Por que paramétricas?– são descritas em t

• f(t), 0 ≤ t ≤ 1

0.00.10.20.30.40.50.60.70.80.91.0t =

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

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

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

Paramétricas

• Por que não f(x), ao invés de f(t)?

• Mas como representar esses casos?x

f(x)

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

Uma função para cada dimensão

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

)()()()( tztytxtQ

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

Matricialmente

• Derivada em t ?

)(tQdt

d

123 tttT

dzdydx

czcycx

bzbybx

azayax

C

CTtztytxtQ )()()()(

zzzyyyxxx ctbtactbtactbta 232323 222

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

Algoritmo de De Casteljau

Interpolação x Aproximação

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

John Edson R. de Carvalho

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

12

12

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

P0 P2

P1

P01 (u)

P12 (u)

P02 (u)

Algoritmo de De Casteljau

u = 0.25

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

P0 P2

P1

P01 (u)P12 (u)P02 (u)

u = 0.5

Algoritmo de De Casteljau

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

P2P0

P12 (u)

P01 (u)

P02 (u)

P1

Algoritmo de De Casteljau

u = 0.75

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

P2P0

P1

P02(u)

Algoritmo de De Casteljau

0 ≥ u ≥ 1

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

13

13

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

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

Page 46: Representação Geométrica Rodrigo de Toledo (CG1, UFRJ)
Page 47: Representação Geométrica Rodrigo de Toledo (CG1, UFRJ)
Page 48: Representação Geométrica Rodrigo de Toledo (CG1, UFRJ)

∑bi(u) = 1,0 ≥ u ≥ 1

Peso (influência) de cada ponto:

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

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

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

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

– 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?

)(tQdt

dn

n

Page 51: Representação Geométrica Rodrigo de Toledo (CG1, UFRJ)
Page 52: Representação Geométrica Rodrigo de Toledo (CG1, UFRJ)

C0, C1, C2, C3, C4

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

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

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

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

CTtztytxtQ )()()()(

123 ttt

44434241

34333231

24232221

14131211

mmmm

mmmm

mmmm

mmmm

zyx

zyx

zyx

zyx

GGG

GGG

GGG

GGG

444

333

222

111

)()()()( tztytxtQ

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

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?

123 ttt

44434241

34333231

24232221

14131211

mmmm

mmmm

mmmm

mmmm

zyx

zyx

zyx

zyx

GGG

GGG

GGG

GGG

444

333

222

111

P0

P1

P2

P3

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

Bézier• No caso de Bézier, quais são os valores de M11 a M44?

123 ttt

44434241

34333231

24232221

14131211

mmmm

mmmm

mmmm

mmmm

3

2

1

0

P

P

P

P

)(tQ

33

22

12

03 )1(3)1(3)1()( PtPttPttPttQ

Lembrando que: (a-b)3 = a3 – 3a2b + 3ab2 – b3 e (a-b)2 = a2 – 2ab + b2

0001

0033

0363

1331

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

Últimas observações Bézier

• Fecho convexo

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

Ú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?

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

Hermite

• 4 constrains geométricos:– 2 pontos e suas 2 tangentes:

4

1

4

1

R

R

P

P

GH

P1

R1

R4

P4

0001

0100

1233

1122

HM

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

Hermite• Hermite Blending Function

• Familia de curvas alterando magnitude e direção de R1

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

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.

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

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

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

Superfícies paramétricas

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

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:

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

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

)(

)(

)(

)(

)(),(

4

3

2

1

tG

tG

tG

tG

MStGMStsQ

GMTtQ )(

GMSsQ )(

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

• 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:

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

Superfícies de Bèzier

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

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)

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

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

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

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:

10001

0033

0363

1331

0001

0033

0363

1331

1),(

),(

2

3

3,32,31,30,3

3,22,21,20,2

3,12,11,10,1

3,02,01,00,0

23

t

t

t

PPPP

PPPP

PPPP

PPPP

ssstsx

PBTBStsx TT

1

1),(2

3

3,32,31,30,3

3,22,21,20,2

3,12,11,10,1

3,02,01,00,0

23

t

t

t

MMMM

MMMM

MMMM

MMMM

ssstsx

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

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

OKNão Não

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

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

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

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

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

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

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

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

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

Normal

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

s = α

t = β

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

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

i

m

j

mj

s

ni

jits

tBds

dB

s 0 0,

,

Px

n

i

m

j t

mjn

ijits dt

dBsB

t 0 0,

,

Px

n

nn

xxn

ˆ ,, tsts ts

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

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

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

Representação Geométrica Explícita

Referências das transparências:– Prof. Paulo Roma– Prof. Thomas Ottmann e Khaireel A. Mohamed–

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

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)

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

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)

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

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.

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

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 EulerF + V = A + 2

• Adjacência de vértices, arestas e faces é chamada de topologia da superfície.

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

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

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

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

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

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

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

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!

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

9 tipos de Relacionamentos de Adjacência

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

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.

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

Sugestões?

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

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.

),,(),...,,,(),,,( 222111 nnn zyxzyxzyxP

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

Desenho da Malha

• Cada aresta é desenhada duas vezes, pelos duas faces que a compartilham.

• Não é bom para plotadoras ou filmes.

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

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.

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

Exemplo

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

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.

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

Exemplo

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

Outra linha de solução...

• DCEL: Doubly-Connected Edge List – winged-edge– radial-edge– half-edge

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

Winged-Edge

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

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

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

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!!!

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

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

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

Código da estrutura Half-edge

H_Edge

f eNext

ePrev

vOrig eTwin

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

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

DCEL Example: Planar SubdivisionVertex

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)

hEdgee1_3

e2_3

e3_4

e4_9

e5_9

e6_7

e7_8

e8_6

e9_11

0 1 2 3 4 5 6 7 8 9 10 110

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

v1

v2

v3

v4

v5v6

v7

v8v9v10

v11

f1

f3

f2

f4

((Fazer exemplo no quadro))

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

DCEL Example: Planar SubdivisionHalf-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

vOrigv1

eTwine3_1

ff1

eNexte3_4

ePreve3_1

0 1 2 3 4 5 6 7 8 9 10 110

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

v1

v2

v3

v4

v5v6

v7

v8v9v10

v11

f1

f3

f2

f4

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

DCEL Example: Planar SubdivisionHalf-Edge

e10_11

e3_10

e6_7

e8_6

e7_8

e8_7

e7_6

e6_8

vOrigv10

eTwine11_10

ff3

eNexte11_9

ePreve3_10

Facef1

f2

f3

f4

eOuterCompNULL

eInnerCompse1_3

0 1 2 3 4 5 6 7 8 9 10 110

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

v1

v2

v3

v4

v5v6

v7

v8v9v10

v11

f1

f3

f2

f4

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

Half-edge data structure

• Example:Vertex listV coord he0 0 0 0 01 1 0 0 12 1 1 0 23 …..

01

23

45

76

Face listf e0 e01 e82 …

Half-edge listhe to_vertex next_he opposite_he face0 1 1 6 01 2 2 11 02 3 3 15 03 0 0 18 0

9

10

0

1

23

8

11

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

Exemplos de questões de prova

this

P1, 2011.1

P3, 2011.1

P1, 2010.2

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

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)

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

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)