modelagem baseada na física simulação de corpos rígidos

59
1 Modelagem Baseada na Física Simulação de Corpos Rígidos César Candido Xavier Mestrado Computação Gráfica UFRJ - COPPE

Upload: angelo

Post on 20-Mar-2016

32 views

Category:

Documents


1 download

DESCRIPTION

Modelagem Baseada na Física Simulação de Corpos Rígidos. César Candido Xavier Mestrado Computação Gráfica UFRJ - COPPE. Objetivo. Apresentar os principais conceitos das notas de aula elaboradas por David Baraff no Modelamento Baseado na Física para simulação de movimentos de Corpos Rígidos. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Modelagem Baseada na Física Simulação de Corpos Rígidos

1

Modelagem Baseada na FísicaSimulação de Corpos Rígidos

César Candido XavierMestrado Computação GráficaUFRJ - COPPE

Page 2: Modelagem Baseada na Física Simulação de Corpos Rígidos

2

ObjetivoApresentar os principais conceitos das

notas de aula elaboradas por David Baraff no Modelamento Baseado na Física para simulação de movimentos de Corpos Rígidos.

Page 3: Modelagem Baseada na Física Simulação de Corpos Rígidos

3

Roteiro• Modelando o Movimento de uma Partícula• Modelando o Movimento um Corpo Rígido

– Velocidade Angular– Massa de um Corpo– Centro de Massa– Força e Torque– Momento Linear– Momento Angular

• Momento Inércia• Equação Movimento de um Corpo Rígido• Codificação em C++• Conclusão• Bibliografia

Page 4: Modelagem Baseada na Física Simulação de Corpos Rígidos

4

Modelando o Movimento de uma Partícula

Movimento de uma Partícula

Page 5: Modelagem Baseada na Física Simulação de Corpos Rígidos

5

Estado da Partícula

)()(tvtx

Y

Page 6: Modelagem Baseada na Física Simulação de Corpos Rígidos

6

Dinâmica da Partícula

Page 7: Modelagem Baseada na Física Simulação de Corpos Rígidos

7

Variáveis de Estado

mtFtv

tvtx

dtdY

dtd

/)()(

)()(

Page 8: Modelagem Baseada na Física Simulação de Corpos Rígidos

8

Múltiplas Partículas

)(tF )(tF

)(tF)(tF

)(tv

)(tv

)(tv

)(tv

Page 9: Modelagem Baseada na Física Simulação de Corpos Rígidos

9

Variáveis de Estado

mtFtv

mtFtv

tvtx

tvtx

dtdY

dtd

n

n

n

n

/)()(

/)()(

)()(

)()(

1

1

1

1

Page 10: Modelagem Baseada na Física Simulação de Corpos Rígidos

10

Solução EDO

Page 11: Modelagem Baseada na Física Simulação de Corpos Rígidos

11

Solução EDO Y(t0) len t0 Solucionador Y(t1)

EDO

t1

dydt

void dydt(double t, double y[ ],double ydot[ ])

Page 12: Modelagem Baseada na Física Simulação de Corpos Rígidos

12

dydt

mtFtv

mtFtv

tYdtd

tvtx

tvtx

tY

n

n

n

n

/)()(

/)()(

)(

)()(

)()(

)(1

1

1

1

Page 13: Modelagem Baseada na Física Simulação de Corpos Rígidos

13

Modelando um Corpo Rígido• Variáveis de Estado do Corpo Rígido

Page 14: Modelagem Baseada na Física Simulação de Corpos Rígidos

14

Equação Movimento de um Corpo Rígido

?)(?)(

?)(

?)( 11

tF

tv

tMv

tx

dtdY

dtd

Page 15: Modelagem Baseada na Física Simulação de Corpos Rígidos

15

Malha de Forças

1f

1f

1f

2f

3f 1)( ftF

Page 16: Modelagem Baseada na Física Simulação de Corpos Rígidos

16

Orientação• Iremos representar a orientação de

um corpo rígido pela matriz de rotação R(t). Os pontos são transformados de coordenadas do corpo para coordenadas do espaço como:

P(t)=R(t)p0 + x(t)

Page 17: Modelagem Baseada na Física Simulação de Corpos Rígidos

17

Mudança de Coordenadas

Coordenadas Espaço CorpoCoordenadas Espaço

Page 18: Modelagem Baseada na Física Simulação de Corpos Rígidos

18

Velocidade Angular• Representamos a velocidade angular como

um vetor, w(t), o qual codifica tanto a velocidade quanto o eixo de giro.

– Como w(t) e R(t) se relacionam ?

Page 19: Modelagem Baseada na Física Simulação de Corpos Rígidos

19

Interpretação Física da Matriz R(t)

• Sabemos que:

• Quem seria:

xz

xy

xx

rrr

tR001

)(

zzyzxz

zyyyxy

zxyxxx

rrrrrrrrr

tR )(

?001

)(

tR

Page 20: Modelagem Baseada na Física Simulação de Corpos Rígidos

20

Relação entre w(t) e R(t)• r(t) é fixo ao corpo, logo independe da

translação do corpo;•

btwtr )()(

btwtr

)()(

Page 21: Modelagem Baseada na Física Simulação de Corpos Rígidos

21

Relação entre w(t) e R(t)• Sabemos que no tempo t a direção do eixo

x é dado pela primeira coluna da matriz de rotação.

• A derivada desta, é a taxa de mudança deste vetor que é:

• Sabemos entretanto que a b é:

xz

xy

xx

rrr

tw )(

yxyx

zxzx

zyzy

abbaabbaabba

Page 22: Modelagem Baseada na Física Simulação de Corpos Rígidos

22

Relação entre w(t) e R(t)• Dado um vetor a podemos definir a* como

sendo a matriz:

• Então a b pode ser escrito:

00

0

xy

xz

yz

aaaaaa

a

baabbaabbaabba

bbb

aaaaaa

ba

yxyx

zxzx

zyzy

z

y

x

xy

xz

yz

00

0

Page 23: Modelagem Baseada na Física Simulação de Corpos Rígidos

23

Relação entre w(t) e R(t)• Utilizando a formulação anterior temos que:

• Pode ser escrito como:

• Como a matriz à direita é R(t) podemos escrever:

zz

zy

zx

yz

yy

yx

xz

xy

xx

rrr

rrr

rrr

twtR )()(

)()()( tRtwtR

zz

zy

zx

yz

yy

yx

xz

xy

xx

rrr

twrrr

twrrr

twtR )()()()(

Page 24: Modelagem Baseada na Física Simulação de Corpos Rígidos

24

Massa de um Corpo• Consideremos um corpo rígido feito de um

número grande de pequenas partículas, cada uma localizada:

• A massa total M do corpo será

)()()( 0 txrtRtr ii

N

iimM

1

Page 25: Modelagem Baseada na Física Simulação de Corpos Rígidos

25

Velocidade de uma Partícula• A velocidade é dada pela derivada da

posição da partícula, ou seja:

• Podemos reescrever como:

)()()()( 0 tvrtRtwtr ii

)())()()(()()( 0 tvtxtxrtRtwtr ii

)())()(()()( tvtxtrtwtr ii

)())()(()()( tvtxtrtwtr ii

Page 26: Modelagem Baseada na Física Simulação de Corpos Rígidos

26

Velocidade de uma Partícula

Page 27: Modelagem Baseada na Física Simulação de Corpos Rígidos

27

Centro de Massa• É definido como

• Quando utilizamos o centro de massa como sistema de coordenadas do corpo, queremos dizer que:

M

trmN

iii

1)(

000)(

10

0M

trmN

iii

Page 28: Modelagem Baseada na Física Simulação de Corpos Rígidos

28

Centro de Massa• Qual a localização do centro de massa em t

?

• Outra relação importante:

)()()()())()()(()(

1110

10

1 txM

mtx

M

txmrmtR

M

txtrtRm

M

trmN

ii

N

ii

N

iii

N

iii

N

iii

0))()(( txtrm ii

Page 29: Modelagem Baseada na Física Simulação de Corpos Rígidos

29

Equação do Movimento Corpo Rígido

?)()()(

)(

?)()()( 11

tFtRtw

tv

tMvtRtx

dtdY

dtd

Page 30: Modelagem Baseada na Física Simulação de Corpos Rígidos

30

Força e Torque• Torque difere da força uma vez que o

torque em uma partícula depende da localização relativa da mesma em relação ao centro de massa x(t).

• Intuitivamente a direção do torque é o do eixo em torno do qual o corpo gira.

• F(t) não traz informações sobre onde as várias forças agem em um corpo, ao contrário de τ(t), que nos dá a distribuição de forças sobre o corpo.

Page 31: Modelagem Baseada na Física Simulação de Corpos Rígidos

31

Força e Torque

Page 32: Modelagem Baseada na Física Simulação de Corpos Rígidos

32

Força e Torque

Page 33: Modelagem Baseada na Física Simulação de Corpos Rígidos

33

Momento Linear• O Momento Linear de uma partícula é

definido como sendo:

• O momento total P(t) é:

• Podemos escrevê-lo como:– – –

mvp

)()( trmtP ii

)))()(()()(()( txtrtwmtvmtP iii

)))()(()()(()( txtrtwmtvmtP iii

)()()()( tMvtvmtvmtP ii

Page 34: Modelagem Baseada na Física Simulação de Corpos Rígidos

34

Momento Linear• O momento linear de um corpo rígido é o

mesmo se ele fosse uma partícula de massa M e velocidade v(t).

• Obtemos diretamente:– – –

MtPtv

)()(

MtFtv )()(

)()( tFtP

Page 35: Modelagem Baseada na Física Simulação de Corpos Rígidos

35

Momento Angular• É o menos intuitivo dos conceitos

vistos até aqui...

• Proporcionará equações mais simples...

• O momento angular é definido como:).(, rpsenlémódulocujoprl

Page 36: Modelagem Baseada na Física Simulação de Corpos Rígidos

36

Momento Angular

vu

r

p

Page 37: Modelagem Baseada na Física Simulação de Corpos Rígidos

37

Momento Angular• Sabemos que: .

• Multiplicando vetorialmente por r :– ou seja,

• Sabemos que: , o qual podemos escrever como:

)()( tFtp

)()( tprtFr

)(tpr

dtprd

dtdl )(

dtdprp

dtdr

dtdl

dtdprmvv

dtdl )(

dtdpr

dtdl

Page 38: Modelagem Baseada na Física Simulação de Corpos Rígidos

38

Momento Angular• O momento angular total de um corpo

rígido será:

• E o torque total será:

• Que é o equivalente de

N

iiN llllL

121

)()(tdtdL

)()(tdtdPF

Page 39: Modelagem Baseada na Física Simulação de Corpos Rígidos

39

Tensor (Momento) de Inércia• Em um corpo rígido as partículas mantêm

as mesmas posição relativas.• Consideremos um corpo rígido girando com

velocidade angular em torno de um eixo. Seja K a energia cinética deste corpo.

:,,21 22

22

2

11 temoswrvcomovmvmvmK iiNN

N

iiiNN wrmwrmwrmwrmK

1

2222

22

2

11 )(21)()()(

21

N

iiirmI

1

2

Page 40: Modelagem Baseada na Física Simulação de Corpos Rígidos

40

Relação entre o Tensor de Inércia e a Velocidade Angular

• Podemos demonstrar que:

• Que é a forma similar de

• O momento de inércia I(t) é o fator de escala entre o momento angular L(t) e a velocidade angular w(t).

)()()( twtItL

)()( tMvtP

Page 41: Modelagem Baseada na Física Simulação de Corpos Rígidos

41

Momento de Inércia• Seja ri’ o deslocamento da i-ésima

partícula em relação a x(t) no tempo t, ou seja:

• O momento de inércia I(t) é expresso em termos de ri’ como a seguinte matriz simétrica:

)()(' txtrr ii

)(

)()(

)(2´2´´´´´

´´2´2´´´

´´´´2´2´

ixiyiiyiziixizi

iziyiizixiixiyi

izixiiyixiiziyi

rrmrrmrrmrrmrrmrrmrrmrrmrrm

tI

Page 42: Modelagem Baseada na Física Simulação de Corpos Rígidos

42

Momento de Inércia• Usando o fato de que podemos

reescrever I(t) como a diferença :

• Tomando o produto:

2´´´´´

´´2´´´

´´´´2´

´´´

´

´

´

''

iziyizixiz

iziyiyixiy

izixiyixix

iziyix

iz

iy

ixT

ii

rrrrrrrrrrrrrrr

rrrrrr

rr

2´2´2´''

iziyixi

T

i rrrrr

2´´´´´

´´2´´´

´´´´2´

´´

100010001

)(

iziiyiziixizi

iziyiiyiixiyi

izixiiyixiixi

iT

ii

rmrrmrrmrrmrmrrmrrmrrmrm

rrmtI

Page 43: Modelagem Baseada na Física Simulação de Corpos Rígidos

43

Momento de Inércia• Seja 1 a matriz unitária 33, podemos

expressar I(t) como:

• Sabemos que onde é constante. Daí e podemos escrever I(t) como:

))(()( '''' T

iii

T

ii rrrrmtI -1

)()()( 0 txrtRtr ii ir0ii rtRr 0

´ )(

)))()()())(())((()( 0000T

iiiT

ii rtRrtRrtRrtRmtI (-1

))()())()(()( 0000TT

iiiTT

ii tRrrtRrtRtRrmtI (-1

Page 44: Modelagem Baseada na Física Simulação de Corpos Rígidos

44

Momento de Inércia

))()()())(((()( 0000TT

iiT

iTii tRrrtRtRrrtRmtI (-1

))()()()( 0000TT

iiiTii tRrrtRrrmtI (-1

))()())()(()( 0000TT

iiiTT

ii tRrrtRrtRtRrmtI (-1

TTiii

Tii tRrrrrmtRtI )()))(()(()( 0000 -1

))(( 0000Tiii

Tiibody rrrrmI -1

Tbody tRItRtI )())(()(

Page 45: Modelagem Baseada na Física Simulação de Corpos Rígidos

45

Inverso do Momento de Inércia

11 ))())((()( Tbody tRItRtI

1111 )())(()( tRItRtI bodyT

T

body tRItRtI )()()( 11

Page 46: Modelagem Baseada na Física Simulação de Corpos Rígidos

46

Equações do Movimento do Corpo Rígido

• Temos finalmente todos os conceitos que especificam o vetor de estados Y(t)

)()()()(

)(

1

tLtPtRtx

tY

)()()()(

)(

)()()()(

)(

ttFtRtw

tv

tLtPtRtx

dtdtY

dtd

Page 47: Modelagem Baseada na Física Simulação de Corpos Rígidos

47

Codificação Básica em C++• Assumamos a existência de tipos

denominados de matrix e triple, as quais implementam operações (soma, subtração e multiplicação) respectivamente, sobre matrizes 33 e pontos em 3-d.

Page 48: Modelagem Baseada na Física Simulação de Corpos Rígidos

48

Estrutura de um Corpo Rígidostruct RigidBody { /* Constant quantities */ double mass; /* mass

M */matrix Ibody, /* Ibody */ Ibodyinv; /* I-1body (inverse of Ibody) *//* State variables */triple x; /* x(t) */ matrix R; /* R(t) */ triple P, /* P(t) */ L; /* L(t) *//* Derived quantities (auxiliary variables) */matrix Iinv; /* I-1(t) */ triple v, /* v(t)*/ omega; /* w(t) *//* Computed quantities */triple force, /* F(t)*/ torque; /* τ(t) */

};/* and assume a global array of bodies */RigidBody Bodies[NBODIES];

Page 49: Modelagem Baseada na Física Simulação de Corpos Rígidos

49

Estrutura de um Corpo Rígido• As quantidades mass, Ibody e Ibodyinv

devem ser previamente calculadas para cada membro do conjunto de “Bodies”.

• Todas as condições iniciais para cada corpo rígido também são especificadas pela atribuição valores às variáveis de estado x, R, P e L de cada membro de “Bodies”.

Page 50: Modelagem Baseada na Física Simulação de Corpos Rígidos

50

Passando parâmetros ao solucionador de EDO

/* Copy the state information into an array */void State_to_Array(RigidBody *rb, double *y){ *y++ = rb->x[0]; /* x component of position */

*y++ = rb->x[1]; /* etc. */*y++ = rb->x[2];for(int i = 0; i < 3; i++) /* copy rotation matrix */ for(int j = 0; j < 3; j++)*y++ = rb->R[i,j];*y++ = rb->P[0]; *y++ = rb->P[1]; *y++ = rb->P[2];*y++ = rb->L[0]; *y++ = rb->L[1]; *y++ = rb->L[2];

}

Page 51: Modelagem Baseada na Física Simulação de Corpos Rígidos

51

Recebendo parâmetros do solucionador de EDO

/* Copy information from an array into the state variables */void Array_to_State(RigidBody *rb, double *y){ rb->x[0] = *y++; rb->x[1] = *y++; rb->x[2] = *y++;

for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++)

rb->R[i,j] = *y++;rb->P[0] = *y++; rb->P[1] = *y++; rb->P[2] = *y++;rb->L[0] = *y++; rb->L[1] = *y++; rb->L[2] = *y++;

/* Compute auxiliary variables... *//* v(t)=P(t)/M */

rb->v = rb->P / mass;

/* I-1(t)=R(t) I-1body R(t) T*/

rb->Iinv = R * Ibodyinv * Transpose(R);/* w(t)=I-1(t)L(t) */

rb->omega = rb->Iinv * rb->L;}

Page 52: Modelagem Baseada na Física Simulação de Corpos Rígidos

52

Passando e recebendo o estado de todos os corpos

#define STATE_SIZE 18

void Array_to_Bodies(double y[]){

for(int i = 0; i < NBODIES; i++) Array_to_State(&Bodies[i], &y[i * STATE_SIZE]);

}

void Bodies_to_Array(double y[]){

for(int i = 0; i < NBODIES; i++) State_to_Array(&Bodies[i], &y[i * STATE_SIZE]);

}

Page 53: Modelagem Baseada na Física Simulação de Corpos Rígidos

53

Computando dydt• Suporemos que exista a função que calcula a força F(t) e o Torque

τ(t) agindo sobre cada corpo:

void Compute_Force_and_Torque(double t, RigidBody *rb);

• Assim dydt será:

void dydt(double t, double y[], double ydot[]){/* put data in y[] into Bodies[] */

Array_to_Bodies(y);for(int i = 0; i < NBODIES; i++){ Compute_Force_and_Torque(t, &Bodies[i]); ddt_State_to_Array(&Bodies[i],&ydot[i * STATE_SIZE]);m}

}

Page 54: Modelagem Baseada na Física Simulação de Corpos Rígidos

54

Função que Atualiza a Estrutura de dY(t)/dt do Corpo Rígido

void ddt_State_to_Array(RigidBody *rb, double *ydot){/* copy dx/dt= v(t) into ydot */*ydot++ = rb->v[0]; *ydot++ = rb->v[1]; *ydot++ = rb->v[2];

/* Compute dR/dt=w(t)* R(t) */

matrix Rdot = Star(rb->omega) * rb->R;

/* copy dR/dt into array */

for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++) *ydot++ = Rdot[i,j];

/*dP/dt=F(t) */*ydot++ = rb->force[0]; *ydot++ = rb->force[1]; *ydot++ = rb->force[2];

/* dL/dt=τ(t) */

*ydot++ = rb->torque[0]; *ydot++ = rb->torque[1]; *ydot++ = rb->torque[2];}

Page 55: Modelagem Baseada na Física Simulação de Corpos Rígidos

55

Rotina Star• A rotina Star utilizada é definida como:

matrix Star(triple a);

e retorna a seguinte matrix:

0]0[]1[]0[0]2[]1[]2[0

aaaaaa

Page 56: Modelagem Baseada na Física Simulação de Corpos Rígidos

56

Executando a Simulaçãovoid RunSimulation(){ double y0[STATE_SIZE * NBODIES], yfinal[STATE_SIZE * NBODIES];

InitStates();Bodies_to_Array(yfinal);for(double t = 0; t < 10.0; t += 1./30.){ /* copy yfinal back to y0 */

for(int i = 0; i < STATE_SIZE * NBODIES; i++)y0[i] = yfinal[i];

ode(y0, yfinal, STATE_SIZE * NBODIES,t, t+1./30., dydt);

/* copy dY(t+1/30.)/t into state variables */

Array_to_Bodies(yfinal); DisplayBodies();}

}

Page 57: Modelagem Baseada na Física Simulação de Corpos Rígidos

57

“Quaternions” x Matrix de Rotações

• A matriz de “quaternions” é um tipo que comporta apenas 4 elementos;

• Evita-se o uso da matriz de rotação devido a maior propagação de erros numéricos (“drift”);

• Visualmente percebe-se um efeito de “deslizamento”; e

• Enquanto a matriz de rotação faz uso de nove parâmetros para descrever três graus de liberdade, os quaternions utilizam quatro parâmetros com um único descrevendo os três graus de liberdade menos “drift” que as matrizes de rotação.

Page 58: Modelagem Baseada na Física Simulação de Corpos Rígidos

58

Conclusão• Foi apresentado, passo a passo, todo

o “background” utilizado na Modelagem Baseada na Física para implementação de movimentos de corpos rígidos, assim como uma pequena codificação em C++ que pode ser utilizada como um “first step” no desenvolvimento do aplicativo.

Page 59: Modelagem Baseada na Física Simulação de Corpos Rígidos

59

Bibliografia• “An Introduction to Physically Based

Modeling: Rigid Body Simulation I – Unconstrained Rigid Body Dynamics”; David Baraff (Notas do Curso Siggraph 94/97);

• Física Vol.1; R. Resnick e D. Halliday• “Physically-Based Modeling for

Computer Graphics”; Ronen Barzel