Simulation · s'appuie sur les étapes 2 et 3
En 3.1, la bille rebondissait sans une égratignure. Dans la vraie vie, un objet qui touche le sol encaisse — il se déforme, ou il casse.
Trois cubes identiques, lâchés ensemble, de la même hauteur. Seule leur matière change.
1/√s sur X et Z, qui garde
x · y · z = 1.
Math.random() est banni : on ne peut pas lui redemander
la même suite, donc la fracture serait différente à chaque retour en arrière. Un
générateur à graine (ici mulberry32, quatre lignes) le remplace, et on remet
la graine à chaque lâcher.
1/240 s
exactement, avec un accumulateur qui garde le reste pour l'image suivante.
Avec un pas variable, les mêmes deux secondes ne tomberaient jamais pareil, et
l'image d'un instant donné changerait à chaque visite. C'est le prix du
déterminisme — et c'est aussi ce qui rend la physique identique sur un 60 Hz et un
144 Hz.
√(v₀² + 2gh), jamais à
v₀ + √(2gh). Lancer à 10 m/s un cube qui tomberait déjà à 10 n'en fait
pas 20 mais 14,1 — c'est l'énergie qui s'ajoute, pas la vitesse, et
l'énergie va comme le carré. Poussez les deux curseurs et vérifiez.
scale qui tombe à zéro. Une échelle nulle rend la
matrice de l'objet non inversible : les normales deviennent absurdes, l'objet vire
au noir ou disparaît. Le code plafonne donc l'écrasement à 0,15 — jamais 0.
exp(−6·dt)) et
non par contact — un morceau qui glisse est freiné en continu, pas une fois par
rebond. Sinon le freinage dépendrait du nombre d'images.