Na FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!

Vytvořit web zdarma

Na FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!

Vytvořit web zdarma

Zpět

Srážka 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:

  1. jsou dostatečně blízko
  2. 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é. V některých případech bychom sice získali přesnější výsledky (tělesa by byla pomyslně ohraničena kružnicemi a ne čtverci), ale buď bychom museli odmocňovat (což je zdlouhavé), nebo pracovat s hodně velkými čísly (integer2 = longint).

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 ideální 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.

Zpět