给定的2D平面4点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
(绿色四边形的面积是预期的输出):
[ ]
您的一个测试用例有9个输入,而不是8个。1.2 3.4 -0.3 4.2 5 3 7.6 -1.1 2.4 0
—
Kelly Lowder
@KellyLowder固定。
—
user202729