INF 1366 – Computação Gráfica Interativa Transformações Alberto B. Raposo [email protected] http://www.tecgraf.puc-rio.br/~abraposo/INF1366 Alberto Raposo – PUC-Rio Sistemas de Coordenadas • Objetos em Computação Gráfica possuem descrições numéricas (modelos) que caracterizam suas formas e dimensões. • Esses números se referem a um sistema de coordenadas, normalmente o sistema Cartesiano de coordenadas: x, y e z. • Em alguns casos, precisamos de mais de um sistema de coordenadas: – Um sistema local para descrever partes individuais de uma máquina, por exemplo, que pode ser montada especificando-se a relação de cada sistema local das várias peças. John Dingliana, 2004 Alberto Raposo – PUC-Rio Transformações • Em alguns casos, objetos exibem simetrias, de modo que apenas parte deles precisa ser descrita, pois o resto pode ser construído por reflexão, rotação e/ou translação do pedaço original. • Um projetista pode querer visualizar um objeto sob vários pontos de vista, rotacionando-o ou movendo uma câmera virtual. • Em animação, um ou mais objetos podem precisar se mover em relação ao outro, de modo que seus sistemas de coordenadas locais devam ser transladados e rotacionados ao longo da animação. John Dingliana, 2004 Alberto Raposo – PUC-Rio Exemplo 1 • Partes do objeto definidas em sistemas de coordenadas locais: etc... • Objeto “montado” por meio de transformação das partes constituintes: Alberto Raposo – PUC-Rio John Dingliana, 2004 Exemplo 2 5 etapas de uma animação de um cubo girando • A cada quadro da animação, o objeto é transformado (rotação, nesse caso). • O objeto também poderia ser transformado pela mudança de tamanho (escalamento), sua forma (deformação), ou sua localização (translação). • Outros efeitos de animação são obtidos sem alterar o objeto em si, mas a forma como ele é visualizado (transformação window to viewport) a cada quadro (por exemplo, um zoom). John Dingliana, 2004 Alberto Raposo – PUC-Rio Transformações • Há 2 formas de se enxergar uma transformação – Uma Transformação de Objeto altera as coordenadas de cada ponto de acordo com alguma regra, mantendo o sistema de coordenadas inalterado. – Uma Transformação de Coordenadas produz um sistema de coordenadas diferente, e então representa todos os pontos originais nesse novo sistema. • Cada maneira tem suas vantagem, e são intimamente relacionadas. John Dingliana, 2004 Alberto Raposo – PUC-Rio TRANSFORMAÇÃO DE OBJETO .4, 2 1,1 John Dingliana, 2004 TRANSFORMAÇÃO DE COORDENADAS (1,1) (1,1) Alberto Raposo – PUC-Rio Classes de Transformações • • • • • Euclidianas / Corpos Rígidos de Similaridade Lineares Afins Projetivas Alberto Raposo – PUC-Rio Transformações Euclidianas • Preservam distâncias • Preservam ângulos Identidade Translação Corpos Rígidos / Euclidianas Translação Identidade Rotação Rotação Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler Transformações de Similaridade • Preservam ângulos Similaridades Escalamento Isotrópico Euclidianas Identidade Translação Escalamento Isotrópico Rotação Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler Transformações Lineares Escalamento Reflexão Shear Similaridades Linear Euclidianas Escalamento Identidade Translação Rotação Alberto Raposo – PUC-Rio Escalaento Isotrópico Reflexão Shear MIT EECS 6.837, Durand and Cutler Transformações Lineares • L(p + q) = L(p) + L(q) • L(ap) = a L(p) MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio Transformações Afins • Preservam linhas paralelas Afins Similaridades Linear Euclidianas Escalamento Identidade Translação Rotação Alberto Raposo – PUC-Rio Escalaento Isotrópico Reflexão Shear Transformações Projetivas • preservam linhas Projetivas Afins Similaridades Linear Euclidianas Escalamento Identidade Translação Rotação Alberto Raposo – PUC-Rio Escalaento Isotrópico Perspectiva Reflexão Shear Perpectiva Perspectiva é um dos fatores que dá “aparência 3D” às cenas Alberto Raposo – PUC-Rio Transformações 2D Coordenadas de modelagem y Escalamento Translação D. Brogan, Univ. of Virginia x Escalamento Rotação Translação Alberto Raposo – PUC-Rio Coordenadas do mundo Transformações 2D Coordenadas de modelagem y x Localização inicial em (0, 0) com eixos x e y alinhados Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Transformações 2D Coordenadas de modelagem y x Scale .3, .3 Rotate -90 Translate 5, 3 Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Transformações 2D Coordenadas de modelagem y x Scale .3, .3 Rotate -90 Translate 5, 3 Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Transformações 2D Coordenadas de modelagem y x Scale .3, .3 Rotate -90 Translate 5, 3 Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia VRML: Nó Transform Alberto Raposo – PUC-Rio Exemplo em VRML The Annotated VRML Reference Alberto Raposo – PUC-Rio Exemplo em VRML Alberto Raposo – PUC-Rio X3D – Nó Transform Alberto Raposo – PUC-Rio Exemplo em X3D Alberto Raposo – PUC-Rio A ordem das transformações faz diferença! Alberto Raposo – PUC-Rio Escalamento • Escalar uma coordenada significa multiplicar cada um de seus componentes por um valor escalar • Escalamento isotrópico significa que esse valor escalar é o mesmo para todos os componentes 2 Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Escalamento • Escalamento não-isotrópico: valores escalares diferentes por componente: X 2, Y 0.5 • Como representar o escalamento na forma de matrizes? Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Escalamento • Operação de escalamento: • Na forma matricial: D. Brogan, Univ. of Virginia x' ax y' by x' a 0 x y' 0 b y Matriz de escalamento Alberto Raposo – PUC-Rio Rotação 2D QX Rcos( ) Qy Rsin( ) John Dingliana, 2004 PX R cos( ) Py R sin ( ) Q [1] [2] [3] [4] cos() cos () cos () sin() sin() PY sin() sin() cos () cos () sin() P R PX [1] Qx Rcos ( ) cos ( ) Rsin ( ) sin ( ) Substituindo de [3] e [4]… Qx Pxcos ( ) Py sin ( ) Similarmente, a partir de [2]… Alberto Raposo – PUC-Rio Qy Pycos ( ) Px sin ( ) Rotação 2D (x’, y’) (x, y) Alberto Raposo – PUC-Rio x’ = x cos() - y sin() y’ = x sin() + y cos() D. Brogan, Univ. of Virginia Rotação 2D • Na forma matricial: x' cos sin x y' sin cos y • Embora sin() e cos() sejam funções nãolineares de , – x’ é combinação linear de x e y – y’ é combinação linear de x e y Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Translação 2D y tx t t y y x t x x t x x' x y ' y t y t y y x M. Gattass, PUC-Rio Alberto Raposo – PUC-Rio Transformações 2D Básicas • Translação: – x’ = x + tx – y’ = y + ty • Escalamento: – x’ = x * sx – y’ = y * sy • Rotação: – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ Alberto Raposo – PUC-Rio Podem ser combinadas com álgebra simples D. Brogan, Univ. of Virginia Transformações 2D Básicas • Translação: – x’ = x + tx – y’ = y + ty • Escalamento: – x’ = x * sx – y’ = y * sy • Rotação: – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Transformações 2D Básicas • Translação: – x’ = x + tx – y’ = y + ty • Escalamento: – x’ = x * sx – y’ = y * sy (x,y) (x’,y’) • Rotação: – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ Alberto Raposo – PUC-Rio x’ = x*sx y’ = y*sy D. Brogan, Univ. of Virginia Transformações 2D Básicas • Translação: – x’ = x + tx – y’ = y + ty • Escalamento: – x’ = x * sx – y’ = y * sy • Rotação: (x’,y’) – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ x’ = (x*sx) *cosQ - (y*sy) * sinQ y’ = (x*sx) * sinQ + (y*sy) * cosQ Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Transformações 2D Básicas • Translação: – x’ = x + tx – y’ = y + ty • Escalamento: – x’ = x * sx – y’ = y * sy (x’,y’) • Rotação: – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ Alberto Raposo – PUC-Rio x’ = ((x*sx)*cosQ - (y*sy)*sinQ) + tx y’ = ((x*sx)*sinQ + (y*sy)*cosQ) + ty D. Brogan, Univ. of Virginia Representação Matricial • Representar transformação 2D por uma matriz a b c d • Multiplicar matriz por vetor-coluna aplicar transformação a um ponto x ' a y ' c b x d y x' ax by y ' cx dy D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Representação Matricial • Transformações são combinadas por multiplicação de matrizes x' a b e y ' c d g f i h k j x l y Matrizes são uma forma conveniente e eficiente de representar uma seqüência de transformações D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Produto de Matrizes a11 a 21 C AB a n1 a12 a 22 an2 a1q b11 b a2q 21 a nq bq1 b12 b22 bq 2 b1m b2 m bqm q cij aik bkj k 1 neutro: Alberto Raposo – PUC-Rio 1 0 I 0 0 1 0 0 0 1 M. Gattass, PUC-Rio Matrizes 2x2 • Que transformações planares podem ser representadas com uma matriz 2x2? Identidade 2D? x' x y' y x ' 1 0 x y ' 0 1 y Escalemento 2D em torno de (0,0)? x' s x * x y' s y * y Alberto Raposo – PUC-Rio x ' s x y ' 0 0 x s y y D. Brogan, Univ. of Virginia Matrizes 2x2 • Que transformações planares podem ser representadas com uma matriz 2x2? Rotação 2D em torno de (0,0)? x' cosQ * x sin Q * y y' sin Q * x cosQ * y x' cosQ sin Q x y' sin Q cosQ y D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Matrizes 2x2 • Que transformações planares podem ser representadas com uma matriz 2x2? Espelhamento 2D em torno de Y? x' x y' y x ' 1 0 x y ' 0 1 y Espelhamento 2D em torno de (0,0)? x' x y' y x' 1 0 x y ' 0 1 y D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Matrizes 2x2 • Que transformações planares podem ser representadas com uma matriz 2x2? Translação 2D? x' x t x y' y t y NÃO! D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Coordenadas Homogêneas • Como representar uma translação como matriz 3x3? x' x t x y' y t y Alberto Raposo – PUC-Rio Coordenadas Homogêneas •Coordenadas homogêneas – representam coordenadas em 2 dimensões com vetor 3 x homogêneas x coord. y y 1 • Coordenadas Homogêneas parecem pouco intuitivas, mas elas simplificam muito as operações gráficas D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Coordenadas Homogêneas • Como representar uma translação como matriz 3x3? x' x t x y' y t y Resp: Usando a terceira coluna da matriz Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia 1 0 t x Translação 0 1 t y 0 0 1 Translação •Coordenadas Homogêneas •Exemplo x' 1 0 t x x x t x y' 0 1 t y y y t y 1 0 0 1 1 1 tx = 2 ty = 1 Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Coordenadas Homogêneas • Coloca uma 3a coordenada para cada ponto 3D – (x, y, w) representa um ponto em (x/w, y/w) – (x, y, 0) representa um ponto no infinito – (0, 0, 0) não é permitido y Sistema conveniente para representar muitas transformações úteis em CG 2 (2,1,1) or (4,2,2) or (6,3,3) 1 1 2 x D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Transformações 2D Básicas • Representação em matrizes 3x3 x ' s x y ' 0 1 0 x ' 1 0 t x x y ' 0 1 t y y 1 0 0 1 1 Translação x' cos Q y ' sin Q 1 0 sin Q cosQ 0 Rotação Alberto Raposo – PUC-Rio 0 x 0 y 1 1 0 sy 0 Escalamento 0 x 0 y 1 1 x ' 1 y ' sh y 1 0 shx 1 0 0 x 0 y 1 1 Cisalhamento (Shear) Cisalhamento (Shear) x' x shx * y M. Gattass, PUC-Rio y y y' shy * x y x x' x y tan 1 tan y' y 1 0 0 0 1 1 Alberto Raposo – PUC-Rio x 0 x 0 y 11 Concatenação de Transformações y y x y x T1 y T2 x y x R1 y R2 E x x Alberto Raposo – PUC-Rio P’= T2 R2 E R1 T1 P M. Gattass, PUC-Rio Composição de Matrizes • Transformações podem ser combinadas pela multiplicação de matrizes x' 1 0 tx cosQ sin Q 0 sx 0 0 x y ' 0 1 ty sin Q cosQ 0 0 sy 0 y w' 0 0 1 0 0 1 0 0 1 w p’ = T(tx,ty) Alberto Raposo – PUC-Rio R(Q) S(sx,sy) p D. Brogan, Univ. of Virginia Composição de Matrizes • Atenção: ordem das transformações faz diferença – Multiplicação de matrizes não é comutativa p’ = T * R * S * p “Global” Alberto Raposo – PUC-Rio “Local” Ordem das Transformações y y R x p y y x p1 y T x p2 x2 y 2 x (a) x T y y x1 p1 y 1 x R x2 p2 y 2 x (b) M. Gattass, PUC-Rio Alberto Raposo – PUC-Rio Ordem das Transformações • Ex: rotacionar segmento em 45 graus em torno da extremidade a Resultado esperado a a D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio Ordem das Transformações • Erro: aplicar a rotação de 45o, R(45), afeta as duas extremidades – Pode-se tentar fazer a rotação e depois retornar o ponto a à sua posição original, mas quanto ele precisaria ser transladado? a Alberto Raposo – PUC-Rio a ? Como trazer o ponto a de Errado! volta à posição original?? R(45) a Correto T(-3) R(45) T(3) D. Brogan, Univ. of Virginia Ordem das Transformações • a Correto: isolar ponto a dos efeitos da rotação 1. Transladar a linha para colocar a na origem: T (-3) 2. Rotacionar linha em 45o: R(45) 3. Transladar a de volta: T(3) Alberto Raposo – PUC-Rio a a a D. Brogan, Univ. of Virginia Composição de Matrizes T(3) R(45) T(-3) 1 0 3 cos(45) sin(45) 0 1 0 3 a x a' x 0 1 0 sin(45) cos(45) 0 0 1 0 a y a' y 0 0 1 0 0 1 0 0 1 1 1 A multiplicação começa da última para a primeira transformação Alberto Raposo – PUC-Rio Composição de Matrizes •Depois de ordenar as matrizes corretamente: – Multiplicá-las – Guardar resultado em uma só matriz – Usar essa matriz para realizar a transformação composta em cada um dos pontos que definem o objeto transformado (vértices, por exemplo) Todos os vértices podem ser transformados com uma simples multiplicação de vetor por matriz. Alberto Raposo – PUC-Rio Exercício 2D • Considere o triângulo com os seguintes vértices em coordenadas homogêneas – Rotacione o triângulo de 90o (sentido antihorário) em relação ao ponto P = (6,5) y C P A Alberto Raposo – PUC-Rio B x Etapas da Solução 1. Definir matriz para transladar o triângulo de modo que o centro de rotação se mova para a origem do sistema de coordenadas 2. Definir matriz para rotacionar o triângulo 3. Definir matriz para transladar o triângulo de volta 4. Gerar matriz combinada da transformação 5. Transformar os vértices do triângulo Alberto Raposo – PUC-Rio Etapas da Solução 1. Definir matriz para transladar o triângulo de modo que o centro de rotação se mova para a origem do sistema de coordenadas – – Centro de rotação: P = (6,5) Translação de -6 unidades em x e -5 unidades em y Alberto Raposo – PUC-Rio Etapas da Solução 2. Definir matriz para rotacionar o triângulo • O ângulo de rotação é medido no sentido antihorário: R(+90o) • cos(90o) = 0 e sin(90o) = 1 Alberto Raposo – PUC-Rio Etapas da Solução 3. Definir matriz para transladar o triângulo de volta • Translação de 6 unidades em x e 5 unidades em y Alberto Raposo – PUC-Rio Etapas da Solução 4. Gerar matriz combinada da transformação = Alberto Raposo – PUC-Rio Etapas da Solução 5. Transformar os vértices do triângulo y C B’ C’ P A Alberto Raposo – PUC-Rio B = A’ x Transformações em 3D • Mesma idéia que em 2D: – Coordenadas homogêneas: (x,y,z,w) – Matrizes de trasnformação 4x4 x' a y' e z' i w' m Alberto Raposo – PUC-Rio b f j n c g k o d x h y l z p w Transformações 3D Básicas x ' 1 y ' 0 z ' 0 w 0 0 1 0 0 0 0 1 0 0 x 0 y 0 z 1 w Identidade x ' 1 y ' 0 z ' 0 w 0 0 1 0 0 x ' s x y ' 0 z' 0 w 0 0 sy 0 0 0 0 sz 0 0 x 0 y 0 z 1 w Escalamento 0 t x x 0 t y y 1 tz z 0 1 w Translação Alberto Raposo – PUC-Rio D. Brogan, Univ. of Virginia Transformações 3D Básicas x' 1 y ' 0 z' 0 w 0 0 1 0 0 0 0 1 0 0 x 0 y 0 z 1 w Espelhamento em torno do plano YZ x ' 1 0 y ' 0 1 z ' 0 0 w 0 0 0 0 1 0 0 x 0 y 0 z 1 w Espelhamento em torno do plano XZ x ' 1 y ' 0 z ' 0 w 0 0 0 1 0 0 1 0 0 0 x 0 y 0 z 1 w Espelhamento em torno do plano XY Alberto Raposo – PUC-Rio Transformações 3D Básicas Rotação em torno de Z: x' cosQ sin Q y ' sin Q cosQ z' 0 0 w 0 0 Rotação em torno de Y: x ' cosQ y ' 0 z ' sin Q w 0 Rotação em torno de X: 0 0 x ' 1 y ' 0 cosQ sin Q z ' 0 sin Q cosQ w 0 0 0 Alberto Raposo – PUC-Rio 0 0 1 0 0 x 0 y 0 z 1 w 0 sin Q 0 x 1 0 0 y 0 cosQ 0 z 0 0 1 w 0 x 0 y 0 z 1 w Rotações Reversas • Como desfazer uma rotação R()? – Aplicar o inverso da rotação: R(-) •Construindo R(-) : – cos(-) = cos() – sin (-) = - sin () • Assim: R(-) = RT() Alberto Raposo – PUC-Rio cosQ 0 sin Q 0 0 sin Q 0 cosQ 1 0 0 0 sin Q 0 cosQ 0 0 0 0 1 T 0 sin Q 1 0 0 cosQ 0 0 0 0 0 1 Exercício 3D • Encontre as respectivas matrizes de transformação para os seguintes casos a) Translação que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) b) Escalamento que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) • Qual o ângulo dessa rotação? Alberto Raposo – PUC-Rio Solução a) Translação que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) Matriz de translação Alberto Raposo – PUC-Rio Solução b) Escalamento que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) Matriz de escalamento Alberto Raposo – PUC-Rio Solução c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) Para rotação em torno de z: (2) – (1): Alberto Raposo – PUC-Rio Solução c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) Substituindo em (1) ou (2): Matriz de rotação Alberto Raposo – PUC-Rio Solução c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2) • Qual o ângulo dessa rotação? Alberto Raposo – PUC-Rio Ângulos de Euler Fundamentos da Comp. Gráfica Jonas Gomes, Luiz Velho Alberto Raposo – PUC-Rio Ângulos de Euler z z z z y x x y y x c y cz s s c c s x z x y z c x s y c z s x s z 0 y x c y sz s x s y s z cx cz cx s y s z s x cz 0 sy sx c y cx c y 0 0 0 0 1 Notação: cx = cos(x); sx = sin(x) e assim por diante Alberto Raposo – PUC-Rio M. Gattass, PUC-Rio z 90o x 90o Alberto Raposo – PUC-Rio x 90o z 90o Demo: Ângulos de Euler http://prt.fernuni-hagen.de/lehre/KURSE/PRT001/course_main/node10.html Alberto Raposo – PUC-Rio Bibliografia Adicional • • • • • Peter Shirley, Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002. Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics, Addison-Wesley, 1995. Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Computer Graphics: Principles and Practices, (Systems Programming), 2nd edition in C, Addison-Wesley, 1995. Brutzman, D. e Daly, L., Extensible 3D Graphics for Web Authors, Morgan Kaufmann, 2007. The Annotated VRML 97 Reference: http://accad.osu.edu/~pgerstma/class/vnv/resources/info/Annotated VrmlRef/Book.html Alberto Raposo – PUC-Rio