Licenciatura em Engenharia Informática e de Computadores Computação Gráfica Transformações Geométricas Edward Angel, Cap. 4
Questão 1, exame de 29/06/11 [1.0v] Considere o triângulo T={V 1, V 2, V 3 }, com V 1 =[0 2 3] T, V 2 =[3 3 3] T e V 3 =[4 2 3] T. Calcule o valor da normal ao triângulo T, n T.?
Licenciatura em Engenharia Informática e de Computadores Computação Gráfica Transformações Geométricas Edward Angel, Cap. 4
LEIC CG Modelação Geométrica Grafos de Cena
Grafo de Cena Motivação Cenas geralmente complexas Modelos são dinâmicos Grafo de cena permite representação hierárquica
Grafo de Cena Motivação
Grafo de Cena Motivação
Grafo de Cena Motivação
Grafo de Cena Motivação x 1 x 2 α x 3 x 4 y 2 α β y 1 Y β y 4 y 3 X
Grafo de Cena
Grafos de Cena Hierarquia modular Construção ascendente (bottom-up) Permitem modelos complexos de primitivas básicas Propagação de actualizações Alteração num componente reflecte-se no modelo
Grafos de Cena x θ v 1 φ v 2 y 1 Y w 1 X
Grafos de Cena
Grafos de Cena
LEIC CG Transformações Geométricas Transf. Geom. Planas Elementares
Transf. Geom. Planas Elementares Operações sobre vectores (matrizes) Soma Multiplicação Suficientes para grande parte da modelação Translação Rotação Escala
Mover Objectos Num Espaço Vectorial Y ali = [8, 5] T Solução: Somar a 6 2 2 3 [0, 0] T aqui = [2, 3] T X
Transformações Geométricas Translação (1/3) Soma de vectores x P = P = y x y P = T + P com T = dx dy onde x = x + dx, y = y + dy
Transformações Geométricas Translação (2/3) Para deslocar polígonos aplicar a transformação a cada um dos vértices Y x P (x,y ) x P(x,y) y y X
Transformações Geométricas Escala (1/3) Multiplicação matricial x P = P = y x y x = S x. x, y = S y. y P = S P com S = Sx 0 0 Sy x y Sx 0 =. 0 Sy x y
Transformações Geométricas Escala (2/3) Uniforme Y Não - Uniforme Y Sx = Sy = 2 (Ampliação) Sx = 1; Sy = 2 X P(x,y) P (x,y ) X Y Sx = 2; Sy = 1 X Y X Sx = 1; Sy = -1
Transformações Geométricas Rotação (1/2) Y y P (x,y ) y β α x x P (x,y) X sin (α + β) = cos α. sin β + sin α. cos β cos (α + β) = cos α. cos β - sin α. sin β
Transformações Geométricas Rotação (2/2) Y y P (x,y ) y β α x x P (x,y) X P = R β. P com R β = cos β -sin β sin β cos β
Transformações Geométricas Transformações Lineares Escala e Rotação Transformações Lineares Expressas pelas matrizes: Sx 0 0 Sy cos β sin β -sin β cos β
Sistema de equações lineares e matrizes Problema Modelo apresentado não é uniforme Translação: soma de vectores Escala e Rotação: produto de matrizes
Sistema de equações lineares e matrizes Solução Ter transformações como sistemas de equações x = a x + b y y = c x + d y
Sistema de equações lineares e matrizes Solução Ter transformações como sistemas de equações x = a x + b y y = c x + d y x y = a c b d x y
LEIC CG Transformações Geométricas Coordenadas Homogéneas
Transformações no Espaço Homogéneo (1/4) Pontos 2D Escrevem-se como vectores de 3x1 P = [x y 1] T Transformações geométricas 2D Escrevem-se como matrizes de 3x3 No espaço homogéneo considera-se W=1 para transformações em 2D
Transformações noespaço Homogéneo (2/4) Translação P = M T P com M T = 1 0 dx 0 1 dy 0 0 1 x 1 0 dx x y 0 1 dy. = y 1 0 0 1 1
Transformações no Espaço Homogéneo (3/4) Escala P = M T P com M T = S X 0 0 0 S Y 0 0 0 1 x Sx 0 0 x y 0 Sy 0. = y 1 0 0 1 1
Transformações no Espaço Homogéneo (4/4) Rotação P = M T P com M T = cos(β) -sin(β) 0 sin(β) cos(β) 0 0 0 1 x cos(β) -sin(β) 0 x y sin(β) cos(β) 0. = y 1 0 0 1 1
Matrizes de Transformação Translação Escala M T = T(dx,dy) = 1 0 dx 0 1 dy 0 0 1 M E = S(S X,S Y ) = S X 0 0 0 S Y 0 0 0 1 Rotação M R = R(β) = cos(β) -sin(β) 0 sin(β) cos(β) 0 0 0 1
LEIC CG Transformações Geométricas Composição de Transformações
Composição de Transformações No espaço homogéneo Composição de Transformações = Produto de Matrizes P P P T 1 T 2 P = T 1 P e P = T 2 P P = T 2 (T 1 P) P = (T 2 T 1 ) P = (T 2 T 1 ) P Transformações associam-se Da direita para a esquerda Pela ordem inversa de aplicação
Composição de Transformações Exemplo: rotação em torno de um ponto Problema: Rotação definida em relação a (0, 0). Como rodar em torno de um ponto qualquer? Resposta: sequência de 3 transformações básicas. Y Y Y Y T(-x1,-y1) R(θ) T(x1,y1) y1 P1 P1 x1 X T(-x1,-y1) X R (θ) X T(x1,y1) X T = T(x1,y1). R(θ). T(-x1,-y1) = 1 0 x1 cos θ -sin θ 0 1 0 -x1 cos θ -sin θ x1(1 - cos θ) + y1sin θ 0 1 y1. sin θ cos θ 0. 0 1 -y1 = sin θ cos θ y1(1 - cos θ) - x1sin θ 0 0 1 0 0 1 0 0 1 0 0 1
Composição de Transformações Em geral não é comutativa Produto de matrizes não o é Alguns pares comutativos Translação Translação (Translação + Translação) Escala Escala (Escala + Escala) Rotação Rotação (Rotação + Rotação)
Composição de Transformações Exemplo de composições não comutativas Translação seguida de Escala Escala seguida de Translação
LEIC CG Transformações Geométricas Transformações em 3D
Espaço vectorial tri-dimensional (1/2) Usa o referencial de mão direita Right handed coordinate system Rotações positivas Sentido oposto ao da rotação dos ponteiros do relógio counterclockwise Eixo ZZ aponta para fora da página Y Z (fora da página) X
Espaço vectorial tri-dimensional (2/2) Referencial de mão direita Convenção matemática Referencial de mão esquerda Interpretação natural em CG (câmara) Objecto com maiores valores na coordenada Z Encontram-se mais distantes do observador (vista) Na prática usam-se ambos os referenciais Conforme sistema gráfico, aplicação ou biblioteca
Transformações Geométricas 3D Transformações 2D Matrizes 3x3 no espaço homogéneo Analogamente Transformações 3D Matrizes 4x4 no espaço homogéneo
Coordenadas Homogéneas Espaço 3D representado num espaço 4D Ponto (x,y,z) transformado num ponto (x,y,z,w) P 3d (x, y, z) P h (Wx, Wy, Wz, W), W 0 Semelhante a 2D (W=1)
Transformações Elementares 3D Translação M T = T(dx, dy, dz) = 1 0 0 dx 0 1 0 dy 0 0 1 dz 0 0 0 1 x 1 0 0 dx x y = 0 1 0 dy. y z 0 0 1 dz z 1 0 0 0 1 1
Transformações Elementares 3D Translação void gltranslate{f d}(type dx, TYPE dy, TYPE dz) M T = T(dx, dy, dz) = 1 0 0 dx 0 1 0 dy 0 0 1 dz 0 0 0 1
Transformações Elementares 3D Translação gltranslatef(1.0, 2.0, 0.0) M T = T(1.0, 2.0, 0.0) = 1 0 0 1.0 0 1 0 2.0 0 0 1 0.0 0 0 0 1
Transformações Elementares 3D Translação gltranslatef(1.0, 2.0, 0.0) M T = T(1.0, 2.0, 0.0) = 1 0 0 1.0 0 1 0 2.0 0 0 1 0.0 0 0 0 1
Transformações Elementares 3D Escala M S = S(Sx, Sy, Sz) = Sx 0 0 0 0 Sy 0 0 0 0 Sz 0 0 0 0 1 x Sx 0 0 0 x y = 0 Sy 0 0. y z 0 0 Sz 0 z 1 0 0 0 1 1
Transformações Elementares 3D Escala void glscale{f d}(type Sx, TYPE Sy, TYPE Sz) M S = S(Sx, Sy, Sz) = Sx 0 0 0 0 Sy 0 0 0 0 Sz 0 0 0 0 1
Transformações Elementares 3D Escala glscalef (2.0f, 0.5f, 1.0f) M S = S(2.0, 0.5, 1.0) = 2.0 0 0 0 0 0.5 0 0 0 0 1.0 0 0 0 0 1
Transformações Elementares 3D Escala glscalef (2.0f, 0.5f, 1.0f) M S = S(2.0, 0.5, 1.0) = 2.0 0 0 0 0 0.5 0 0 0 0 1.0 0 0 0 0 1
Transformações Elementares 3D Rotação Y Z X Não trivial definir matriz de rotação única genérica Usam-se quaterniões para definir rotações espaciais
Transformações Elementares 3D Rotação Y R y (φ) R z (ψ) Z R x (θ) X Abordagem mais simples Realizar rotações apenas sobre eixos de coordenadas Três matrizes distintas
Transformações Elementares 3D Rotação Y R z (ψ): em torno do eixo dos ZZ R z (ψ) Z R y (φ) R x (θ) X cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 0 0 0 0 1 R x (θ): em torno do eixo dos XX 1 0 0 0 0 cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 R y (φ): em torno do eixo dos YY cos θ 0 sin θ 0 0 1 0 0 -sin θ 0 cos θ 0 0 0 0 1
Transformações Elementares 3D Rotação glrotate{f,d}( TYPE angle, TYPE x, TYPE y, TYPE z ) M R = 2 x (1 cosθ ) + cosθ yx(1 cosθ ) + z sinθ xz(1 cosθ ) y sinθ 0 xy(1 cosθ ) + z sinθ y 2 (1 cosθ ) + cosθ yz(1 cosθ ) + 0 xsinθ xz(1 cosθ ) + y sinθ yz(1 cosθ ) xsinθ z 2 (1 cosθ ) + cosθ 0 0 0 0 1
Transformações Elementares 3D Rotação glrotatef(beta, 1, 0, 0 ) M R = 1 0 0 0 0 cos( beta) sin( beta) 0 0 sin( beta) cos( beta) 0 0 0 0 1
Transformações Elementares 3D Rotação glrotatef(90.0f, 1.0f, 0.0f, 0.0) MR x (90) = 1 0 0 0 0 0-1 0 0 1 0 0 0 0 0 1
Transformações Elementares 3D Rotação glrotatef(90.0f, 1.0f, 0.0f, 0.0) MR x (90) = 1 0 0 0 0 0-1 0 0 1 0 0 0 0 0 1
LEIC CG Transformações Geométricas Composição de Transformações
Composição de Transformações Composição de Transformações = Produto de Matrizes P P P T 1 T 2 P = T 1 P e P = T 2 P P = T 2 (T 1 P) P = (T 2 T 1 ) P = (T 2 T 1 ) P Transformações associam-se Da direita para a esquerda Pela ordem inversa de aplicação