Условие
Найти площадь треугольника по заданным координатам его вершин $ A\left(x_a,y_a,z_a\right), B\left(x_b,y_b,z_b\right) $ и $ C\left(x_c,y_c,z_c\right) $.
Входные данные
Координаты вершин треугольника $ ABC $.
Выходные данные
Площадь $ S $ треугольника $ ABC $.
Тесты.
№ | Входные данные | Выходные данные | ||||||||
$ x_a $ | $ y_a $ | $ z_a $ | $ x_b $ | $ y_b $ | $ z_b $ | $ x_c $ | $ y_c $ | $ z_c $ | $ S $ | |
1 | -2 | 1 | 2 | 3 | -3 | 4 | 1 | 0 | 9 | 19.78635893740938 |
2 | -3 | 13 | -5 | 6 | 11 | 12 | 4 | 8 | 18 | 50.5618433208284 |
3 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0.8660254037844389 |
4 | 0.5 | 0.5 | 1.5 | 1.5 | 0.5 | 0.5 | 0.5 | 1.5 | 0.5 | 0.8660254037844389 |
Решение.
Данную задачу можно решить, используя формулу Герона:
$ S = \sqrt{p \left(p — a\right) \left(p — b\right) \left(p — c\right)} $,
где $ a, b $ и $ c $ — длины сторон треугольника, а $ p $ — полупериметр, который вычисляется по формуле $ p = \frac{a + b + c}{2} $.
Для вычисления длины стороны треугольника используем формулу для определения расстояния между точками:
$ AB = \sqrt{\left(x_b — x_a\right)^2 + \left(y_b — y_a\right)^2 + \left(z_b — z_a\right)^2} $.
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
class Test { static function dist(ax : Float, ay : Float, az : Float, bx : Float, by : Float, bz : Float) : Float { return Math.sqrt((bx - ax) * (bx - ax) + (by - ay) * (by - ay) + (bz - az) * (bz - az)); } static function Geron (dist1 : Float, dist2 : Float, dist3 : Float) : Float { var p = (dist1 + dist2 + dist3) / 2; return Math.sqrt(p * (p - dist1) * (p - dist2) * (p - dist3)); } static function main() { var ax = 0.5, ay = 0.5, az = 1.5, bx = 1.5, by = 0.5, bz = 0.5, cx = 0.5, cy = 1.5, cz = 0.5; var dist1 = dist(ax, ay, az, bx, by, bz), dist2 = dist(ax, ay, az, cx, cy, cz), dist3 = dist(bx, by, bz, cx, cy, cz); trace(Geron(dist1, dist2, dist3)); } } |
В математических формулах не используют знак * для умножения. Удалил.