Transformaçõesmotta/dim102/transformacoes.pdf · 7 DIM102 Transformações 2D Rotação •...
Transcript of Transformaçõesmotta/dim102/transformacoes.pdf · 7 DIM102 Transformações 2D Rotação •...
DIM102 1
Transformações
35T56 – Sala 3E1Bruno Motta de CarvalhoDIMAp – Sala 15 – Ramal 227
DIM1022
Transformações
Porquê usar transformações?Criar objetos em sistemas de
coordenadas convenientes Reusar formas básicas várias vezesModelagem hierárquicaIndependem do sistema utilizado
T
DIM1023
Transformações 2D
Translação• Adição dos componentes dos
vetores v’ = v + t onde
ex’ = x + dx y’ = y + dy
• Movendo polígonos: translação de vértices (vetores) e redesenho de linhas
• Preserva comprimentos (isométrico)
• Preserva ânguloss (conformal)• Não é uma combinação linear
dx = 2dy = 3
Y
X 0
1
1
2
2
3 4 5 6 7 8 9 10
3
4
5
6
12
44
=
=
=
dydx
tyx
vyx
v ,''
',
TranslaçãoT
DIM1024
Transformações 2D
Scaling• Multiplicação dos componentes
dos vetores por um escalar • v’ = Sv onde
and
• Não preserva comprimentos • Não preserva ângulos (exceto
quando o scaling é uniforme)
Y
X 0
1
1
2
2
3 4 5 6 7 8 9 10
3
4
5
6
12
13
26
29
23
==
y
x
ss
=
=
''
',yx
vyx
v
=
y
x
ss
S0
0
DIM1025
Transformações 2D
Rotação• Rodar um ponto P=(x,y) de um
ângulo relativamente à origem θsignifica encontrar outro ponto Q=(x´,y´) sobre uma circunferência centrada na origem que passa pelos dois pontos.
=
=
''',
yxv
yxv
DIM1026
Transformações 2D
=
=
''',
yxv
yxv
Rotação• Rodar um ponto P=(x,y) de um
ângulo relativamente à origem θsignifica encontrar outro ponto Q=(x´,y´) sobre uma circunferência centrada na origem que passa pelos dois pontos.
DIM1027
Transformações 2D
Rotação• Rotação dos vetores por um
ângulo θ v’ = Rθ v where
e x’ = x cos θ – y sin θ
y’ = x sin θ + y cos θ• Preserva comprimentos e ângulos• Prova usa fórmulas de soma de
ângulos • cos(α+β)= cosα cosβ sinα sinβ sin(α+β)= sinα cosβ + sinβ cosα
6πθ =
Y
X 0
1
1
2
2
3 4 5 6 7 8 9 10
3
4
5
6
θ
=
=
''
',yx
vyx
v
−=
θθθθ
θ cossinsincos
R
DIM1028
Transformações 2D
Shear• Pega e um objeto e
entorta para o lado
• Quadrados se tornam paralelogramas – coordenadas x entortam para a direita, enquanto coordenadas y permanecem as mesmas
=
101 xsh
ShearθY
X 0
1
1
2
2
3 4 5 6 7 8 9 10
3
4
5
6
θ
4πθ =
DIM1029
Coordenadas Homogêneas Matriz 2x2 não pode ser usada para composição porque
translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que as três
operações sejam expressas de maneira homogênea, permitindo a composição de operações usandose multiplicação de matrizes 3x3
=
≠≠→
wy
wxPyxP
wwyxPwwwywxPyxP
dd
h
hd
','),(
0),,','(0),,,(),(
22
2
DIM10210
Coordenadas Homogêneas
• P2d é a interseção da linha determinada por Ph com o plano w = 1
• Logo, um número infinito de pontos correspondem a (x, y, 1): eles constituem a linha (tx, ty, tw)
P2d (x/w,y/w,1)
Ph (x,y,w)
Y
X
W
1
DIM10211
Coordenadas Homogêneas Para pontos escritos em coordenadas homogêneas
[x y 1]T , translação, scaling and rotação relativas a origem são representadas por:
DIM10212
Coordenadas Homogêneas
Considere a matriz de rotação
As colunas e linhas da submatriz 2X2:
São vetores unitários (comprimento=1) São perpendiculares (produto interno=0)
Estas propriedades das linhas e colunas preservam comprimentos e ângulos da geometria original. Deste modo, essa matriz é chamada de transformação de corpo rígido (rigidbody)
−=
1000cossin0sincos
)( φφφφ
φR
DIM10213
Composição de Transformações 2D Como fazer quando um objeto não está centralizado na
origem? Translação para a origem, seguida de rotação e/ou
scaling, e translação inversa Logo, é mais eficente a composição de várias
transformações Translação, scaling e rotação são representados por:
translation:
scale:
rotation:
v’ = v + t
v’ = Sv
v’ = Rv
DIM10214
Composição de Transformações 2D
Com a matriz T, podese evitar translações indesejáveis introduzidas quando nós usamos scaling ou rotacionamos um objeto não centrado na origem. Solução: translação do objeto para a origem, seguida de scaling ou rotação, e translação inversa
HdydxTRdydxTHdydxTRHdydxTHHouse ),()(),(),()(),()( θθ −−
DIM10215
Composição de Transformações 2D Exemplo: Translação + Rotação +
Translação
−−+−−
=
−−
−
100sin)cos1(cossinsin)cos1(sincos
1001001
1000cossin0sincos
1001001
11
11
1
1
1
1
θθθθθθθθ
θθθθ
xyyx
yx
yx
DIM10216
Transformação JanelaparaViewport
+−−−
−−
+−−−
−−
=
−−
−−
−−
100)()(
)()(0
)()(0
)()(
1001001
100
0)()(0
00)()(
1001001
minminmax
minmaxmin
minmax
minmax
minminmax
minmaxmin
minmax
minmax
min
min
minmax
minmax
minmax
minmax
min
min
vyyvvy
yyvv
uxxuux
xxuu
vu
yyvv
xxuu
vu
DIM10217
Transformações 3D• Sistema de coordenadas destro
(righthanded)• Rotações positivas são
definidas tais que, quanto olhando de um eixo positivo para a origem, uma rotação de 90º transforma um eixo positivo em outro
• Eixo Direção de rot. Pos.x y para zy z para xz x para y
x
y
z
DIM10218
Transformações 3D
1000100
1001
dzdyshdxsh
y
x
1000000000000
z
y
x
ss
s
Shear SHXY
Scaling
1000100010001
dzdydx
Translação
−
10000cossin00sincos00001
θθθθ
−10000cos0sin00100sin0cos
θθ
θθ
−
1000010000cossin00sincos
θθθθ
Rotação – x (yaw)
Rotação – y (pitch)
Rotação – z (roll)
DIM10219
Quatérnios Motivação:
DIM10220
Quatérnios Motivação:
Dificuldade de usar rotação com a notação de Euler. Dificuldade de fazer uma interpolação entre as rotações
A utilização de quatérnios para implementação de rotações Garante uma rotação direta e firme entre duas
orientações Define movimentos que são independentes de
qualquer sistemas de coordenadas A combinação de quatérnios é mais eficiente que
multiplicação de matrizes
DIM10221
Quatérnios William Hamilton, em 1843 Eles representam uma orientação por um ângulo de
rotação antihorário (θ) ao redor de um vetor (V) arbitrário Fazem parte da classe de números hipercomplexos
DIM10222
Quatérnios
• Podem ser pensados como pontos em uma esfera 4D ou vetores 3D com uma rotação associada
• Algumas vezes é representado por s (rotação) e v (eixo de rotação)
=
=vs
qqqq
q
4
3
2
111222
−=−===
kjikji
DIM10223
Quatérnios
• Adição e subtração funcionam com em números complexos
• Multiplicação de quatérnios é associativa mas não é comutativa
• Complexo conjugado de um quatérnio
DIM10224
Quatérnios
DIM10225
Quatérnios
• Produto quatérnioconjugado
• Norma• Inversa multiplicativa
23
22
21
2* vvvsqq +++=⋅
*23
22
21
2||)(norma qqvvvsqq ⋅=+++==
DIM10226
Quatérnios
• Rotação (sistema destro/righthanded)
oantihorárisentido,
horáriosentido,*
'
*'
qvqv
qvqv
q
q
⋅⋅=
⋅⋅=
qvq /)2/sin()2/cos( θθ +=
DIM10227
Quatérnios Vantagens:
Não exibe singularidades na sua parametrização Interpolação consistente e suave de orientações Composição simples e eficiente de rotações
Desvantagens: Cada orientação é representada por dois quatérnios Representa orientações e não rotações (0º ao redor de
V é o mesmo quatérnio que 360º ao redor de V) Implementa somente rotações. Matrizes são utilizadas
para implementar as outras transformações
DIM10228
Grafos de Cena Cenas 3D são armazenadas em uma grafo direcionado
acíclico (DAG) chamado de grafo de cena (scene graph) Open Inventor (TGS) Open Scene Graph Java3D™ (Sun) X3D ™ (VRML ™) WorldToolKit ™ (Sense8)
• Formatos típicos de grafos de cena (existem centenas de pacotes!)
– Objetos (cubos, esferas, cones, poliédros, etc.) com valores padrão (por exmplo, localizados na origem com volume prédefinido) armazenados como nós do grafo
– Atributos (cor, mapa de textura, etc.) e transformações também são nós grafos de cena
DIM10229
Grafos de CenaROBOT
upper body lower body
head trunk arm
stanchion base
2. We transform them
3. To make subgroups
4. Transform subgroups
5. To get final scene
DIM10230
Grafos de Cena Geralmente os nós de transformação contém
pelo menos uma matriz que faz a transformação; adicionalmente eles podem conter parâmetros de transformação individuais
Para se determinar a matriz de transformação composta (CTM) final para um nó objeto devese compor todas as transformações dos pais dos nós durante travessias do grafo Como isso é feito varia de pacote a pacote!
DIM10231
Grafos de Cena• Um examplo: Para o1, CTM = m1
Para o2, CTM = m2* m3 Para o3, CTM = m2* m4* m5 Para um vértice v em o3, sua posição no sistema de coordenadas do mundo (raiz do grafo) é:CTM v = (m2*m4*m5)v
m1 m2
m3 m4
o1
o2
o3
g1
g2
g: nós de grupo
m: nós de matrizes de transformação
o: nós objeto