Rotações e Quatérnios

56
MGattass 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 Presentation

Transcript of Rotações e Quatérnios

Page 1: Rotações e Quatérnios

MGattass

Rotações e Quatérnios

Page 2: Rotações e Quatérnios

MGattass

Objetos compostos hierarquicamente

Page 3: Rotações e Quatérnios

MGattass

Hieraquia de movimentos

Page 4: Rotações e Quatérnios

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

Page 5: Rotações e Quatérnios

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

Page 6: Rotações e Quatérnios

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

'

'

'

Page 7: Rotações e Quatérnios

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

Page 8: Rotações e Quatérnios

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

Page 9: Rotações e Quatérnios

MGattass

Instanciação de objetos

braço

ante-braço

x

y

z

1

1

1

Page 10: Rotações e Quatérnios

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)

Page 11: Rotações e Quatérnios

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

Page 12: Rotações e Quatérnios

MGattass

Instâncias de objetos

x2y

z2

xz

y2x4

y4

z4

x6

x1

y1

z1

x3

y3

z3

x5 z5y5d1

d2

Page 13: Rotações e Quatérnios

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:

Page 14: Rotações e Quatérnios

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;

Page 15: Rotações e Quatérnios

MGattass

Hierarquia em árvore

base

braço direitobraço esquerdo

Page 16: Rotações e Quatérnios

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

Page 17: Rotações e Quatérnios

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 */}

Page 18: Rotações e Quatérnios

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

Page 19: Rotações e Quatérnios

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

Page 20: Rotações e Quatérnios

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

Page 21: Rotações e Quatérnios

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

ê

Page 22: Rotações e Quatérnios

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

Page 23: Rotações e Quatérnios

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

Page 24: Rotações e Quatérnios

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

Page 25: Rotações e Quatérnios

MGattass

Interface para rotaçõestipo ArcBall

Page 26: Rotações e Quatérnios

MGattass

Rotação do ArcBall

Page 27: Rotações e Quatérnios

MGattass

Conservativo

Page 28: Rotações e Quatérnios

MGattass

90°

+ 90°

Complexidade da Rotação

Giroscópio

Page 29: Rotações e Quatérnios

ox 90o

z 90

ox 90 o

z 90

oy 90

Page 30: Rotações e Quatérnios

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

Page 31: Rotações e Quatérnios

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

Page 32: Rotações e Quatérnios

MGattass

Ângulos de EulerGimbal lock

Page 33: Rotações e Quatérnios

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

Page 34: Rotações e Quatérnios

Interpolação não gera posições “entre”

Page 35: Rotações e Quatérnios

MGattass

Quatérnios

kjiq zyxs

vq ,s

Page 36: Rotações e Quatérnios

MGattass

Soma e multiplicação por escalar

2121221121,,, vvvvqq ssss

vvq asasaa ,,

Page 37: Rotações e Quatérnios

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

qq

)()()(

)()(

)(

212121212121

11122221

2121212121

xyyxzxxzyzzy

zyxszyxs

zzyyxxss

Page 38: Rotações e Quatérnios

MGattass

Produto de dois quatérnios(cont.)

),( 211221212121vvvvvvqq ssss

kji

kjikji

qq

)()()(

)()(

)(

212121212121

11122221

2121212121

xyyxzxxzyzzy

zyxszyxs

zzyyxxss

Page 39: Rotações e Quatérnios

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

Page 40: Rotações e Quatérnios

MGattass

Quatérnio inverso e unitário

inverso de um quatérnio *1

)(

1q

qq

n

1)(

)(

)(

1 *1

q

qqq

qqq

n

n

n

qq

q1

ˆ unitário de um quatérnio

vq ˆsin,cosˆ

Page 41: Rotações e Quatérnios

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

Page 42: Rotações e Quatérnios

MGattass

Demostração

êpêp

2sin,

2cos,0

2sin,

2cos)',0(

))(())(cos1()(cos' pêêpêpp sen

Page 43: Rotações e Quatérnios

MGattass

Composição de rotações

1q

2qseguida de

12

1112 ˆ)ˆˆ(ˆ qqpqq

11212 )ˆˆ()ˆˆ( qqpqq

12 ˆˆ qq

Page 44: Rotações e Quatérnios

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ê

Page 45: Rotações e Quatérnios

ox 90

oz 90 )1,0,0)(45sin(),45cos(ˆ 00

1q

)0,0,1)(45sin(),45cos(ˆ 00

1q

)1,0,0(

2

1,

2

1q

)0,0,1(

2

1,

2

2q

Exemplo

Page 46: Rotações e Quatérnios

)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 ê

Page 47: Rotações e Quatérnios

MGattass

Interpolação de quatérnios

1q

2q

21)1()( qqq

aat

não é unitário

não representa

rotação

]1,0[a

Page 48: Rotações e Quatérnios

MGattass

Interpolação de quatérnios

(1-t)1

q

2q

)(tq

1)( tq

)cos()(2

tt qq

)cos(21

qq

21)( qqq

bat

)sin(

)sin(ˆ

)sin(

1sinˆ,ˆ,ˆ)(ˆ

2121

tt

tSlerpt qqqqq

t

Page 49: Rotações e Quatérnios

MGattass

Page 50: Rotações e Quatérnios

MGattass

Page 51: Rotações e Quatérnios

MGattass

Quatérnios e matrizes

),,,(ˆ zyxwq

1ˆˆ qpq

1000

0)(212222

022)(2122

02222)(21

22

22

22

ˆyxxwyzywxz

xwyzzxzwxy

ywxzzwxyzy

qM

Page 52: Rotações e Quatérnios

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

Page 53: Rotações e Quatérnios

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

Page 54: Rotações e Quatérnios

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 )(

Page 55: Rotações e Quatérnios

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

Page 56: Rotações e Quatérnios

MGattass

FIM