Introdução à Computação Gráfica Geometria Adaptação: Autoria: João Paulo Pereira António Costa Claudio Esperança Paulo Roma Cavalcanti Pontos e Vectores (2D) • Ponto: Denota posição no plano • Vector: Denota deslocamento, isto é, inclui a noção de direcção e magnitude • Ambos são normalmente expressos por pares de coordenadas (em 2D) mas não são a “mesma coisa” P = ( xP , y P ) r v = ( xv , yv ) y P v 01-03-2007 x 2 Operações com Pontos e Vectores (2D) • Soma de vectores y t=v+u u • Multiplicação de vector por escalar v u=2v • Subtracção de pontos x v=Q–P • Soma de ponto com vector Q=P+v y v v y P v Q x x 01-03-2007 3 Transformações • Transformação é uma função que faz corresponder pontos de um espaço Euclidiano a outros (ou possivelmente os mesmos) pontos do mesmo espaço • Se uma transformação é linear, então Se um conjunto de pontos pertence a uma recta, depois de transformados eles também pertencerão a uma recta Se um ponto P guarda uma relação de distância com dois outros pontos Q e R, então essa relação de distância é mantida pela transformação • Transformação faz corresponder a origem à origem? Sim: Transformação Linear Não: Transformação Linear Afim: Translações são permitidas 01-03-2007 4 Transformações Lineares em 2D • Uma transformação linear  x' = ax + by   y ' = cx + dy • Uma transformação linear afim  x' = ax + by + e   y ' = cx + dy + f 01-03-2007 5 Forma Matricial • Mais conveniente para uso em computador. Sejam  x P=   y  x' P' =    y ' a b  A=  c d   e D=  f • Então uma transformação linear afim pode ser escrita T (P ) = P’ em que P' = A × P + D 01-03-2007 6 Transformação de Vectores • Um vector não está aplicado a um ponto no espaço • Uma transformação linear afim aplicada a um vector não inclui translação • Demonstração: Seja V um vector e V’ a sua imagem sob a transformação linear afim. Então: V = Q − P ⇔ V ' = Q '− P ' V ' = Q '− P' = ( A × Q + D) − ( A × P + D) = A × (Q − P) = A ×V 01-03-2007 7 Coordenadas Homogéneas • A transformação de vectores é operacionalmente diferente da de pontos • Coordenadas homogéneas permitem unificar o tratamento • Problema é levado para uma dimensão superior: Coordenada extra w = 0 para vectores e w = 1 para pontos Termos independentes formam uma coluna extra na matriz de transformação  x' a b  y ' =  c d     1  0 0 01-03-2007 e   x    f  ×  y 1   1   x' a b  y ' =  c d     0  0 0 e   x    f  ×  y 1   0  8 Coordenadas Homogéneas Interpretação y Plano w=0 Plano w=1 w 01-03-2007 x 9 Modelação de Transformações • Uma t.l.a. em 2D pode ser definida se dispusermos da imagem de 3 pontos do domínio y P P’ Q R R’ Q’  x P ' = a.x P + b. y P + e  y = c.x + d . y + f P P  P'  xQ ' = a.xQ + b. yQ + e   yQ ' = c.xQ + d . yQ + f  x R ' = a.x R + b. y R + e   y R ' = c.x R + d . y R + f x 01-03-2007 10 Sistemas de coordenadas • Um sistema de coordenadas para Rn é definido por um ponto (origem) e n vectores • Ex.: Seja um sistema de coordenadas para R2 definido pelo ponto O e os vectores X e Y. Então Um ponto P é dado por coordenadas xP e yP tais que P = x P . X + y P .Y + O Um vector V é dado por coordenadas xV e yV tais que V = xV . X + yV .Y 01-03-2007 11 Mudança de Sistema de Coordenadas • Se estabelecemos um outro sistema (ex.: Q/T/U), como calcular as novas coordenadas em função das antigas? T P Y Q t PT + u PU x P X + y PY U O 01-03-2007 X 12 Mudança de Sistema de Coordenadas • Como calcular as coordenadas de um ponto P = (xP, yP) em O/X/Y dadas as coordenadas de P em Q/T/U, isto é, (tP, uP) ? P = tP.T + uP.U + Q = tP.(xT .X + yT .Y ) + uP.(xU .X + yU .Y ) + ( xQ.X + yQ.Y + O) = (tP.xT + uP.xU + xQ ).X + (tP. yT + uP. yU + yQ ).Y + O Logo, x P = t P .xT + u P .xU + xQ y P = t P . y T + u P . yU + y Q 01-03-2007 13 Mudança de Sistema de Coordenadas • Matricialmente:  x P   xT y  = y  P  T xU   t P   xQ  × +   yU  u P   yQ  • Usando coordenadas homogéneas:  xP   xT  yP  =  y    T 1   0 xU yU 0 xQ   t P  yQ  × u P    1  1  • Para resolver o problema inverso: 01-03-2007  t P   xT u P  =  y    T 1   0 xU yU 0 −1 xQ   xP  yQ  ×  y P    1  1  14 Transformações em 3D • Vectores e pontos em 3D  Px  P  P =  y  Pz    1 Vx  r V y  V =  Vz    0 • Transformação linear afim a b d e T = g h  0 0 01-03-2007 c f i 0 j k  l  1 15 Transformações Rígidas • Não modificam a forma (dimensões/ângulos) do objecto • São compostas por uma rotação e uma translação Submatriz de Vector de Rotação Translação a b d e T = g h  0 0 01-03-2007 c f i 0 j k  l  1 16 Translação 1 0 T = 0  0 y 0 0 tx  1 0 t y   I 3 t  =   0 1 tz 0 1    0 0 1 x z 1 0 P' = T × P =  0  0 • As translações são comutativas: P+t+v=P+v+t 01-03-2007 0 0 t x   Px   Px + t x  1 0 t y   Py   Py + t y  × = P+t =      0 1 tz Pz Pz + t z      0 0 1  1   1  17 Rotação em torno do eixo Z • Podemos ver que ao vector (1,0,0)T corresponde (cos α, sen α, 0)T e que ao vector (0,1,0)T corresponde (- sen α, cos α, 0)T y’ y y cos α sen α x z 01-03-2007 x’ α - sen α x cos α 18 Rotação em torno do eixo Z • Outra maneira de ver: Px = r cos α Py = r sin α y P’ r 01-03-2007 Sabemos que θ r α Px′ = r cos(α + θ ) Py′ = r sin(α + θ ) Então Px′ = r cos α cos θ − r sin α sin θ Py′ = r cos α sin θ + r sin α cos θ P x Resultando que Px′ = Px cos θ − Py sin θ Py′ = Px sin θ + Py cos θ 19 Rotação em torno dos eixos coordenados • Rotação em torno de Z é dada pela matriz cos θ  sin θ   0   0 − sin θ 0 0 0 0 1 0  0 1 cos θ 0 0 • Do mesmo modo, em torno dos eixos Y e X  cos θ  0  − sin θ   0 01-03-2007 0 sin θ 1 0 0 cos θ 0 0 0 0 0  1 0 1 0 cos θ  0 − sin θ  0 0 0 sin θ cos θ 0 0 0 0  1 20 Rotações em geral • Qualquer rotação pode ser definida por um eixo de rotação dado pelo vector unitário u = (x, y, z)T e um ângulo de rotação α • Seja S a matriz  0 −z y  S= z 0 − x   0  − y x • Então a submatriz de Rotação M é dada por M = uu T + (cos α )( I − uu T ) + (sinα )S 01-03-2007 21 Inclinação (“shear (“shear”) ”) • É uma transformação de deformação onde um eixo é “entortado” em relação aos restantes z z y z´ y x x • Se o vector unitário do eixo z é transformado em [Shx Shy 1 0]T, então a matriz de transformação é dada por 01-03-2007 Tinclinação 1 0 = 0  0 0 Sh x 1 0 Sh y 1 0 0 0 0  0  1 22 Escalamento • Especificado por três factores (Sx, Sy , Sz) que multiplicam os vectores unitários x, y, z • Escalamento não é uma transformação rígida • Escalamento uniforme (Sx = Sy = Sz) é uma operação ortogonal ou homotética, isto é, preserva os ângulos • Para obter reflexão em torno do plano y=0, usar os factores de escala (1, -1, 1) y y Tescala x z 01-03-2007 S x 0 = 0  0 0 0 Sy 0 0 Sz 0 0 0 0 0  1 x z 23 Composição de transformações em 3D • Na nossa notação, usamos a pré-multiplicação: P’ = T x P • Para compor 2 transformações temos: Se P’ = T1 x P e P’’ = T2 x P’ , então, P’’ = T2 x T1 x P T2 × T1 T1 01-03-2007 T2 24 Geometria Afim • Composta dos elementos básicos escalares pontos - denotam posição vectores - denotam deslocamento (direcção e magnitude) • Operações escalar vector = vector vector + vector ou vector – vector = vector ponto – ponto = vector ponto + vector ou ponto – vector = ponto 01-03-2007 25 Combinações Afim • Maneira especial de combinar pontos α1P1 + α 2 P2 + ... + α n Pn n onde ∑αi = 1 i =1 • Para 2 pontos P e Q poderíamos ter uma combinação afim R = (1 – α)P +αQ = P +α(Q – P) P P R= P + α(Q – P) α<0 0<α<1 Q 01-03-2007 Q α>1 26 Combinações Convexas • Combinações afim onde se garante que todos os coeficientes αi são positivos (ou nulos) • Usa-se esse nome porque qualquer ponto que é uma combinação convexa de n outros pontos pertence à envolvente convexa desses pontos P2 P3 01-03-2007 P1 Q P4 P5 27 Geometria Euclidiana • Extensão da geometria afim pela adição de um operador chamado produto interno • Produto interno é um operador que transforma um par de vectores num escalar. Tem as seguintes propriedades: Positividade : (u,u) ≥ 0 e (u,u) = 0 sse u=0 Simetria: (u,v) = (v,u) Bilinearidade: (u,v+w)= (u,v)+ (u,w) e (u,αv)= α(u,v) 01-03-2007 28 Geometria Euclidiana • Normalmente usamos o produto escalar como operador de produto interno: r r d u ⋅ v = ∑ ui vi i =1 • Comprimento de um vector é definido como: r r r v = v ⋅v • Vector unitário (normalizado): r v vˆ = r v 01-03-2007 29 Geometria Euclidiana • Distância entre dois pontos P e Q = |Q – P| • O ângulo entre dois vectores pode ser determinado por r r  r r −1 u ⋅ v ângulo ( u , v ) = cos  r r  = cos −1 ( uˆ ⋅ vˆ ) u v  • Projecção ortogonal: dados dois vectores u e v, deseja-se decompor u na soma de dois vectores u1 e u2 tais que u1 é paralelo a v e u2 é perpendicular a v r r r u ⋅v r r r r u1 = r r v u2 = u − u1 v ⋅v 01-03-2007 u2 u u1 v 30 Produto Vectorial (3D) • Permite achar um vector perpendicular a outros dois vectores • Útil na construção de sistemas de coordenadas r r r u y v z − u z v y  i j k v u×v r r   u × v =  u z vx − u x vz  = u x u y u z u . u x v y − u y v x  vx v y v z   • Propriedades (assume-se u, v linearmente independentes): 01-03-2007 Antisimetria: u × v = – v × u Bilinearidade: u × (αv) = α (u × v) e u × (v + w) = (u × v) + (u × w) u × v é perpendicular tanto a u quanto a v O comprimento de u × v é igual a área do paralelogramo definido por u e v, isto é, | u × v | = | u | | v | sin θ 31 Orientação • Orientação de 2 pontos em 1D P1 < P2 , P1 = P2 ou P1 > P2 • Orientação de 3 pontos em 2D O percurso P1 , P2 , P3 é feito no sentido dos ponteiros do relógio, no sentido contrário ou são colineares Or (P1, P2, P3) = -1 P1 Or (P1, P2, P3) = 0 Or (P1, P2, P3) = +1 P3 P3 P2 P3 01-03-2007 P2 P1 P2 P1 32 Orientação • Orientação de 4 pontos em 3D O percurso P1 , P2 , P3 , P4 define um parafuso segundo a regra da mão direita, mão esquerda ou são coplanares Or (P1, P2, P3, P4) = +1 P3 P1 P4 01-03-2007 • O conceito pode ser estendido a qualquer número de dimensões ... P2 33 Determinação da Orientação • A orientação de n+1 pontos num espaço n-dimensional é dada pelo sinal do determinante da matriz cujas colunas são as coordenadas homogéneas dos pontos com o 1 em primeiro lugar  1  Or2 ( P1 , P2 , P3 ) = sign  x1 y  1 01-03-2007 1 x2 y2 1   x3  y3     Or3 ( P1 , P2 , P3 , P4 ) = sign     1 1 1 x1 x2 x3 y1 z1 y2 z2 y3 z3 1   x4  y4   z 4  34