Řešení srážky pohybujících se hmotných objektů v rovině a prostoru
Jak tohle realisticky simulovat?
Ve fyzice se učíme mechaniku rázu. Tam je ale všechno krásně jednoduché:
máme dvě tělesa, víme o nich, že se srazí a dosazením do vzorečku
určíme výslednou rychlost. Jak prosté. My ale nepotřebujeme vyřešit
srážku v 1D, ale ve 2D nebo 3D a hlavně musíme nejdřív nějak zjistit,
jestli k ní vůbec dojde.
Popisovat budu postup pro 2D, ale jednoduchým přidáním třetí souřadnice
se dá aplikovat i na 3D.
Tělesa jsou určena těmito parametry: polohou (x, y), rychlostí
(vx, vy) a hmotností (m). Fyzika předpokládá hmotnost
v kilogramech a rychlost v metrech za sekundu, ale s převodem jednotek si
nemusíme dělat starosti - v jakých jednotkách dosadíme vstupní hodnoty, v
takových nám vyjdou výsledky.
1) Dojde ke srážce?
Tělesa se srazí, pokud:
a) jsou dostatečně blízko
b) pohybují se směrem k sobě
Podmínka blízkosti je jednoduchá: pokud absolutní hodnoty rozdílů
souřadnic v obou osách (|x1-x2| a |y1-y2|) jsou menší než nějaké námi
zvolené minimum (které závisí zřejmě na rozměrech těles), jsou tělesa
dostatečně blízko.
Používat na výpočet vzdálenosti Pythagorovu větu je celkem zbytečné.
Získali bychom sice asi přesnější výsledky (tělesa by byla pomyslně
ohraničena kružnicemi a ne čtverci), ale museli bychom počítat s
odmocninou, což někdy může zdržovat. Navíc to nejde použít na podlouhlá
tělesa.
Jestli se tělesa pohybují směrem k sobě, zjistíme tak, že porovnáme
vzdálenost teď: |x1-x2| se vzdáleností v příští
iteraci: |(x1+vx1)-(x2+vx2)|
(předpokládám diskrétní pohyb těles, kdy v každé iteraci přičítáme k
souřadnicím hodnoty rychlostí). Pokud se vzdálenost zmenšila, tělesa se
pohybují k sobě a ve směru příslušné osy dojde ke srážce. To samé
potom provedeme pro osu y.
2) Jak se tělesa budou po srážce pohybovat?
Srážku vyřešíme pro každou souřadnici samostatně. Zjistíme, jestli se v
tom směru srazí (viz předchozí odstavec) a pak použijeme vzorečky:

k je tzv. koeficient restituce rázu, který udává, jak pružně se
tělesa chovají. Může nabývat hodnot od 0 (dokonale plastický ráz, tělesa
se po nárazu "slepí" a dál se pohybují společně) do 1 (dokonale pružný
ráz, tělesa od sebe odskočí jako kulečníkové koule). Optimální hodnota
pro běžné situace (srážka dvou aut a podobně) je cca 0.2, vyzkoušejte si
dle potřeby.
v je společná rychlost, jakou by se obě tělesa pohybovala po
dokonale plastickém rázu. Pokud vůbec nechcete počítat s pružným rázem,
bude toto výsledek, jinak se v použije jen jako mezivýsledek do
dalších dvou vzorců.
vi jsou výsledné rychlosti obou těles po
srážce, vip jsou jejich původní rychlosti před
srážkou a mi jsou jejich hmotnosti.
Tento výpočet zopakujeme odděleně pro osy x a y (a z, jestli pracujeme ve
třech rozměrech). Je výhodné napsat si na to podprogram (proceduru).
Jediné hodnoty, které se srážkou mění, jsou rychlosti těles. Hmotnost
zůstává konstantní, poloha (souřadnice) se mění v každém cyklu
nezávisle na srážkách.