Integrály
Článek si můžete také prohlédnout vysázený v PDF.
Tento studijní text vznikl pro účely seriálu o počítačové grafice a shaderech, a popisuje jen to nejnutnější pro jeho pochopení.
Představte si, že píšete nějakou hru, kde hráč může skákat. Nachází se v nějaké pozici (výšce) h na ose Y, má svou aktuální vertikální rychlost v a dolů ho přitahuje gravitace o zrychlení g. Ostatní osy pohybu zanedbáváme.
Logiku hry vyhodnocuje nějaká smyčka, která se spustí každých t sekund. V každé její iteraci chceme spočítat novou pozici (vlastně jen výšku) a rychlost hráče na základě předchozí pozice a rychlosti, a také času, který od minulé iterace uplynul. Jak by něco takového mohlo vypadat v pseudokódu?
// Varianta A:
h = h + v * t;
v = v + g * t;
// Varianta B:
v = v + g * t;
h = h + v * t;
Která z variant je ale správně? Spočítáme nejdřív novou pozici pomocí staré rychlosti a pak rychlost updatujeme, nebo nejdřív spočítáme novou rychlost a tu použijeme pro spočítání pozice?
Správně není ani jedno. Kdybyste zkusili takovou hru spustit s reálným gravitačním zrychlením, postava by se chovala velice divně. Důvod je ten, že v reálném světě by se rychlost postavy neměnila v oddělených krocích, ale plynule během celého časového úseku t.
Vyjádříme si rychlost v jako funkci f závislou na t. Ve variantě A vlastně používáme pro celý časový úsek hodnotu rychlosti z bodu va, ve variantě B hodnotu vb.
Pozici v obou variantách změníme o hodnotu vt, ať už jako v použijeme va nebo vb. Všimněte si, že tato hodnota odpovídá obsahu obdélníku výšky v a šířky t. Nyní je z obrázku patrné, že k pozici nechceme přičítat ani jeden z obdélníků, ale lichoběžník, jehož horní strana je tvořena funkcí f.
Jinak řečeno, zajímá nás obsah pod funkcí f. Toto vyjadřují integrály. S integrálem bychom pseudokód nahoře zapsali takto:
t |
0 |
Znak pro integrál je ∫ a říká nám, že chceme spočítat obsah plochy pod danou funkcí, v našem případě v + gx. Zajímá nás jen plocha od bodu 0 do bodu t (bodem 0 uvažujeme počátek časového úseku, který nás zajímá) na vodorovné ose. Značení dx na konci říká, že se jedná o funkci proměnné x, právě hodnota x se bude měnit od 0 do t.
Pro výpočet tohoto integrálu můžeme použít obyčejnou geometrii, pomocí které spočítáme obsah lichoběžníku, který integrálu odpovídá. Jeho hodnota bude:
t |
0 |
1 |
2 |
Zde jsme jen vzali obsah obdélníku pod původní hodnotou v a přičetli k němu obsah trojúhelníku od va do vb. A odtud se také bere vzorec pro zrychlení z fyziky.
V tomto případě šla funkce uvnitř integrálu zintegrovat velmi jednoduše. Ne vždy tomu tak je, v některých případech ani nelze řešení vyjádřit vzorečkem. Jedna možnost, jak alespoň číselně spočítat integrál nějaké složité funkce, je popsána v pátém díle seriálu o grafice.
Toto je ovšem jen extrémně stručné a zjednodušené vysvětlení integrálů, proto ho prosím berte trochu s rezervou.