Rotações e Quatérnios

Post on 05-Jan-2016

35 views 0 download

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

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

qq

)()()(

)()(

)(

212121212121

11122221

2121212121

xyyxzxxzyzzy

zyxszyxs

zzyyxxss

MGattass

Produto de dois quatérnios(cont.)

),( 211221212121vvvvvvqq ssss

kji

kjikji

qq

)()()(

)()(

)(

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

qq

n

1)(

)(

)(

1 *1

q

qqq

qqq

n

n

n

qq

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

1q

)0,0,1(

2

1,

2

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

qq

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