Задача взята отсюда
Условие
Найти объём параллелепипеда три стороны которого образованы векторами:
$$\overrightarrow{a}=(a_x,a_y,a_z), \overrightarrow{b}=(b_x,b_y,b_z), \overrightarrow{c}=(c_x,c_y,c_z).$$
Входные данные: Координаты векторов $\overrightarrow{a}, \overrightarrow{b}, \overrightarrow{c}.$
Выходные данные: Объём параллелепипеда.
Тесты
Входные данные | Выходные данные |
0 0 1 0 1 0 1 0 0 | 1 |
0 0 0 1 0 0 0 0 1 | 0 |
1 0 0 0 0 1 0 0 1 | 0 |
2 5 3 4 1 0 -2 7 6 | 18 |
3 5 1 0 -7 2 6 -4 5 | 21 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 |
class Test { static function main() { var ax = 2.0, ay = 5.0, az = 3.0, bx = 4.0, by = 1.0, bz = 0.0, //задаем координаты векторов. cx = 2.0, cy = 7.0, cz = 6.0; var V : Float; V = (ax*((by*cz)+(cy*bz)))-ay*((bx*cz)+(cx*bz))+az*((bx*cy)+(cx*by)); //Вычисление объёма. trace(Math.abs(V)); //выводим значение } } |
Решение
Для решения данной задачи можно составить матрицу и вывести из неё формулу для нахождения определителя:
$$\triangle = \begin{vmatrix}a_{x} & a_{y} & a_{z}\\b_{x} & b_{y} & b_{z}\\c_{x} & c_{y} & c_{z}\end{vmatrix} = $$ $$= a_{x} \times ((b_{y} \times c_{z}) + (c_{y} \times b_{z}))-a_{y} \times ((b_{x} \times c_{z})+ $$ $$+(c_{x} \times b_{z})) + a_{z} \times ((b_{x} \times c_{y})+(c_{x} \times b_{y}).$$
Модуль определителя матрицы равен объёму параллелепипеда.
Ссылка на запуск программы.
- Ю 4.1 - 05.06.2017
- ML30. Объём параллелепипеда - 19.03.2017
- 7. Использование Компилятора - 19.03.2017
— Нужно сделать ссылку на страницу для запуска кода
Добавил.