球面多余的三角形
众所周知,任何平面三角形的角度之和等于180度。
但是,对于球形三角形,角度之和始终大于 180度。球面三角角之和与180度之间的差称为球面过剩。任务是计算具有给定顶点坐标的三角形的球面超出量。
一些背景
球形三角形是球的三个大圆所定义的球的一部分。
球面三角形的两边和角度都是用角度测量来测量的,因为每一边都可以看作是球体与某个顶角位于球体中心的平面的交集:
每三个不同的大圆定义8个三角形,但我们只需要适当的三角形考虑在内,即。角度和侧面尺寸满足的三角形
根据地理坐标系定义三角形的顶点很方便。在给定端圆的经度λ和纬度Φ的情况下,要计算圆弧的长度,我们可以使用以下公式:
,在哪里
或更明确地:
(来源:https : //en.wikipedia.org/wiki/Haversine_formula)
可用于求解球形三角形的两个基本公式是:
- 余弦定律:
- 罪法:
(来源:https : //en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules)
给定三个边,使用余弦规则很容易计算角度:
最后,定义一个三角形的球面多余部分:
三角形的球面过盈量与其面积之间的关系有趣的是:
因此,在单位球面上,三角形的多余部分等于该三角形的面积!
任务
编写一个函数或程序,在给定三角形顶点坐标的情况下,以度为单位计算三角形的球面超出量。顶点坐标是根据地理坐标系提供的。
每个顶点都应以形式传递[latitude in degrees][N|S][longitude in degrees][E|W]
。当纬度为90时,可以跳过经度和E
或。,,,是正确的顶点描述,同时或不是。W
90N
90S
10N100E
30S20W
80N
55S
在测试案例中,纬度和经度始终是整数。
误差小于1度的答案将被接受(如下例所示)。因此,可以根据实际情况将结果呈现为实数或整数。
例子
输入值
90N0E
0N0E
0N90E
输出量
89.999989
输入值
90N
0N0E
0N90E
输出量
89.999989
输入值
0N0E
0N179E
90N0E
输出量
178.998863
输入值
10N10E
70N20W
70N40E
输出量
11.969793
在所有测试案例中,经度和纬度均为整数。解析顶点坐标是任务的一部分,所以顶点必须按单一的字符串/文字传递,这不是允许通过80N20E
四个参数/字符串:80
,N
,20
,E
。
这样可以确保所有顶点都是截然不同的,并且三个顶点中的两个都不构成对映点对。
计分
这是代码高尔夫球,因此最短的代码获胜。