Вы находитесь на странице: 1из 4

TP Systme Masse-ressort

T. Le Naour
Anne 2013-2014

Ce TP va vous permettre de simuler la dformation physique dun maillage avec un systme masse-
ressort. Dans un premier temps nous verrons quelques rappels thoriques sur les systmes masse-ressort,
puis nous verrons comment les mettre en application dans le cadre de lapplication 3D dveloppe depuis
le dbut du semestre.

1 Systme Masse-ressort
Formulation physique
Un systme masse-ressort est compos dun ensemble N de particules de masse mi , position xi et de
vitesse vi , avec i 1:::N .
Ces particules sont connectes par un ensemble S de ressorts dcrit chacun par le vecteur (i; j; l0 ; ks ; kd ),
o i et j sont les indices des particules adjacentes, l0 la longueur de rfrence, ks le coefficient de raideur
et kd le facteur damortissement du ressort.
Les forces de raideur appliquer sur les particules i et j du ressort sont :
(xj xi )
fi = f s (xi ; xj ) = ks (|xj xi | l0 ) (1)
|xj xi |
fj = f s (xj ; xi ) = f s (xi ; xj ) = fi (2)
Dun autre cot, les forces appliquer au ressort correspondant au facteur damortissement sont :
(xj xi )
fi = f d (xi ; vi ; xj ; vj ) = kd (vj vi ): (3)
|xj xi |
fj = f d (xj ; vj ; xi ; vi ) = fi (4)
Nous pouvons finalement combiner ces deux forces pour un mme ressort travers lquation :
f (xi ; vi ; xj ; vj ) = f s (xi ; xj ) + f d (xi ; vi ; xj ; vj ) (5)

Simulation
La simulation de ce type de systme repose sur la seconde loi de Newton f = mx. Lide est de dduire
la position dune particule partir de son acclration a = x = f =m o x est la drive seconde de la
position avec le bon respect du temps. Plus prcisment, nous pouvons dcomposer cette quation du
second ordre en un couple de deux quations du premier ordre :
v = f (x; v)=m (6)
x = v (7)
Les solutions analytiques de ces quations sont :
Z
v(t) = v0 + f (t)=m dt; (8)
tt0
Z
x(t) = x0 + v(t) dt; (9)
tt0

1
La mthode la plus simple pour rsoudre numriquement ces quations est den donner une approxi-
mation avec les diffrences finies :
v t+1 v t
v = + O(t2 ); (10)
t
xt+1 xt
x = + O(t2 ); (11)
t
o t est un pas de temps discret et t la frame courante. En substituant ces quations, nous obtenons
finalement :

v t+1 = v t + t f (xt ; v t )=m; (12)

xt+1 = xt + t v t : (13)

Ce procd est appel schma dintgration explicite dEuler. Il sagit dun schma explicite car la valeur
cherche pour le temps daprs est directement calcule par rapport aux valeurs du temps courant. Ce
schma est le plus simple mais galement le moins stable car approximatif.

Algorithme
Finalement la procdure danimation dun ensemble de particules par un systme masse-ressort peut tre
dcrit par lalgorithme suivant :

Donnes:
V : Vecteur de particules (masses)
S: Vecteur dartes

// initialisation
pour chaque particule i faire
initialise xi , vi et mi
fin
// boucle de simulation
tant que simulation faire
// calcul des forces
pour chaque particuleP i faire
fi f g f coll + j,(i,j)S f (xi ; vi ; xj ; vj )
fin
// simulation
pour chaque particule i faire
// schma dintgration
vi vi + t fi =mi
xi xi + t vi
fin
affichage du systme
fin
Algorithm 1: Algorithme dun systme masse ressort

2 Conception
Vous laurez compris, notre code va se diviser en 3 classes principales : P article, Spring et M SSystem
(pour M assSpringSystem). Dautres classes hriterons ventuellement de la classe M SSystem spci-
fiques au type de simulation que vous souhaitez lancer.
Rque: pour ne pas perdre de temps, vous utiliserez des structures afin de ne pas avoir coder les
accesseurs et mutateurs.
La classe P article
La classe P article possde
3 attributs de type V ector3 : une position, une force et une vitesse ainsi quun attribut de type
f loat la masse.
en plus de son constructeur et destructeur, crivez une mthode Simulate correspondant au calcul
de la position de la particule en fonction de sa force courante

La classe Spring
La classe P article possde

les 5 attributs vus prcdemment. Cest dire 2 pointeurs sur les masses auxquelles elle sapplique
que 3 attributs de type f loat correspondant longueur du ressort au repos, son coefficient de
raideur et son coefficient damortissement.
en plus de son constructeur et destructeur, crivez une mthode ApplyF orce, qui calcule les forces
associes la raideur et lamortissement du ressort appliquer aux masses.

La classe M SSystem
La classe M SSystem possde comme attributs

lensemble des particules


lensemble des ressorts
un certain nombre dattributs que vous jugez intressant dajouter (gravit, forces extrieurs, ...
Cf partie suivante)

ainsi quun certain nombre de mthodes :


une mthode Init
une mthode U pdate qui reprend les diffrentes phases introduites dans la deuxime partie de
lalgorithme.

un certain nombre de mthodes propres au type de simulation que vous souhaitez raliser (charge-
ment dun maillage, construction dun tissu et avec quels ressors : en croix, croiss ... Cf partie
suivante)

3 Application

Figure 1: Exemples de dformations.


1. Fate hriter votre classe M SSystem par une simulation de votre choix :
construisez une structure en carr (figure 1(1)) de dimension n n de n2 masses. Tester plusieurs
types de configuration de ressort (en croix, crois, etc ...).

tester sur un maillage surfacique de votre choix (figure 1(2)) (le code de chargement est fourni)
tester sur un des maillages volumiques fournis (le code de chargement est fourni)

2. Tester plusieurs jeux de paramtres (masse, coefficient de raideur et damortissement)

3. Si vous avez de lavance, tester une collision de votre maillage avec une sphre.

4. Re-coder votre mthode Simulate avec une intgration de Runge-Kutta (description dans la suite
du document). Pourquoi cette mthode est-elle plus efficace ?

Annexe : intgration de Runge-Kutta dordre 4


La mthode de Runge-Kutta dordre 4 tente de fournir une estimation des valeurs au temps t + 1 partir
du temps t en valuant 4 fois la drive de f : une fois au point de dpart (estimation dEuler avec un
pas de t=2), deux fois au milieu de lintervalle, et une fois en un point final estim. Plus prcisment,
vis--vis du schma dintgration dEuler, il faut remplacer les prcdentes quations (12) et (13) par :

a1 = v t a2 = f (xt ; v t )=m
t t t
b1 = v t + a2 b2 = f (xt + a1 ; v t + a2 )=m
2 2 2
t t t
c1 = v t + b2 c2 = f (xt + b1 ; v t + b2 )=m
2 2 2
t t t
d1 = v t + c2 d2 = f (xt + c1 ; v t + c2 )=m
2 2 2
t t
xt+1 = xt + (a1 + 2b1 + 2c1 + d1 ) v t+1 = v t + (a2 + 2b2 + 2c2 + d2 )
6 6

Oui, cette mthode prend 4 fois plus de temps que la premire puisquelle prend autant de temps que 4
intgrations dEuler. Cela sexplique car le systme ncessite un (re)calcul des forces 4 fois pour obtenir
une estimation de v t+1 et xt+1 . Cette mthode est plus stable et bien plus efficace que celle dEuler car
elle fournit une meilleur estimation des valeurs au temps t + 1 partir des valeurs au temps t.

Вам также может понравиться