VectorLab šipky, které umí počítat

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Délka, směr a tři způsoby, jak měřit

Délka vektoru se značí |v| nebo ‖v‖ a počítá se Pythagorovou větou. To ví každý. Co už se říká míň: Pythagoras není o číslech, ale o plochách — a ve třech rozměrech se používá dvakrát, ne jednou.

xyzxy5,00zv
  1. |v| = ?

    Délku vektoru z jeho složek přímo přečíst nejde. Jde ale dokreslit trojúhelník, ve kterém je ta šipka přeponou.

  2. x = 4,0, y = 3,0

    Složky jsou ty odvěsny. To není náhoda — přesně tak byly v kapitole 1 zavedené.

  3. 4,0² + 3,0² = 25,00

    Pythagoras neříká nic o číslech — říká něco o plochách. Součet obsahů obou menších čtverců je obsah toho velkého.

  4. |v| = √(x² + y²) = 5,000

    Velký čtverec má obsah |v|², takže délka je jeho odmocnina. Znaménka složek zmizela — čtverec je zahodil, a proto je délka vždycky nezáporná.

  5. vodorovně: x, y → délka 5,00, svisle: z

    Ve třech rozměrech se to použije dvakrát. Napřed vodorovný trojúhelník — vyjde délka stínu na podlaze. Ta se stane odvěsnou druhého trojúhelníku, ve kterém je druhou odvěsnou z.

  6. |v| = √(x² + y² + z²) = 5,385

    (√(x²+y²))² je zase jen x²+y², takže se to složí do jednoho vzorce. Ve čtyřech rozměrech by přibyl další sčítanec a nic dalšího by se nezměnilo — proto se s tímhle vzorcem dá pracovat i tam, kde se to nedá nakreslit.

Poslední dva kroky přejdou do prostoru: stín na podlaze se stane odvěsnou druhého trojúhelníku.
|v| = √(v₁² + v₂² + v₃²)     v̂ = v / |v|délka a jednotkový vektor

Normalizace: zahodit délku, nechat směr

Vydělit vektor jeho délkou znamená zkrátit ho na jedničku a nechat mu směr. Používá se to pořád — směr osy, směr pohledu kamery, normála roviny — a má to jedinou výjimku, na kterou se musí myslet pokaždé: nulový vektor směr nemá. Není to technický detail; je to pravda o geometrii. Řešič v téhle labce proto v takovém případě vrací null, a ne trojici NaN ani potichu nulu.

Proč zrovna null. Tři nuly by vypadaly jako platný směr a někam by se propašovaly. NaN se propaguje a chyba se objeví o tři funkce dál, kde ji nikdo nečeká. null donutí volajícího rozhodnout, co má „směr nulového vektoru“ znamenat v jeho konkrétní úloze — což je jediné místo, kde na to odpověď existuje.

Tři normy — a proč to není hnidopišství

„Vzdálenost“ se dá měřit víc způsoby a každý z nich odpovídá na jinou praktickou otázku:

xy-3-2-11234567-3-2-1123vL₁ (taxikář)|x| + |y|2,700L₂ (obyčejná)√(x² + y²)1,942L∞ (nejhorší osa)max(|x|, |y|)1,600obrysy = body ve vzdálenosti2,0 od počátku
L∞ = 1,600 ≤ L₂ = 1,942 ≤ L₁ = 2,700 — a takhle je to vždycky
Táhni poloměrem. Kosočtverec, kružnice a čtverec jsou tytéž „body ve vzdálenosti r“ — jenom měřené třemi různými způsoby.
  • L₂, obyčejná délka. Odpovídá na „jak daleko to je vzdušnou čarou“.
  • L₁, součet absolutních hodnot. Odpovídá na „kolik toho musím ujet, když smím jen podél os“ — což je přesně situace kartézského portálu nebo 3D tiskárny.
  • L∞, největší složka. Odpovídá na „která osa to má nejdál“ — a proto je to ta správná norma na kontrolu limitů: když má každý kloub svůj vlastní strop rychlosti, o době pohybu rozhoduje nejpomalejší z nich, ne nějaký součet.

Vždycky platí L∞ ≤ L₂ ≤ L₁ a rovnost nastane jen ve zvláštních polohách. Kdo si tohle pořadí zapamatuje, ušetří si v TrajLabu i v OptiLabu spoustu překvapení.

Vzorce v této kapitole

|v| — eukleidovská délka (L₂)
|v| = √(v₁² + v₂² + v₃²) [—] ISO 80000-2
‖v‖₁ — součtová norma (taxikář)
‖v‖₁ = |v₁| + |v₂| + |v₃| [—] kap. 3
‖v‖∞ — maximová norma
‖v‖∞ = max(|v₁|, |v₂|, |v₃|) [—] kap. 3