View
215
Download
0
Category
Preview:
Citation preview
1
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Transformações
Alberto B. Raposoabraposo@tecgraf.puc-rio.br
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
2
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/outranslaçã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
etc...
Exemplo 1
• Partes do objeto definidas em sistemas de coordenadas locais:
• Objeto “montado” por meio de transformação das partes constituintes:
John Dingliana, 2004
3
Alberto Raposo – PUC-Rio
5 etapas de uma animação de um cubo girando
Exemplo 2
• 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 windowto 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
4
Alberto Raposo – PUC-Rio
1,1
.4, 2
TRANSFORMAÇÃO DE OBJETO
(1,1)
(1,1)
TRANSFORMAÇÃO DE COORDENADAS
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Classes de Transformações
• Euclidianas / Corpos Rígidos• de Similaridade• Lineares• Afins• Projetivas
5
Alberto Raposo – PUC-Rio
Transformações Euclidianas
• Preservam distâncias• Preservam ângulos
TranslaçãoRotação
Corpos Rígidos / Euclidianas
Identidade
Identidade
Translação
Rotação
MIT EECS 6.837, Durand and Cutler
Alberto Raposo – PUC-Rio
Transformações de Similaridade
• Preservam ângulos
TranslaçãoRotação
Euclidianas
Similaridades
EscalamentoIsotrópico
Identidade
MIT EECS 6.837, Durand and Cutler
EscalamentoIsotrópico
6
Alberto Raposo – PUC-Rio
Transformações Lineares
TranslaçãoRotação
EuclidianasLinear
Similaridades
EscalaentoIsotrópico
IdentidadeEscalamento
Shear
Reflexão
Escalamento Reflexão Shear
MIT EECS 6.837, Durand and Cutler
Alberto Raposo – PUC-Rio
Transformações Lineares• L(p + q) = L(p) + L(q)• L(ap) = a L(p)
MIT EECS 6.837, Durand and Cutler
7
Alberto Raposo – PUC-Rio
Transformações Afins
• Preservam linhasparalelas Afins
TranslaçãoRotação
EuclidianasLinear
Similaridades
EscalaentoIsotrópico
IdentidadeEscalamento
Shear
Reflexão
Alberto Raposo – PUC-Rio
TransformaçõesProjetivas
• preservam linhas Projetivas
Perspectiva
Afins
TranslaçãoRotação
EuclidianasLinear
Similaridades
EscalaentoIsotrópico
IdentidadeEscalamento
Shear
Reflexão
8
Alberto Raposo – PUC-Rio
PerpectivaPerspectiva é um dos fatoresque dá “aparência 3D” às cenas
Alberto Raposo – PUC-Rio
Transformações 2D
EscalamentoRotação
Translação
EscalamentoTranslação
x
y
Coordenadas do mundo
Coordenadasde modelagem
D. Brogan, Univ. of Virginia
9
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Localizaçãoinicial em(0, 0) comeixos x e yalinhados
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
10
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
11
Alberto Raposo – PUC-Rio
VRML: Nó Transform
Alberto Raposo – PUC-Rio
Exemplo em VRML
The Annotated VRML Reference
12
Alberto Raposo – PUC-Rio
Exemplo em VRML
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
D. Brogan, Univ. of Virginia
13
Alberto Raposo – PUC-Rio
• Escalamento não-isotrópico: valores escalaresdiferentes por componente:
• Como representar o escalamento na forma de matrizes?
Escalamento
X × 2,Y × 0.5
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Escalamento
• Operação de escalamento:
• Na forma matricial:
⎥⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡byax
yx''
⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡yx
ba
yx
00
''
Matriz de escalamento
D. Brogan, Univ. of Virginia
14
Alberto Raposo – PUC-Rio
Rotação 2D
cos ( ) cos cos sin sin θ φ θ φ θ φ+ = −( ) ( ) ( ) ( )sin ( ) sin cos cos sin θ φ θ φ θ φ+ = +( ) ( ) ( ) ( )
P
Q
R PX
PYφ
θ
[1][2]
[3][4]
[1] )( )( )()( φθφθ sinsincoscos RRxQ −=
Substituindo de [3] e [4]…
)()( θθ sincos yPxPxQ −=
Similarmente, a partir de [2]…
)()( θθ sincos xPyPyQ +=
)Rcos( Q X φθ += )Rsin( Q y φθ +=
)(cosR PX φ= )(sinR Py φ=
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Rotação 2D
θ
(x, y)
(x’, y’)
x’ = x cos(θ) - y sin(θ)y’ = x sin(θ) + y cos(θ)
D. Brogan, Univ. of Virginia
15
Alberto Raposo – PUC-Rio
Rotação 2D• Na forma matricial:
• Embora sin(θ) e cos(θ) sejam funções não-lineares de θ,– x’ é combinação linear de x e y– y’ é combinação linear de x e y
( ) ( )( ) ( ) ⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡ −=⎥
⎦
⎤⎢⎣
⎡yx
yx
θθθθ
cossinsincos
''
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Translação 2D
⎥⎦⎤
⎢⎣⎡
++
≡⎟⎠⎞
⎜⎝⎛+⎟
⎠⎞⎜
⎝⎛=⎟
⎠⎞⎜
⎝⎛
y
x
y
xtytx
tt
yx
yx
''
y
xx
y ⎟⎟⎠
⎞⎜⎜⎝
⎛=
y
x
tt
t
M. Gattass, PUC-Rio
16
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*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ
Podem ser combinadascom álgebra simples
D. Brogan, Univ. of Virginia
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*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ
D. Brogan, Univ. of Virginia
17
Alberto Raposo – PUC-Rio
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ x’ = x*sx
y’ = y*sy
(x,y)(x’,y’)
Transformações 2D Básicas
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
x’ = (x*sx) *cosΘ - (y*sy) * sinΘy’ = (x*sx) * sinΘ + (y*sy) * cosΘ
(x’,y’)
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ
D. Brogan, Univ. of Virginia
Transformações 2D Básicas
18
Alberto Raposo – PUC-Rio
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ– y’ = x*sinΘ + y*cosΘ x’ = ((x*sx)*cosΘ - (y*sy)*sinΘ) + tx
y’ = ((x*sx)*sinΘ + (y*sy)*cosΘ) + ty
(x’,y’)
D. Brogan, Univ. of Virginia
Transformações 2D Básicas
Alberto Raposo – PUC-Rio
Representação Matricial
• Representar transformação 2D por umamatriz
• Multiplicar matriz por vetor-coluna⇔ aplicar transformação a um ponto
⎥⎦⎤
⎢⎣⎡⎥⎦⎤
⎢⎣⎡=⎥⎦
⎤⎢⎣⎡
yx
dcba
yx''
⎥⎦⎤
⎢⎣⎡
dcba
dycxybyaxx
+=+=
''
D. Brogan, Univ. of Virginia
19
Alberto Raposo – PUC-Rio
Representação Matricial
• Transformações são combinadas pormultiplicação de matrizes
⎥⎦⎤
⎢⎣⎡⎥⎦⎤
⎢⎣⎡⎥⎦⎤
⎢⎣⎡⎥⎦⎤
⎢⎣⎡=⎥⎦
⎤⎢⎣⎡
yx
lkji
hgfe
dcba
yx
''
Matrizes são uma forma conveniente e eficientede representar uma seqüência de transformações
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Produto de Matrizes
∑=
=q
kkjikij bac
1
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
==
qmqq
m
m
nqnn
q
q
bbb
bbbbbb
aaa
aaaaaa
L
MOMM
L
L
L
MOMM
L
L
21
22221
11211
21
22221
11211
ABC
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
100
010001
OM
L
Ineutro:M. Gattass, PUC-Rio
20
Alberto Raposo – PUC-Rio
Matrizes 2x2• Que transformações planares podem ser
representadas com uma matriz 2x2?Identidade 2D?
yyxx
==''
⎥⎦⎤
⎢⎣⎡⎥⎦⎤
⎢⎣⎡=⎥⎦
⎤⎢⎣⎡
yx
yx
1001
''
Escalemento 2D em torno de (0,0)?
ysy
xsx
y
x
*'
*'
=
=⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡yx
ss
yx
y
x
00
''
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Matrizes 2x2• Que transformações planares podem ser
representadas com uma matriz 2x2?
D. Brogan, Univ. of Virginia
Rotação 2D em torno de (0,0)?
yxyyxx
*cos*sin'*sin*cos'
Θ+Θ=Θ−Θ=
⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡ΘΘΘ−Θ
=⎥⎦
⎤⎢⎣
⎡yx
yx
cossinsincos
''
21
Alberto Raposo – PUC-Rio
Matrizes 2x2• Que transformações planares podem ser
representadas com uma matriz 2x2?
D. Brogan, Univ. of Virginia
Espelhamento 2D em torno de Y?
yyxx
=−=
''
⎥⎦⎤
⎢⎣⎡⎥⎦⎤
⎢⎣⎡−=⎥⎦
⎤⎢⎣⎡
yx
yx
1001
''
Espelhamento 2D em torno de (0,0)?
yyxx
−=−=
''
⎥⎦⎤
⎢⎣⎡⎥⎦⎤
⎢⎣⎡
−−=⎥⎦
⎤⎢⎣⎡
yx
yx
1001
''
Alberto Raposo – PUC-Rio
Matrizes 2x2• Que transformações planares podem ser
representadas com uma matriz 2x2?
D. Brogan, Univ. of Virginia
Translação 2D?
y
x
tyytxx
+=+=
''
NÃO!
22
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
• Como representar uma translação comomatriz 3x3?
y
x
tyytxx
+=+=
''
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
•Coordenadas homogêneas– representam
coordenadas em 2 dimensões com vetor 3 ⎥
⎥⎦
⎤
⎢⎢⎣
⎡⎯⎯⎯⎯⎯ →⎯⎥⎦
⎤⎢⎣⎡
1homogêneas coord. y
xyx
• Coordenadas Homogêneas parecem poucointuitivas, mas elas simplificam muito as operações gráficas
D. Brogan, Univ. of Virginia
23
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
• Como representar uma translação comomatriz 3x3?
y
x
tyytxx
+=+=
''
Resp: Usando a terceiracoluna da matriz
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
1001001
y
x
tt
Translação
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Translação
•Exemplo
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡++
=⎥⎥⎦
⎤
⎢⎢⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎦
⎤
⎢⎢⎣
⎡
111001001
1''
y
x
y
x
tytx
yx
tt
yx
tx = 2ty = 1
•Coordenadas Homogêneas
D. Brogan, Univ. of Virginia
24
Alberto Raposo – PUC-Rio
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
Sistema conveniente pararepresentar muitastransformações úteis emCG
1 2
1
2 (2,1,1) or (4,2,2) or (6,3,3)
x
y
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D Básicas
• Representação em matrizes 3x3
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡ΘΘΘ−Θ
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
11000cossin0sincos
1''
yx
yx
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
11001001
1''
yx
tt
yx
y
x
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
11000101
1''
yx
shsh
yx
y
x
Translação
Rotação Cisalhamento (Shear)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
11000000
1''
yx
ss
yx
y
x
Escalamento
25
Alberto Raposo – PUC-Rio
Cisalhamento (Shear)
yxshyyshxx
y
x
+=+=
*'*'
x
y
x
y
γ
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
⎥⎥⎦
⎤
⎢⎢⎣
⎡=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛ +=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
11000100tan1
1
tan
1''
yx
yyx
yx γγ
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Concatenação de Transformações
x
y
x
y
x
y
x
y
x
y
x
yT1
R1
E
R2
T2
P’= T2 R2 E R1 T1 PP’= T2 R2 E R1 T1 P M. Gattass, PUC-Rio
26
Alberto Raposo – PUC-Rio
Composição de Matrizes
• Transformações podem ser combinas pelamultiplicação de matrizes
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡ΘΘΘ−Θ
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wyx
sysx
tytx
wyx
1000000
1000cossin0sincos
100
1001
'''
p’ = T(tx,ty) R(Θ) S(sx,sy) p
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Composição de Matrizes
• Atenção: ordem das transformações fazdiferença– Multiplicação de matrizes não é comutativa
p’ = T * R * S * p
“Global” “Local”
27
Alberto Raposo – PUC-Rio
Ordem das Transformações
x
y⎟⎟⎠
⎞⎜⎜⎝
⎛=
yx
p
R x
y ⎟⎟⎠
⎞⎜⎜⎝
⎛=
2
22 y
xp
T
x
y⎟⎟⎠
⎞⎜⎜⎝
⎛=
1
11 y
xp
R x
y⎟⎟⎠
⎞⎜⎜⎝
⎛=
yx
1p
x
y ⎟⎟⎠
⎞⎜⎜⎝
⎛=
2
22 y
xp
T
(a)
(b)M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Ordem das Transformações
• Ex: rotacionar segmento em 45 graus emtorno da extremidade a
a a
Resultado esperado
D. Brogan, Univ. of Virginia
28
Alberto Raposo – PUC-Rio
Ordem das Transformações
• Erro: aplicar a rotação de 45o, R(45), afeta as duasextremidades– Pode-se tentar fazer a rotação e depois retornar o ponto
a à sua posição original, mas quanto ele precisaria ser transladado?
Errado!R(45)
aa
CorretoT(-3) R(45) T(3)
a
D. Brogan, Univ. of Virginia
Como trazer o ponto a devolta à posição original??
?
Alberto Raposo – PUC-Rio
Ordem das Transformações
• Correto: isolar ponto a dos efeitosda 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)
a
a
a
a
D. Brogan, Univ. of Virginia
29
Alberto Raposo – PUC-Rio
Composição de Matrizes
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡=
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡
⎥⎥⎦
⎤
⎢⎢⎣
⎡ −
⎥⎥⎦
⎤
⎢⎢⎣
⎡ −
⎥⎥⎦
⎤
⎢⎢⎣
⎡
1''
1
100010301
1000)45cos()45sin(0)45sin()45cos(
100010301
y
x
y
xaa
aa
T(3) R(45) T(-3)
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 pormatriz.
30
Alberto Raposo – PUC-Rio
Exercício 2D
• Considere o triângulo com os seguintes vértices em coordenadashomogêneas– Rotacione o triângulo
de 90o (sentido anti-horário) em relação aoponto P = (6,5)
y
x
C
BA
P
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
2. Definir matriz para rotacionar o triângulo3. Definir matriz para transladar o triângulo
de volta4. Gerar matriz combinada da transformação5. Transformar os vértices do triângulo
31
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 anti-
horário: R(+90o)• cos(90o) = 0 e sin(90o) = 1
32
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
=
33
Alberto Raposo – PUC-Rio
Etapas da Solução
5. Transformar os vértices do triângulo
y
x
C
BA
P
B’
= A’
C’
Alberto Raposo – PUC-Rio
Transformações em 3D
• Mesma idéia que em 2D:– Coordenadas homogêneas: (x,y,z,w) – Matrizes de trasnformação 4x4
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wzyx
ponmlkjihgfedcba
wzyx
''''
34
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wzyx
wzyx
1000010000100001
'''
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
wzyx
ttt
wzyx
z
y
x
1000100010001
'''
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
wzyx
ss
s
wzyx
z
y
x
1000000000000
'''
IdentidadeEscalamento
TranslaçãoD. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wzyx
wzyx
1000010000100001
'''
Espelhamento em torno doplano YZ
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wzyx
wzyx
1000010000100001
'''
Espelhamento em torno doplano XZ
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wzyx
wzyx
1000010000100001
'''
Espelhamento em torno doplano XY
35
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡ΘΘΘ−Θ
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wzyx
wzyx
1000010000cossin00sincos
'''
Rotação em torno de Z:
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
ΘΘ−
ΘΘ
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
wzyx
wzyx
10000cos0sin00100sin0cos
'''
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
ΘΘΘ−Θ=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
wzyx
wzyx
10000cossin00sincos00001
'''
Rotação em torno de Y:
Rotação em torno de X:
Alberto Raposo – PUC-Rio
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(θ)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
ΘΘ
Θ−Θ=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
ΘΘ−
ΘΘ
10000cos0sin00100sin0cos
10000cos0sin00100sin0cos T
36
Alberto Raposo – PUC-Rio
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 ⇒
37
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): ⇒
38
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)
Matriz de rotação ⇒
Substituindo em (1) ou (2):
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?
⇒ ⇒
39
Alberto Raposo – PUC-Rio
Ângulos de Euler
Fundamentos da Comp. GráficaJonas Gomes, Luiz Velho
Alberto Raposo – PUC-Rio
Ângulos de Euler
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−++−
−
1000000
yxzxzyxzxzyx
yxzxzyxzxzyx
yzyzy
cccssscsscsccsccssssccssssccc
θxx
y
z
θy
x
y
zθz
x
y
z
M. Gattass, PUC-Rio
Notação: cx = cos(θx); sx = sin(θx) e assim por diante
40
Alberto Raposo – PUC-Rio
ox 90=θo
z 90−=θ
ox 90=θ o
z 90−=θ
Alberto Raposo – PUC-Rio
Demo: Ângulos de Euler
http://prt.fernuni-hagen.de/lehre/KURSE/PRT001/course_main/node10.html
41
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 ComputerGraphics, 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.
• The Annotated VRML 97 Reference: http://accad.osu.edu/~pgerstma/class/vnv/resources/info/AnnotatedVrmlRef/Book.html
Recommended