Smíšený součin: objem, orientace a determinant
Poslední součin téhle kapitoly spojuje oba předchozí do jednoho výrazu, který vypadá jako technická drobnost a je to jedno z nejužitečnějších čísel v celé geometrii:
Jedno číslo, tři různé významy — a všechny tři jsou pravdivé zároveň:
- Objem šikmé krabice, kterou ty tři vektory napínají (se znaménkem).
- Orientace: kladné znamená pravotočivou trojici, záporné levotočivou.
- Determinant matice, jejíž sloupce jsou ty tři vektory.
- a, b, c → objem = ?
Tři vektory napínají šikmou krabici (rovnoběžnostěn). Objem se z nich dá spočítat jedním jediným výrazem — a ten výraz už oba součiny z předchozích kapitol obsahuje.
- podstava = |a × b| = 5,500
Podstavu tvoří a a b a její obsah už umíme — je to kapitola 6.
- n = a × b — kolmá na podstavu
Ten součin je navíc kolmý na podstavu, což je přesně to, co se teď hodí: výška se měří kolmo, ne podél c.
- h = |c| cos φ — průmět c do n̂
Výška je průmět c do směru normály — tedy kapitola 5. Není to délka c: čím víc je c nakloněné, tím je krabice nižší.
- V = podstava × h = |a×b| · |c| cos φ
Objem je podstava krát výška. Ale |n|·|c|·cos φ je přesně definice skalárního součinu vektorů n a c — takže se to celé smrskne.
- V = (a × b) · c = 11,000
Smíšený součin. Rovná se také determinantu matice, jejíž sloupce jsou ty tři vektory — a odsud vede přímá cesta do kapitoly o maticích.
- V = 11,000 → pravotočivá trojice
Objem vyšel se znaménkem, a to znaménko je orientace: kladné pro pravotočivou trojici, záporné pro levotočivou. Nula znamená, že žádná krabice nevznikla — všechny tři leží v jedné rovině. To je nejlevnější test koplanarity, jaký existuje.
Nula je ta nejužitečnější hodnota
Když smíšený součin vyjde nula, žádná krabice nevznikla — všechny tři vektory leží v jedné rovině. To je nejlevnější test koplanarity, jaký existuje, a je to tentýž test jako „je ta matice singulární“, jen napsaný geometricky.
„Nula“ v plovoucí čárce nikdy není nula. Test na
koplanaritu se nesmí psát jako if (triple === 0) ani jako
if (Math.abs(triple) < 1e-9). První nikdy neplatí, druhý odpovídá na jinou
otázku pro vektory dlouhé metr a pro vektory dlouhé mikrometr. Práh musí být
relativní — solver v téhle labce používá 1e-9 · |a||b||c|
a testy ověřují, že hodnost vyjde stejně po přeškálování o dvanáct řádů.
Vlastnosti, které se vyplatí znát
Cyklicky posouvat se smí, prohodit dva sousedy znamená otočit znaménko. Dává to smysl: krabice je pořád stejná, mění se jen to, kterou trojici prohlásíme za pravotočivou.
Kde se to používá
- Objem tetraedru je šestina smíšeného součinu jeho hran. Tímhle se počítá objem sítě v každém konečněprvkovém řešiči, včetně toho v BeamLabu.
- Na které straně roviny bod leží: znaménko smíšeného součinu tří hran. Základ každého kolizního testu.
- Kontrola pravotočivosti rámce: det = +1 pro rotační matici. Když vyjde −1, je rámec zrcadlově převrácený a všechny další výpočty budou tiše špatně. Viz RotLab.
- Vzdálenost dvou mimoběžek se počítá právě přes smíšený součin — je to kapitola 10 a kalkulačka to umí.