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