Найти объём тетраэдра три стороны которого образованы векторами [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], где внутри модуля стоит смешанное произведение векторов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Test { static function main() { var output = Sys.stdout(); var ax:Int = Std.parseInt(Sys.stdin().readLine()); var ay:Int = Std.parseInt(Sys.stdin().readLine()); var az:Int = Std.parseInt(Sys.stdin().readLine()); var bx:Int = Std.parseInt(Sys.stdin().readLine()); var by:Int = Std.parseInt(Sys.stdin().readLine()); var bz:Int = Std.parseInt(Sys.stdin().readLine()); var cx:Int = Std.parseInt(Sys.stdin().readLine()); var cy:Int = Std.parseInt(Sys.stdin().readLine()); var cz:Int = Std.parseInt(Sys.stdin().readLine()); var v:Float = ((ax * (by * cz - cz * cy) - cx * (ay * cz - cz * cy) + cx * (cy * cz - cz * cy))) / 6.0; output.writeString(res); } } |
Тесты
Входящие данные | Результат | ||
---|---|---|---|
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 |