alberto raposo – puc-rio inf 1366 – computação gráfica interativa transformações alberto b....
TRANSCRIPT
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Transformações
Alberto B. Raposo
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
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
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 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
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
Alberto Raposo – PUC-Rio
Transformações Euclidianas
• Preservam distâncias
• Preservam ângulos
Translação
Rotaçã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
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
Alberto Raposo – PUC-Rio
Transformações Afins
• Preservam linhas paralelas 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
Alberto Raposo – PUC-Rio
Perpectiva
Perspectiva é 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
Coordenadas de modelagem
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadas de modelagem
Localizaçãoinicial em(0, 0) comeixos x e yalinhados
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadas de modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadas de modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadas de modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
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
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
• Escalamento não-isotrópico: valores escalares diferentes 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:
by
ax
y
x
'
'
y
x
b
a
y
x
0
0
'
'
Matriz de escalamento
D. Brogan, Univ. of Virginia
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( QX )Rsin( Qy
)(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
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
y
x
y
x
cossin
sincos
'
'
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Translação 2D
y
x
y
x
tytx
tt
yx
yx
''
y
xx
y
y
x
t
tt
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*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
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) * siny’ = (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
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 uma matriz
• Multiplicar matriz por vetor-coluna aplicar transformação a um ponto
yx
dcba
yx''
dcba
dycxy
byaxx
'
'
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Representação Matricial
• Transformações são combinadas por multiplicação de matrizes
yx
lkji
hgfe
dcba
yx
''
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
q
kkjikij bac
1
qmqq
m
m
nqnn
q
q
bbb
bbb
bbb
aaa
aaa
aaa
21
22221
11211
21
22221
11211
ABC
100
010
001
Ineutro:M. Gattass, PUC-Rio
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
*'
*'
y
x
s
s
y
x
y
x
0
0
'
'
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'
y
x
y
x
cossin
sincos
'
'
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
tyy
txx
'
'NÃO!
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
• Como representar uma translação como matriz 3x3?
y
x
tyy
txx
'
'
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
•Coordenadas homogêneas– representam
coordenadas em 2 dimensões com vetor 3
1
homogêneas coord. yx
yx
• 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?
y
x
tyy
txx
'
'
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
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 para representar muitas transformações úteis em CG
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
1100
0cossin
0sincos
1
'
'
y
x
y
x
1100
10
01
1
'
'
y
x
t
t
y
x
y
x
1100
01
01
1
'
'
y
x
sh
sh
y
x
y
x
Translação
RotaçãoCisalhamento (Shear)
1100
00
00
1
'
'
y
x
s
s
y
x
y
x
Escalamento
Alberto Raposo – PUC-Rio
Cisalhamento (Shear)
yxshy
yshxx
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 PM. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Composição de Matrizes
• Transformações podem ser combinadas pela multiplicação de matrizes
w
y
x
sy
sx
ty
tx
w
y
x
100
00
00
100
0cossin
0sincos
100
10
01
'
'
'
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 faz diferença– Multiplicação de matrizes não é comutativa
p’ = T * R * S * p
“Global” “Local”
Alberto Raposo – PUC-Rio
Ordem das Transformações
x
y
y
xp
R x
y
2
22 y
xp
T
x
y
1
11 y
xp
R x
y
y
x1p
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 em torno da extremidade a
a a
Resultado esperado
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?
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
Alberto Raposo – PUC-Rio
Composição de Matrizes
1''
1
100010301
1000)45cos()45sin(0)45sin()45cos(
100010301
y
x
y
x
aa
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 por matriz.
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
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
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
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
''''
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
wzyx
wzyx
1000010000100001
'''
w
z
y
x
t
t
t
w
z
y
x
z
y
x
1000
100
010
001
'
'
'
w
z
y
x
s
s
s
w
z
y
x
z
y
x
1000
000
000
000
'
'
'
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
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
wzyx
wzyx
1000010000cossin00sincos
'''
Rotação em torno de Z:
w
z
y
x
w
z
y
x
1000
0cos0sin
0010
0sin0cos
'
'
'
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çãoR()?– Aplicar o inverso da rotação: R(-)
•Construindo R(-) :– cos(-) = cos()
– sin (-) = - sin ()
• Assim: R(-) = RT()
10000cos0sin00100sin0cos
10000cos0sin00100sin0cos
T
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
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)
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?
Alberto Raposo – PUC-Rio
Ângulos de Euler
Fundamentos da Comp. GráficaJonas Gomes, Luiz Velho
Alberto Raposo – PUC-Rio
Ângulos de Euler
1000
0
0
0
yxzxzyxzxzyx
yxzxzyxzxzyx
yzyzy
cccssscsscsc
csccssssccss
ssccc
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
Alberto Raposo – PUC-Rio
ox 90o
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
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/AnnotatedVrmlRef/Book.html