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.
- |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.
- x = 4,0, y = 3,0
Složky jsou ty odvěsny. To není náhoda — přesně tak byly v kapitole 1 zavedené.
- 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.
- |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á.
- 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.
- |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.
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:
- 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í.