Объем тетраэдра

Найти объём тетраэдра три стороны которого образованы векторами [latex]\overrightarrow{a}=(x_{a},y_{a},z_{a})[/latex], [latex]\overrightarrow{b}=(x_{b},y_{b},z_{b})[/latex], [latex]\overrightarrow{c}=(x_{c},y_{c},z_{c})[/latex]

Входные данные

Координаты векторов $a$, $b$, $c$.

Выходные данные

Объём тетраэдра.

Решение

Объем тетраэдра вычисляется по формуле: [latex]V=\frac{1}{6}\left | \vec{a},\vec{b},\vec{c} \right |[/latex], где внутри модуля стоит смешанное произведение векторов.

Try Haxe!

Тесты

Входящие данные Результат
a b c V
7,10,12 11,20,9 5,12,10 110
3,6,3 1,3,-2 2,2,2 3
0,0,0 1,3,-2 2,2,2 0

ML28. Объём тетраэдра

Cсылка на первоначальное решение тут

Задача

Найти объём тетраэдра три стороны которого образованы векторами
$\vec {a} = \left( x_a, y_a, z_a \right)$
$\vec {b} = \left( x_b, y_b, z_x \right)$
$\vec {c} = \left( x_c, y_c, z_c \right).$

Пояснительный рисунок

Пояснительный рисунок к ML28

Входные данные

Координаты векторов $\vec {a}$,$\vec {b}$, $\vec {c}$
Выходные данные
Объём тетраэдра

Входные данные Выходные данные
$x_a$ $y_a$ $z_a$ $x_b$ $y_b$ $z_b$ $x_c$ $y_c$ $z_c$ V
0 0 1 0 1 0 1 0 0 0.166667
3 6 3 1 3 -2 2 2 2 3
0 0 0 1 3 -2 2 2 2 0

Код программы

Решение задачи
Так как тетраэдр построен на векторах $\vec {a} = \left( x_a, y_a, z_a \right)$ $\vec {b} = \left( x_b, y_b, z_x \right)$ $\vec {c} = \left( x_c, y_c, z_c \right)$ для данной задачи оптимальным решением будет использовать следующие формулы:
$V=|Δ|/6$ где $V$ обьем тетраэдра а $Δ$ определитель матрицы.

Δ = \begin{vmatrix} x_a & y_a & z_a \\ -x_b & y_b & z_b \\ x_c & y_c & z_c
\end{vmatrix}
= $x_a \left(y_b z_c-z_b y_c \right)-x_b \left( y_a z_c-z_a y_c \right)+x_c \left( y_a z_b-z_a y_b \right)$

      Итоги:
  • если значение определителя матрицы равно нулю, то либо некоторые из заданных векторов коллинеарны, либо нулевые, либо все они лежат в одной плоскости. Во всех этих случаях тетраэдр не может существовать, и программа выведет 0;
  • если значение определителя не равно нулю, то программа вычислит объём тетраэдра. В случае, если определитель примет отрицательное значение, программа домножит значение объёма на −1, в результате чего оно станет положительным.

Решение на Try Haxe!