Escolar Documentos
Profissional Documentos
Cultura Documentos
Transformações Geométricas
Prof. Alaor Cervati Neto
2021/2
Renderizamos objetos 2D de forma estática.
Agora forneceremos movimento a nossos objetos.
Transformações geométricas são operações aplicadas na descrição geométrica
dos objetos (vértices).
1 33
Transformações geométricas primárias:
Translação.
Escala.
Rotação.
Transformações geométricas secundárias:
Reflexão.
Cisalhamento.
2 33
Transformações Geométricas 2D
Transformações Geométricas 2D
Coordenadas Homogêneas:
Sistema de coordenadas em geometria projetiva.
Um ponto no espaço 2D é uma projeção de um ponto 3D no plano.
Um ponto 2D em coordenadas homogêneas:
Possui três valores: (xh , yh , h).
Onde h é um parâmetro homogêneo (h ̸= 0).
Por conveniência, usaremos h = 1:
Mantemos as coordenadas Euclidianas.
Obtemos maior poder de representação.
3 33
Translação
4 33
Translação
5 33
Translação em Coordenadas Homogêneas
′
xh 1 0 tx xh
Nova coordenada yh′ = 0 1 ty yh Coordenada original
h 0 0 1 h
| {z }
Matriz de translação
6 33
Translação em Coordenadas Homogêneas
7 33
Translação em Coordenadas Homogêneas
P′ = T tx , ty · P
′
x 1 0 tx x
y′ = 0 1 ty y
1 0 0 1 1
8 33
Escala
9 33
Escala
10 33
Escala em Coordenadas Homogêneas
P′ = S
sx , sy · P
′
x sx 0 0 x
Nova coordenada ′
y = 0
sy 0 y Coordenada original
1 0 0 1 1
| {z }
Matriz de escala
sx e sy devem ser maiores que zero.
Se sx > 1 e sy > 1 o objeto aumenta.
Se sx < 1 e sy < 1 o objeto diminui.
Se sx = sy a escala é uniforme.
Se sx ̸= sy a escala é diferencial.
11 33
Rotação
12 33
Rotação
13 33
Rotação
x′
(
cos (ϕ + θ) = r =⇒ x′ = r cos (ϕ + θ)
y′
sen (ϕ + θ) = r =⇒ y′ = r sen (ϕ + θ)
Soma de ângulos:
cos (α + β) = cos α · cos β − sen α · sen β
sen (α + β) = cos α · sen β + sen α · cos β
14 33
Rotação
Portanto: (
x′ = r cos ϕ · cos θ − r sen ϕ · sen θ
y′ = r cos ϕ · sen θ + r sen ϕ · cos θ
Descrevendo P por coordenadas polares:
x = r cos ϕ, y = r sen ϕ
Por substituição: (
x′ = x cos θ − y sen θ
y′ = x sen θ + y cos θ
Na forma matricial:
P′ = R · P
′
x cos θ − sen θ x
=
y′ sen θ cos θ y
15 33
Rotação em Coordenadas Homogêneas
P′ = R (θ) · P
′
x cos θ − sen θ 0 x
Nova coordenada y′ = sen θ cos θ 0 y Coordenada original
1 0 0 1 1
| {z }
Matriz de rotação
16 33
Matriz de Transformação
P ′ = M2 · M1 · P
= (M2 · M1 ) · P
=M·P
17 33
Escala com ponto de referência
1. Translação do objeto para a origem considerando o ponto de referência xf , yf .
2. Transformação de escala.
3. Translação do objeto para a posição original.
1 2 3
z }| { z }| { z }| {
1 0 xf sx 0 0 1 0 −xf
0 1 yf 0 sy 0 0 1 −yf
0 0 1 0 0 1 0 0 1
sx 0 xf (1 − sx )
= 0 sy yf 1 − sy
0 0 1
| {z }
Matriz de transformação final
18 33
Rotação com ponto de referência
1. Translação do objeto para a origem considerando o ponto de referência xf , yf .
2. Transformação de rotação.
3. Translação do objeto para a posição original.
1 2 3
z }| { z }| { z }| {
1 0 xr cos θ − sen θ 0 1 0 −xr
0 1 yr sen θ cos θ 0 0 1 −yr
0 0 1 0 0 1 0 0 1
cos θ − sen θ xr − xr cos θ + yr sen θ
= sen θ cos θ yr − yr cos θ − xr sen θ
0 0 1
| {z }
Matriz de transformação final
19 33
Em Resumo
20 33
Entretanto
21 33
Reflexão
1 0 0 −1 0 0 −1 0 0
y = 0 : 0 −1 0 , x = 0 : 0 1 0 , x = 0 e y = 0 : 0 −1 0
0 0 1 0 0 1 0 0 1
22 33
Cisalhamento
Cisalhamento (shearing) na direção de x:
1 shx 0
0 1 0
0 0 1
23 33
Transformações Geométricas 3D
Transformações Geométricas 3D
24 33
Translação
P′ =T·P
′
x 1 0 0 tx x
y′ 0 1 0 ty y
=
z′ 0
0 1 tz z
1 0 0 0 1 1
25 33
Escala
P′ = S · P
′
x sx 0 0 0 x
y′ 0 sy 0 0 y
=
z′ 0 0 sz 0 z
1 0 0 0 1 1
26 33
Rotação
P′ = Rz (θ) · P
′
x cos θ − sen θ 0 0 x
y′ sen θ cos θ 0 0 y
=
z′ 0
0 1 0 z
1 0 0 0 1 1
27 33
Rotação
P′ = Rx (θ) · P
′
x 1 0 0 0 x
y′ 0 cos θ − sen θ 0 y
=
z′ 0 sen θ cos θ 0 z
1 0 0 0 1 1
28 33
Rotação
P′ = Ry (θ) · P
′
x cos θ 0 sen θ 0 x
y′ 0 1 0 0 y
=
z′ − sen θ 0 cos θ 0 z
1 0 0 0 1 1
29 33
Transformações Geométricas em OpenGL
30 33
Material de base para a aula
31 33
Exercício para cômputo de presença
32 33
Exercício para cômputo de presença
Crie um programa (em C/C++, Java ou Python) que modele este objeto (o conjunto
de vértices que o descreve está disponível em
https://github.com/kretash/UtahTeapot) usando a primitiva
GL_TRIANGLES. Aplique transformações para alterar o objeto de modo a
posicioná-lo da forma que considerar melhor e gere a matriz de transformação
correspondente.
33 / 33