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.

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:

a · (b × c) = det[a b c]smíšený součin

Jedno číslo, tři různé významy — a všechny tři jsou pravdivé zároveň:

  1. Objem šikmé krabice, kterou ty tři vektory napínají (se znaménkem).
  2. Orientace: kladné znamená pravotočivou trojici, záporné levotočivou.
  3. Determinant matice, jejíž sloupce jsou ty tři vektory.
xyzabcn = a×bh = 2,00obsah podstavy5,5000výška (průmět c do n̂)2,0000objem (a×b)·c11,0000pravotočivá
  1. 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.

  2. podstava = |a × b| = 5,500

    Podstavu tvoří a a b a její obsah už umíme — je to kapitola 6.

  3. 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.

  4. h = |c| cos φ — průmět c do

    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žší.

  5. 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.

  6. 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.

  7. 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.

Podstava krát výška. Trik je v pátém kroku: |n|·|c|·cos φ je přesně definice skalárního součinu, takže se celý výraz smrskne na jeden.

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.

xyzabcsmíšený součin5,2800pravotočivá trojicehodnost {a, b, c}3objem |V|5,2800
(a×b)·c = 5,28000  ·  nastav výšku na 0 a determinant zmizí spolu s krabicí
Táhni výškou c k nule. Krabice se zplacatí a determinant projde nulou — obojí ve stejný okamžik. Otoč c dál a znaménko se překlopí: trojice změní orientaci.

„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

a·(b×c) = b·(c×a) = c·(a×b)     prohození dvou → znaménko naopakcyklická záměna

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í.

Vzorce v této kapitole

a·(b×c) — smíšený součin = objem se znaménkem
a·(b×c) = det[a b c] [—] ISO 80000-2
V_tet — objem čtyřstěnu
V = |a·(b×c)| / 6 [—] kap. 7