Matemá'ca para Jogos
Aula 8
Apresentação
Obje'vos
•
Entender o que são transformações lineares;
•
Entender os diversos 'pos de transformações
2D.
•
Entender como elas se combinam.
“
Transformações são as operações aplicadas a
descrições geométricas de um objeto para alterar
a sua posição, orientação ou tamanho. Esses
'pos de transformações são chamados de
transformações geométricas”.
Transformações lineares
•
Uma transformação de um conjunto não-‐vazio
U em um conjunto não-‐vazio V é uma
correspondencia T que, a cada elemento x de
U, associa um unico elemento y = T(x) de V,
denominando-‐se f:U -‐> V.
6
2D Transforma'ons
x y x y x yAplicações de transformações 2D
•
Transformações 2D
•
Animações
•
Image warping
8
Transformações 2D
•
Dado um objeto 2D, uma transformação é a
mudança da:
– Posição (translação)
– Tamanho(escala)
– Orientação(rotação)
– Formato (shear)
Transformações em 2D
•
Em um modelo de aplicação:
–
Uma descrição do objeto (ver'ces)
–
Uma transformação a aplicar
•
Cada ver'ce (ou ponto) é modificado:
• x
’
= f(x,y)
10
Translação
•
Reposiciona um ponto ao longo de uma reta
•
Dado um ponto (x,y), e a distancia de translação
(tx,ty)
O Novo ponto: (x’, y’) x’ = x + tx y’ = y + ty (x,y) (x’,y’) Ou P’ = P + T onde P’ = x’ p = x T = tx y’ y ty tx ty
Translação
•
Como transladar um objeto com mul'plos
ver'ces?
Transladar os vertices separadamente
Exercicio
•
Monte a matriz 2D (T) para mover objetos 3D
50 pixels para a direita e 100 pixels para baixo
na tela do computador.
•
Com essa matriz, mova um triangulo com os
ver'ces: A(20,30), B(0,200), e C(300,400)
3x3 2D Matrix de translação
x’ = x + tx y’ y ty Use um vetor 3 x 1 x’ 1 0 tx x y’ = 0 1 ty * y 1 0 0 1 1Exercicio
•
Monte a matriz 2D para mover objetos 2D 10
pixels para a direita e 20 pixels para baixo na
tela do computador.
•
Com essa matriz, mova um triangulo, usando
mul'plicação de matrizes, com os ver'ces:
A(10,15), B(0,20), e C(20,100)
Escala 2D
Escala: alterar o tamanho de um objeto de acordo com um
fator de escala (Sx, Sy); Factor de escala:
>1 aumenta o objecto <1 reduz o objecto
16
Escala 2D
Escala: alterar o tamanho de um objeto de acordo com um
fator de escala (Sx, Sy), i.e. x’ = x . Sx y’ = y . Sy x’ Sx 0 x y’ 0 Sy y = (1,1) (2,2) Sx = 2, Sy = 2 (2,2) (4,4)
Escala 2D
(1,1)
(2,2) Sx = 2, Sy = 2
(2,2)
(4,4)
§ Não somente o tamanho é modificado… mas tb a posição
18
3x3 2D Matrix de Escala
x’ Sx 0 x
y’ 0 Sy y =
x’ Sx 0 0 x y’ = 0 Sy 0 * y 1 0 0 1 1
EXERCICIOS
•
Contrua a matriz que escale os objetos para
metade, e use-‐a para escalar o triangulo A(–
50,20), B(–10,20), e C(–30,40).
•
Contrua a matriz que escale os objetos ¼ na
direção x e 3 vezes na direção y, e use-‐a para
escalar o triangulo com pontos A(–50,20), B(–
10,20), e C(–30,40).
20
Rotação 2D
•
Centro de origem padrão: Origem (0,0)
θ
θ > 0 : Rotação no sentido anti-horario
θ < 0 : Rotação no sentido horario θ
(x,y) (x’,y’)
θ
(x,y) -> Rotacionar θ da origem (x’, y’)
Como calcular (x’, y’) ? φ
r
22
(x,y) (x’,y’)
θ
(x,y) -> Rotacionar θ da origem (x’, y’)
Como calcular (x’, y’) ? φ
x = r cos (φ) y = r sin (φ)
r
x’ = r cos (φ + θ) y’ = r sin (φ + θ)
Rotação 2D
(x,y) (x’,y’) θ φ r x = r cos (φ) y = r sin (φ) x’ = r cos (φ + θ) y = r sin (φ + θ) x’ = r cos (φ + θ)= r cos(φ) cos(θ) – r sin(φ) sin(θ)
= x cos(θ) – y sin(θ)
y’ = r sin (φ + θ)
24
Rotação 2D
(x,y) (x’,y’) θ φ r x’ = x cos(θ) – y sin(θ)Rotação 2D
(x,y) (x’,y’) θ φ r x’ = x cos(θ) – y sin(θ)y’ = y cos(θ) + x sin(θ) Matrix form?
x’ cos(θ) -sin(θ) x
26
3x3 2D Matrix de Rotação
x’ cos(θ) -sin(θ) x
y’ sin(θ) cos(θ) y =
(x,y) (x’,y’) θ φ r x’ cos(θ) -sin(θ) 0 x y’ sin(θ) cos(θ) 0 y 1 0 0 1 1
n
Como rotacionar objetos com mul'plos
pontos?
Rotacione θ
•
Construa a matrix para rotacionar objetos 2D
30°, e use-‐a para rotacionar o triangulo com
pontos A(–10,50), B(80,0), e C(–50,100).
•
Construa a matrix para rotacionar objetos 2D
45°, e use-‐a para rotacionar o triangulo com
pontos A(–10,50), B(80,0), e C(–50,100).
Resumindo
• Translação: • Rotação: • Escala: y x t t y x y x + = ʹ′ ʹ′ y x t t y x ⋅ − = ʹ′ ʹ′ θ θ θ θ cos sin sin cos x x t s xʹ′ 030
Ou, 3x3 Matrix
• Translação: • Rotação: • Escala: x’ 1 0 tx x y’ = 0 1 ty * y 1 0 0 1 1 x’ cos(θ) -sin(θ) 0 x y’ sin(θ) cos(θ) 0 * y 1 0 0 1 1=
x’ Sx 0 0 x y’ = 0 Sy 0 * y 1 0 0 1 1
Porque 3x3 Matriz?
• De forma que possamos calcular todas as transformações
usando matrizes
• Isso nos permite precomputar matrizes
• O ponto (x,y) precisa ser representado como (x,y,1) -‐>
isso é chamado de coordenadas homogeneas!
32
Affine Transforma'on
• Translação, rotação e escala são todas transformações
Affine Transforma'on
• Translação, rotação e escala são todas transformações
afins;
• Transformação Afim o ponto transformado P’ (x’,y’) é
uma combinação linear do ponto P (x,y), i.e. 13 12 11 y x m m m m m m y x ⋅ = ʹ′ ʹ′
34
Composição de transformações
• Composição de transformações – é o processo de aplicar
diversas transformações em successão de forma a criar uma transformação unica;
• Se aplicarmos em um ponto P usando a matrix M1, e
depois transformar com a matriz M2 e depois a M3, temos:
36
Composição de transformações
• Composição de transformações – é o processo de aplicar
diversas transformações em successão de forma a criar uma transformação unica;
• Se aplicarmos em um ponto P usando a matrix M1, e
depois transformar com a matriz M2 e depois a M3, temos:
(M3 x (M2 x (M1 x P ))) = M3 x M2 x M1 x P
M
(pre-multiply)Composição de transformações
• A mul'plicações de matrizes é associa'va
M3 x M2 x M1 = (M3 x M2) x M1 = M3 x (M2 x M1)
• Mas não é comuta'va!!! A x B != B x A • Mas existe casos onde A x B = B x A
38
A Ordem é importante!
• Rotação e translação não é comuta'va!
Transladar (5,0) e depois rotacionar 60 graus OU