Você está na página 1de 7

Captulo 5 (Foley & van Dam)

Geometria e Computao Grfica

Programao independente de coordenadas


Tradicionalmente um livro de CG introduz um sistema de coords, vetores, matrizes, seguido por frmulas que envolvem diversas matrizes 4x4. Embora conveniente, se torna difcil ao programador "ver" o que ele est programando. Tony DeRose: desenvolveu um mtodo de programao geomtrica independente de coordenadas, o que simplifica o raciocnio geomtrico, ou seja, ao invs de matrizes, utilizaremos operadores geomtricos de alto nvel (esse sim, so implementados com matrizes).

CG trabalha basicamente com a geometria de linhas e objetos lineares no espao 3D. Exemplos:
interseces geomtricas orientao transformao mudana de coordenadas

Geometrias
geo = terra, metria = medida Agricultura, pirmides, etc... Euclides: [sec 3 AC] formalizou a geometria a partir de alguns axiomas (sem sistema de coords). Descartes: [sec 17] introduz um sistema de coords, permitindo que conceitos geomtricos fossem expressos matematicamente. Sec 19: geometrias no Euclidianas [Lobachevski e Gauss], sugerem outros sistemas onde se aplicam outros axiomas. Afim, euclidiana, e projetiva.

Geometria Afim

Elementos bsicos
escalares (nmeros) pontos: usados para indicar uma posio vetores livres (ou simplesmente vetores): possuem direo e magnitude, mas nenhuma posio vetor nulo ou zero para tornar clara a inteno do programador exemplo escalar * vetor (ok) escalar * ponto (?)

Por que distinguir pontos de vetores?

Geometria e Programao Geomtrica

Programao geomtrica
Existem muitas reas da Cincia da Computao que exigem o uso de entidades geomtricas
Computao grfica CAD - computer aided design Robtica Viso computacional GIS - geografic information systems

Convenes
   

Combinaes Afins
        
Existe uma combinao particular entre pontos que consideraremos vlida, denominada combinao afim.

pontos: letras romanas maisculas vetores: letras romanas minsculas escalares: letra grega Combinaes:

v = e . v , ou v = v / e (multiplicao por escalar) v = v + v ou v = v - v (adio de vetores) v = p - p (diferena entre pontos) p = p + v ou p = p - v (adio entre p e v)

em geral, sobrepostos com uma flecha

Solues

Combinao convexa

Definies
Combinao afim: dada uma seqncia de pontos P1 a Pn, uma combinao afim uma somatria da forma: onde a somatria de i deve ser 1. Combinao convexa: uma combinao afim, onde i so todos no negativos.

informalmente, tomaremos a liberdade de escrever expresses do tipo: R = (P + Q) / 2


1.P1 + 2.P2 + .. + n.Pn

Exerccios:
Dados 3 pontos tridimensionais no colineares, qual a unio de todas as suas combinaes afins? Resposta: todo o plano contendo os 3 pontos Qual a unio de todas as suas combinaes convexas? Resposta: o tringulo (incluindo o seu interior) formado pelos 3 pontos.

Geometria Euclidiana
A geometria afim no possui um mecanismo para tratar ngulos e distncias. A geometria euclidiana uma extenso da geometria afim, que inclui o operador de produto interno (produto escalar) O produto interno de dois vetores resulta em um escalar, e ser denotado <u.v>. Propriedades:

Produto escalar de 2 vetores


O produto escalar <u.v> = ui.vi Comprimento de um vetor: |v| = sqrt[ <v.v> ] Normalizao: dado um vetor no nulo v, a normalizao de v resulta em um vetor de comprimento unitrio, de mesma direo Distncia entre pontos: dist(P, Q) = |P - Q| ngulo entre 2 vetores no nulos:

 

Positividade: <u.u> >= 0 e <u.u> = 0 iff u = 0; Simetria: <u.v> = <v.u> Bilinearidade: <u. v+w> = <u.v. + <u.w> e <u. v> = <u.v>

  

Dado dois pontos Q e P, qual o seu ponto mdio R? Mais genrico: qual o ponto R que divide PQ nas propores e 1-? { entre [0,1]} R = P + (Q - P) R = (1 - )P + Q (escala de Q-P) (mdia ponderada)

definida para no intervalo [0,1]

v' = v / |v|

= ang(u,v) = cos-1(<u.v> / |u|.|v|) = cos-1(<u' . v'>) cos = <u'.v'>

Outras propriedades

Sistema de coordenadas

Ortogonalidade
u e v so ortogonais (ou perpendiculares) se <u.v> = 0

Projeo ortogonal: dados um vetor u e um vetor no nulo v, em geral conveniente decompor u como a soma de dois vetores u = u1 + u2, onde u1 paralelo a v e u2 ortogonal a v verifique que u2 ortogonal a v. u1 chamado de projeo ortogonal de u sobre v.

u1 = v <u.v> / <v.v> (pode-se ignorar <v.v> se |v| = 1) u2 = u - u1

Sistema de coordenadas o mecanismo utilizado para a definio dos objetos primitivos da geometria euclidiana (ponto, vetor, etc). Como representar pontos e vetores no espao afim?

lgebra linear: uso de 3 vetores linearmente independentes (i, j, k): v = 0 i + 1 j + 2 k

Recordao de lgebra linear


Os vetores (i,j,k) formam uma base. A base mais comum utiliza vetores unitrios ortogonais entre si: (1,0,0) (0,1,0) (0,0,1) chamada de base ortonormal. A tripla (0,1,2) define a coordenada cartesiana do vetor v. Porm, 3 vetores apenas no so suficientes para determinar a posio de um ponto.
necessrio definirmos uma origem O para o sistema de coordenada.

Frame de coordenadas
Um frame de coordenadas em espaos afins ser definido por uma base ortonormal e um ponto chamado de origem, de forma que um ponto P em 3D pode ser representado como:
P = 0 i + 1 j + 2 k + O

Exemplos

Coordenadas Homogneas

Observaes
Primeiro, um axioma, para facilitar nossa forma de notao:
0 . P = vetor nulo 1.P=P

Para representar pontos e vetores em um espao d-dimensional, utilizaremos vetores de comprimento d+1.
pontos tem a ltima coordenada = 1 vetores tem a ltima coordenada = 0

Ateno: "vetor" pode ser usado como


vetor livre: entidade geomtrica vetor de coordenada: forma de representao que pode ser usada para vetores livres e para pontos.

Esse tipo de representao denominado coordenadas homogneas de um ponto ou vetor relativo a um frame F.

Propriedades de coord. homogneas


Sistemas de coord. alternativos


A escolha de 1/0 para ponto/vetor no arbitrria, ela possui algumas propriedades interessantes
v = P - Q: a ltima coordenada se cancela seja U e V pontos ou vetores. Aps vrias operaes da forma U-V, U+V ou U: se a ltima coord = 0, o resultado um vetor se a ltima coord = 1, o resultado um ponto caso contrrio, no uma operao afim vlida.

Existem dois objetivos conflitantes em qualquer sistema de prog. geomtrica:


pontos e vetores devem ser representados com respeito a algum sistema universal de coordenadas, que permita trabalhar com pontos e vetores simplesmente modificando suas coordenadas; em geral conveniente representar pontos de acordo com um sistema de coordenadas local sistema de coord. universal: frame padro fixo, ortonormal: e0, e1, e2, O

Isso permite grande flexibilidade, como combinaes do tipo:

centride = (P+Q+R)/3

Exemplo de mudana de coordenadas


Nosso exemplo mostrava que

Nosso objetivo encontrar os escalares 0, 1 , 2 tal que P = 0G.e0 + 1G.e1+ 2G.O Como F um frame, os elementos de G podem ser descritos em funo de F

G.e0 [F] =(-2,-1,0); G.e1 [F] = (0,1,0), G.O [F] = (5, 1, 1) sistema linear com 3 equaes e 3 incgnitas soluo (0, 1 , 2) = (1,2,1)

dado um ponto P[F] = (0,1,2)T, 2=1, mas manteremos como incgnita para que as expresses funcionem para vetores livres tambm. Como determinar P[G] = (0, 1 , 2)T?

Transformao Afim
uma classe de transformaes que inclue:

Exemplos

rotao translao escala (uniforme e no uniforme) reflexo shearing

Propriedades:

todas as transformaes preservam combinaes afins entre pontos R = (1 - )P + Q => T(R) = (1-)T(P) + T(Q)

Rotao

P[F] = (3,2,1) e w[F]=(2,1,0) como determinar suas coordenadas no frame G computacionalmente?

Conveno:

Mudana de coordenadas: generalizao


Seja F o frame padro Um frame arbitrrio G pode ento ser descrito com relao a F como:
Ge0 [F] = (g00, g01, 0)T Ge1 [F] = (g10, g11, 0)T GO [F] = (g20, g21, 1)T

Translao

Escala Uniforme

Escala no Uniforme

Reflexo

Cisalhamento

Representao matricial

Transformaes

Translao
translao por um vetor v mapeia qualquer ponto P para P + v. vetores no so afetados por translao

As combinaes afins so preservadas, portanto:


R = 0F.e0 + 1F.e1 + 2F.O => T(R) = 0T(F.e0 )+ 1T(F.e1 )+ 2T(F.O) Assim, se R um ponto ou vetor no frame F e sabemos a transformao dos elementos do frame, ento sabemos qual a transformao de R, ou T(R)[F] = (T(F.e0 )[F] | T(F.e1 )[F] | T(F.O)[F]) (0 1 2) ou seja, aplicar uma transformao afim a um ponto/vetor equivale a multiplicar suas coordenadas por uma matriz, formada pela transformao dos elementos do frame.

Mudana de escala
Mudana de escala uniforme feita com relao a um ponto. Consideraremos a origem do frame padro. dado um escalar , esta transformao mapeia um objeto (ponto ou vetor) de coordenadas (0,1 ,2 ,3 )T para (0,1 ,2 ,3 )T para mudana no uniforme: (00,11 ,22 ,3 )T

Transformaes
Reflexo
2D: dada uma linha em um plano, a reflexo troca os pontos de lado simetricamente ao longo dessa linha. 3D: dado um plano em 3D, a reflexo troca os pontos de lado simetricamente ao longo desse plano. Pode ser considerado como um caso particular de escalonamento, em que o fator de escala negativo

Shearing

Rotao
definida para um ponto ou vetor, fixos no espao. casos bsicos: rotao na origem, ao redor dos vetores bases, segundo a regra da mo direita.

Transformaes
Shearing
xy-shear: o ponto P = (px, py, pz, 1)T transladado pelo vetor pz(shx, shy, 0, 0)T, esse vetor ortogonal ao eixo z e seu comprimento proporcional a coordenada z do ponto P. analogamente para xz e yz-shear.

Transformaes
Transformaes complexas podem ser resolvidas por: composies de transformaes simples determinao da imagem dos elementos da base. em geral, esse mtodo mais simples Casos especiais: Transformaes rgidas ou Euclidianas: so transformaes que preservam ngulos e comprimentos. Exemplo: translao, rotao e reflexo. Transformaes ortogonais ou homotticas: preservam ngulos, mas no comprimentos. Exemplo: escalonamento uniforme.

Composio de transformaes
transformaes afins so fechadas sob composio, ou seja, composies de transformaes afins resulta em uma transformao afim. T, S transformaes: (T.S)(P) = (T(S(P))), ou em notao matricial: MTMSP

Transformaes
Rotao ao redor de z
a origem e o vetor z no so alterados o vetor unitrio x mapeado para (cos, sin, 0, 0)T o vetor unitrio y mapeado para (-sin,cos, 0, 0)T semelhante para os demais vetores de base

pense em shearing como uma transformao que mapeia um cubo em um paralelogramo (fixe uma face do cubo, e desloque a face oposta, deformando as faces laterais).

Outros operadores geomtricos


Produto Vetorial

Vimos at agora as operaes:


mudana de sistemas de coordenadas transformadas afins

Outros operadores bastante utilizados:


produto vetorial cruzado dado dois vetores, como determinar um terceiro vetor ortogonal aos dois primeiros? orientao: dado 2 reais p e q, h 3 possibilidades de ordenao, (p > q) ou (p < q) ou (p = q), o que permite a definio de um operador de orientao Or(p,q) que retorna 1, 0, ou 1 dependendo da ordem de p e q.

O produto vetorial comumente definido no espao 3D, pois ele se aplica apenas a vetores e no a pontos. Dado 2 vetores u, v, o produto vetorial definido como:

Propriedades do produto vetorial

Simetria reversa: u x v = -( v x u)
uxu=0

u x (v) = (u x v), u x (v + w) = (u x v) + (u x w)

Orientao
Dados dois nmeros reais p e q, uma funo possvel de orientao pode ser dado por: Or(p,q) = sign(q - p) Como estender esse conceito para dimenses superiores? Em um espao d-dimensional, a orientao de (d+1) pontos pode ser definida pelo sinal do determinante da matriz composta pelas suas coordenadas homogneas.

Interpretao
Para um plano, a orientao de 3 pontos (P,Q,R) +1 se o tringulo PQR orientado no sentido anti-horrio, -1 se orientado no sentido horrio, e 0 se forem colineares. Em 3D, uma orientao positiva dos pontos PQRS significa que eles seguem uma espiral direita (mo direita), e zero se forem coplanares. Porque a coordenada homognea primeiro?
caso contrrio o sinal de determinante seria alternado para dimenses pares e impares

No associativo: ao contrrio de outros produtos em lgebra, o produto vetorial no associativo: (u x v) x w != u x (v x w) Bilinearidade:

u x v = (uyvz - uzvy, uzvx-uxvz, uxvy-uyvx)T definio vale para um par de vetores no espao 3D e : vetores da base

Determinante: u x v = (e | u | v) T

Outras propriedades do PV
Perpendicularidade: (u x v) perpendicular a u e a v (u e v linearmente independentes). ngulo e rea: |u x v| = |u| |v| sin
ngulo entre u e v: em geral o PV no usado para calcular pois o produto escalar mais simples de calcular. |u x v| igual a rea do paralelograma cujos lados so dados por u e v.

Interseco de linhas

O que voc deve saber


Dado dois segmentos de linha PQ e RS em um plano, determinar se eles se intersectam. possveis problemas: linhas paralelas, junes, linhas colineares, etc. simplificao: apenas interseces prprias (IP), com um nico ponto em comum no interior dos segmentos. se 3 pontos forem colineares, os segs no formam uma IP. As linhas se cruzam iff P e Q se encontram em lados opostos de RS, e R e S se encontram em lados opostos de PQ (Or(P,Q,R)*Or(P,Q,S)<0) && (Or(R,S,P)*Or(R,S,Q)<0)

Programao geomtrica
independente de coordenadas Afim Euclidiana

Geometrias Frame de Coordenadas Coordenadas Homogneas Transformaes: translao, rotao, shear, escala, reflexo

Você também pode gostar