modelagem baseada na física simulação de corpos rígidos
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 PresentationTRANSCRIPT
![Page 1: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/5.jpg)
5
Estado da Partícula
)()(tvtx
Y
![Page 6: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/6.jpg)
6
Dinâmica da Partícula
![Page 7: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/7.jpg)
7
Variáveis de Estado
mtFtv
tvtx
dtdY
dtd
/)()(
)()(
![Page 8: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/10.jpg)
10
Solução EDO
![Page 11: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/17.jpg)
17
Mudança de Coordenadas
Coordenadas Espaço CorpoCoordenadas Espaço
![Page 18: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/26.jpg)
26
Velocidade de uma Partícula
![Page 27: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/31.jpg)
31
Força e Torque
![Page 32: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/32.jpg)
32
Força e Torque
![Page 33: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/36.jpg)
36
Momento Angular
vu
r
p
![Page 37: Modelagem Baseada na Física Simulação de Corpos Rígidos](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/46.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/47.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/50.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/51.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/52.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/53.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/54.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/55.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/56.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/57.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/58.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062521/5681565a550346895dc402c4/html5/thumbnails/59.jpg)
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