rotações e quatérnios
DESCRIPTION
Rotações e Quatérnios. Objetos compostos hierarquicamente. Hieraquia de movimentos. x’. y’. z’. 1. x’. y’. z’. 1. Transformações em 3D (translações e escalas). y. 1. 0. 0. t x. x. x. 0. 1. 0. t y. y. =. 0. 0. 1. t z. z. z. 0. 0. 0. 1. 1. s x. 0. 0. 0. x. 0. - PowerPoint PPT PresentationTRANSCRIPT
MGattass
Rotações e Quatérnios
MGattass
Objetos compostos hierarquicamente
MGattass
Hieraquia de movimentos
MGattass
Transformações em 3D(translações e escalas)
x’
y’
z’
1
0
1
0
0
0
0
1
0
tx
ty
tz
1
y
z
1
x
=
1
0
0
0
x
y
z
x’
y’
z’
1
0
sy
0
0
0
0
sz
0
0
0
0
1
y
z
1
x
=
sx
0
0
0
MGattass
Rotação em torno do eixo y
x
y
z
'i'j
'k
y
y
sin
0
cos
'i
0
1
0
'j
y
y
cos
0
sin
'k
z
y
x
z
y
x
yy
yy
cos0sin
010
sin0cos
'
'
'
y
11000
0cos0sin
0010
0sin0cos
1
'
'
'
z
y
x
z
y
x
yy
yy
'k'i
k
i
z
x
'ˆˆ jj
y
MGattass
Rotação em torno do eixo x
x
y
z
x
11000
0cossin0
0sincos0
0001
1
'
'
'
z
y
x
z
y
x
xx
xx
'i'j
'k
0
0
1
'i
x
x
sin
cos
0
'j
x
x
cos
sin
0
'k
z
y
x
z
y
x
xx
xx
cossin0
sincos0
001
'
'
'
MGattass
Rotação em torno do eixo z
x
y
z
'i'j
'k
0
sin
cos
'ˆ z
z
i
0
cos
sin
'ˆ z
z
j
1
0
0
'k
z
y
x
z
y
x
zz
zz
100
0cossin
0sincos
'
'
'
z
11000
0100
00cossin
00sincos
1
'
'
'
z
y
x
z
y
x
zz
zz
MGattass
Rotações em torno dos eixos cartesianos
x
y
z
x
y
z
11000
0cossin0
0sincos0
0001
1
'
'
'
z
y
x
z
y
x
xx
xx
11000
0cos0sin
0010
0sin0cos
1
'
'
'
z
y
x
z
y
x
yy
yy
11000
0100
00cossin
00sincos
1
'
'
'
z
y
x
z
y
x
zz
zz
MGattass
Instanciação de objetos
braço
ante-braço
x
y
z
1
1
1
MGattass
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
1
11 y
xp
x
y
2
22 y
xp
T
(a)
(b)
MGattass
Composição com sistema local móvel
x,xL
y,yL
x L
y L
TL
x
y
p2 = R T pp1= T p e p2 = R p1
x
TR
y
x
y
xp
x
y y
1
11 y
xp
2
22 y
xp
p’= R p e p2 = TL p’ p2 = R T pou
p2
xy L
x
y
x LR p’p
p2 = R T R-1 R p
MGattass
Instâncias de objetos
x2y
z2
xz
y2x4
y4
z4
x6
x1
y1
z1
x3
y3
z3
x5 z5y5d1
d2
MGattass
x2y
z2
xz
y2x4
y4
z4
x1
y1
z1
x3
y3
z3
x5 z5y5d1
d2
base I
ante-braço RyRz1Ty1
cotovelo RyRz1Ty1Ty2
braço RyRz1Ty1Ty2 Rz3Ty3
pulso RyRz1Ty1Ty2 Rz3Ty3 Ty3
mão RyRz1Ty1Ty2 Rz3Ty3 Ty3 Rz5
CMCOpenGL:
x2y
z2
xz
y2x4
y4
z4
x1
y1
z1
x3
y3
z3
x5 z5y5d1
d2
Desenha a base;Roda em y; Roda em z1;Translada em y1 de d1/2;Desenha o ante-braço;Translada em y2 de d1/2;Desenha cotovelo;Roda em z3;Translada em y3 de d2/2;Desenha o braço;Translada em y3 de d2/2;Desenha o pulso;Roda em z5;Desenha a mão;
MGattass
Hierarquia em árvore
base
braço direitobraço esquerdo
MGattass
Hierarquia em árvore
x5
y5
y6
y7
y8 y9
x6
x7
x8x9
a
b
c
d
e ef
a
palma
base dos dedos
dedo direitodedo esquerdo
y7
y8 y9
x7
x8x9
a
b
c
e ef
void desenhaDedos(float b,float c, float e, float f ) { /* dedo esquerdo */ glPushMatrix(); /* Salva matriz corrente C0 */ glTranslatef((f+e)/2,(b+c)/2,0.); /* C=CTesq */ glScalef(e,c,e); /* C=CS */ glutSolidCube(1.0); glPopMatrix(); /* Recupera da pilha C=C0 */ /* dedo direito */ glPushMatrix(); /* Salva matriz corrente C0 */ glTranslatef(-(f+e)/2,(b+c)/2,0.); /* C=CTdir */ glScalef(e,c,e); /* C=CS */ glutSolidCube(1.0); glPopMatrix(); /* Recupera da pilha C=C0 */}
MGattass
Algebra da rotação em torno de um eixo unitário ê
e
pp
||p
v
'p
x
y
z
pev ˆ
)()(' || pppp RR
)()(' || ppp RR
vppp )()(cos' || sen
p
p
'pv
)ˆ)(()ˆ)ˆ()((cosˆ)ˆ(' peepepepep sen
),ˆ,(' epp f
MGattass
Rotação em torno de um eixo ê
))(())((cos)(cos)(' pêêpêpêpêp sen
))(())(cos1()(cos' pêêpêpp sen
e
pp
||p
v
'p
x
y
z
pev ˆ
p
p
'pv
)ˆ)(()ˆ)ˆ()((cosˆ)ˆ(' peepepepep sen
),ˆ,(' epp f
MGattass
A coluna da matriz é a transformada dos vetores da base
sin)cos1(
sin)cos1(
)cos1(cos0
sin)cos1(
0
0
1
cos
2
22
21
11
yzx
zyx
x
y
z
z
y
x
x
eee
eee
e
e
e
e
e
e
e
m
m
m
sin)cos1(
)cos1(cos
sin)cos1(
0sin)cos1(
0
1
0
cos 2
32
22
12
xzy
y
zxy
x
z
z
y
x
y
eee
e
eee
e
e
e
e
e
e
m
m
m
233
23
13
)cos1(cos
sin)cos1(
sin)cos1(
0
sin)cos1(
1
0
0
cos
z
xyz
yxz
x
y
z
y
x
z
e
eee
eee
e
e
e
e
e
e
m
m
m
11000
0
0
0
'
'
'
333231
232221
131211
z
y
x
mmm
mmm
mmm
w
z
y
x
MGattass
Matriz da rotação em torno de um eixo ê
1000
0)cos1(cossin)cos1(sin)cos1(
0sin)cos1()cos1(cossin)cos1(
0sin)cos1(sin)cos1()cos1(cos
2
2
2
zxzyyzx
xyzyzyx
yxzzxyx
eeeeeee
eeeeeee
eeeeeee
M
11000
0
0
0
'
'
'
333231
232221
131211
z
y
x
mmm
mmm
mmm
w
z
y
x
x
y
z
z
y
x
e
e
e
ê
MGattass
Fórmula de Rodrigues 1
êêêIR )()cos1()(cos 3 senT
ee
p
e
'p
Tsen
23
)cos1()()(cos
IR
2
2
2
2
)cos1(
0
0
0)(
100
010
001
)(cos
zyzxz
zyyxy
zxyxx
xy
xz
yzsen
R
MGattass
Fórmula de Rodrigues 2
e
p
e
'p
2
2
2
2
)cos1(
0
0
0)(
100
010
001
)(cos
zyzxz
zyyxy
zxyxx
xy
xz
yzsen
R
32
2
2
2
22
22
222
0
0
0
I
zyzxz
zyyxy
zxyxx
zyzxz
zyyxy
zxyxx
xy
xz
yz
223
)cos1()(
sen
IR
MGattass
Matriz de rotação em torno de um eixo ê que não passa pela origem
xy
z
z
y
x
e
e
e
ê
xy
z
z
y
x
e
e
e
ê
p0
p0
xy
z
z
y
x
e
e
e
ê
p0
M
xy
z
z
y
x
e
e
e
ê
p0
1000
100
010
001
0
0
0
z
y
x
T
1000
100
010
001
0
0
0
1
z
y
x
T
MGattass
Interface para rotaçõestipo ArcBall
MGattass
Rotação do ArcBall
MGattass
Conservativo
MGattass
90°
+ 90°
Complexidade da Rotação
Giroscópio
ox 90o
z 90
ox 90 o
z 90
oy 90
MGattass
Yaw-Pitch-Roll
cos0sin
010
sin0cos
R
cossin0
sincos0
001
R
100
0cossin
0sincos
R
coscoscossinsinsincossinsincossincos
sincoscoscossinsinsinsincoscossinsin
sinsincoscoscos
R
x
z y
- yaw - pitch - roll
MGattass
Parametrização de rotações: Ângulos de Euler
1000
0
0
0
),,(yxzxzyxzxzyx
yxzxzyxzxzyx
yzyzy
zyx cccssscsscsc
csccssssccss
ssccc
R
xx
y
z
y
x
y
z
z
x
y
z
MGattass
Ângulos de EulerGimbal lock
MGattass
Ângulos de EulerGimbal lock
1000
00
00
0100
),90,(zxzxzxzx
zxzxzxzxz
ox csscsscc
ccsssccsR
xx
y
z
y=90o
x
y
z
z
x
y
z
1000
00)sin()cos(
00)cos()sin(
0100
zxzx
zxzx
1000
0
0
0
),,(yxzxzyxzxzyx
yxzxzyxzxzyx
yzyzy
zyx cccssscsscsc
csccssssccss
ssccc
R
Interpolação não gera posições “entre”
MGattass
Quatérnios
kjiq zyxs
vq ,s
MGattass
Soma e multiplicação por escalar
2121221121,,, vvvvqq ssss
vvq asasaa ,,
MGattass
Produto de dois quatérnios
kkkjkik
jkjjjij
ikijiii
kjiqq
21212121
21212121
21212121
2121212121
zzyzxzsy
zyyyxysy
zxyxxxsx
zsysxsss
kjikjiqq 2222111121zyxszyxs
jikkiikjjkkjiij
kkjjii
,,
1
kji
kjikji
)()()(
)()(
)(
212121212121
11122221
2121212121
xyyxzxxzyzzy
zyxszyxs
zzyyxxss
MGattass
Produto de dois quatérnios(cont.)
),( 211221212121vvvvvvqq ssss
kji
kjikji
)()()(
)()(
)(
212121212121
11122221
2121212121
xyyxzxxzyzzy
zyxszyxs
zzyyxxss
MGattass
Conjugado, normas eproduto interno
conjugado de um quatérnio vvq ,, ** ss
norma de um quatérnio
22222* ,,)( zyxssssn vvvvqqq
produto interno de dois quatérnios
2121212121 zzyyxxss qq
norma euclidiana 2
)( qq n
MGattass
Quatérnio inverso e unitário
inverso de um quatérnio *1
)(
1q
n
1)(
)(
)(
1 *1
q
qqq
qqq
n
n
n
q1
ˆ unitário de um quatérnio
vq ˆsin,cosˆ
MGattass
Quatérnios e rotações
Dada uma rotação definida por um eixo ê e um ângulo construímos o quatérnio unitário:
êq
2sin,
2cosˆ
Dado um ponto qualquer p do R3 construímos o quatérnio:
pp ,0
Calculamos o produto:1ˆˆ' qpqp
',0' pp
MGattass
Demostração
êpêp
2sin,
2cos,0
2sin,
2cos)',0(
))(())(cos1()(cos' pêêpêpp sen
…
MGattass
Composição de rotações
1q
2qseguida de
12
1112 ˆ)ˆˆ(ˆ qqpqq
11212 )ˆˆ()ˆˆ( qqpqq
12 ˆˆ qq
MGattass
Composição de rotações
)0,0,1(,)0,0,1)(30sin(),30cos(ˆ21
23
1 ooq
)0,1,0(,)0,1,0)(45sin(),45cos(ˆ2
12
12
ooq
),,(,)0,0,1(,)0,1,0(,ˆˆ5
153
51
410
46
21
23
21
21
12qq
05.104 ),,(5
153
51ê
ox 90
oz 90 )1,0,0)(45sin(),45cos(ˆ 00
1q
)0,0,1)(45sin(),45cos(ˆ 00
1q
)1,0,0(
2
1,
2
1ˆ
1q
)0,0,1(
2
1,
2
1ˆ
2q
Exemplo
)1,0,0(
2
1,
2
1)0,0,1(
2
1,
2
1ˆˆ
12qq
)
3
1,
3
1,
3
1(
2
3,
2
1ˆˆ
12qq
o120
3
13
13
1 ê
MGattass
Interpolação de quatérnios
1q
2q
21)1()( qqq
aat
não é unitário
não representa
rotação
]1,0[a
MGattass
Interpolação de quatérnios
(1-t)1
q
2q
)(tq
1)( tq
)cos()(2
tt qq
)cos(21
21)( qqq
bat
)sin(
)sin(ˆ
)sin(
1sinˆ,ˆ,ˆ)(ˆ
2121
tt
tSlerpt qqqqq
t
MGattass
MGattass
MGattass
Quatérnios e matrizes
),,,(ˆ zyxwq
1ˆˆ qpq
1000
0)(212222
022)(2122
02222)(21
22
22
22
ˆyxxwyzywxz
xwyzzxzwxy
ywxzzwxyzy
qM
MGattass
Matrizes e quatérnios
1000
0
0
0
333231
232221
131211
mmm
mmm
mmm
332211222 1)222(24 mmmzyx
3322112 1)1(44 mmmw
33221121 1 mmmw
w
mmx
42332
w
mmy
43113
w
mmz
41221
1000
0)(212222
022)(2122
02222)(21
22
22
22
yxxwyzywxz
xwyzzxzwxy
ywxzzwxyzy
MGattass
Matriz de rotação em torno de um eixo))(())(cos1()(cos' pêêpêpp sen
z
y
x
ee
ee
ee
xy
xz
yz
0
0
0
sinsin pê
z
y
x
100
010
001
coscos p
z
y
x
eee
e
e
e
zyx
z
y
x
)cos1()()cos1( pêê
pêêêIp )()cos1()(cos' 3 senT
êêêIR )()cos1()(cos 3 senT
MGattass
Demonstração de
z
y
x
eeeee
eeeee
eeeee
zeeyeexee
zeeyeexee
zeeyeexee
zyzxz
zyyxy
zxyxx
zzyzxz
zyyyxy
zxyxxx
2
2
2
)( êpê
)(
)(
)(
)(
zeyexee
zeyexee
zeyexee
e
e
e
zeyexe
zyxz
zyxy
zyxx
z
y
x
zyxêpê
z
y
x
eee
e
e
e
zyx
z
y
x
êpê )(
pêêêpê T )(
MGattass
Transformação de normais
x
y
x
y
sx=0.5
d
c
b
a
n
0pn
1
z
y
x
p
0
1
1
z
y
x
dcbaT MMpn
1' Mn dcbaT
0
1
z
y
x
dcbaT pn
1
'z
y
x
Mp
d
c
b
a
TMn'
d
c
b
a
n
x
y
MGattass
FIM