Учитывая 4 точки на 2D плоскостях A, B, C, D
, рассчитать площадь области пересечения треугольников OAB
и OCD
, где O
находится центр плоскости, имеющей координаты (0, 0)
.
Алгоритмы, которые работают с постоянной сложностью времени (с точки зрения арифметических операций), приветствуются, но не принудительно.
правила
- Каждая точка представлена двумя действительными числами, обозначающими их координаты X и Y.
- При желании, если ваш язык программирования (или некоторая библиотека вашего языка программирования) имеет встроенный
Point
тип или эквивалентный, он может приниматьPoint
объект в качестве входных данных.
- При желании, если ваш язык программирования (или некоторая библиотека вашего языка программирования) имеет встроенный
- Ввод дается в 4 балла, в форматах, включая, но не ограничиваясь:
- Список из 8 координат.
- Список из 4 точек, каждая точка может быть представлена в любом удобном формате.
- Два списка по 2 балла.
- и т.п.
- Вы не можете принять конкретный порядок точек (против часовой стрелки или по часовой стрелке)
- Вы не можете предполагать, что точка
O
передается в качестве ввода. Другими словами, программа не должна принимать и использовать посторонний ввод. - Вы не можете предполагать, что все точки разные. Другими словами, треугольники могут быть вырожденными. Вы должны также обработать этот случай (см. Контрольные примеры ниже)
- Абсолютная или относительная разница должна быть меньше, чем для тестовых примеров ниже.
10-3
Критерии победы
Это код-гольф , самый короткий ответ в байтах побеждает!
Примеры тестовых случаев
Ax Ay Bx By Cx Cy Dx Dy area
5 1 1 3 -1 0 0 -1 0
5 1 1 3 -1 0 0 0 0
5 1 1 3 0 0 0 0 0
5 1 1 3 3 4 4 -3 4.50418
5 1 1 3 1 2 2 1 1.5
5 1 1 3 -2 5 4 -2 1.74829
5 1 1 3 -2 5 5 4 2.96154
5 1 1 3 3 5 5 4 1.88462
5 1 1 3 3 5 3 1 3.92308
5 1 1 3 3 5 4 -1 5.26619
5 1 1 3 5 1 4 -1 0
5 1 1 3 5 1 1 3 7
1 3 1 3 5 1 1 3 0
1 3 1 3 1 3 1 3 0
4 8 4 -1 -2 6 -2 -3 0
1.2 3.4 -0.3 4.2 5 7.6 -1.1 2.4 2.6210759326188535
3.1 0.6 0.1 7.2 5.2 0.7 0.9 8 9.018496993987977
Если кто-то хочет, вот результаты для первой группы тестовых случаев в точной форме:
0
0
0
46375/10296
3/2
1792/1025
77/26
49/26
51/13
23345/4433
0
7
0
0
0
Иллюстративное изображение для тестового примера 5 1 1 3 3 4 4 -3
(площадь зеленого четырехугольника - ожидаемый результат):
[ ]