三角形の球面過剰
ご存知のように、平面三角形の角度の合計は180度に等しくなります。
ただし、球面三角形の場合、角度の合計は常に180度より大きくなります。球面三角形の角度の合計と180度の差は球面過剰と呼ばれます。タスクは、与えられた頂点座標で三角形の球面過剰を計算することです。
いくつかの背景
球面三角形は、球の3つの大円で定義される球の一部です。
球面三角形の両側と角度は、角度測定の用語で測定されます。これは、各側面が球体と球体の中心にある頂点との平面角度の交点と見なすことができるためです。
3つの異なる大円はそれぞれ8つの三角形を定義しますが、 適切な三角形考慮します。角度と側面の測定値が満たされる三角形
地理座標系の観点から三角形の頂点を定義すると便利です。両端の経度λと緯度Φが与えられた場合、球の弧の長さを計算するには、次の式を使用できます。
、 どこ
またはより明示的に:
(ソース:https : //en.wikipedia.org/wiki/Haversine_formula)
球面三角形を解くために使用できる2つの基本式は次のとおりです。
- 余弦の法則:
- サインの法則:
(ソース: https //en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules)
3つの側面がある場合、コサインルールを使用して角度を簡単に計算できます。
最後に、三角形の球面過剰が定義されます。
三角形の球体過剰とその面積との関係について興味深いのは:
単位球では、三角形の過剰はその三角形の面積に等しくなります!
タスク
三角形の頂点座標を指定して、三角形の球面過剰を角度で計算する関数またはプログラムを作成します。頂点座標は、地理座標系で提供されます。
各頂点はで渡す必要があります[latitude in degrees][N|S][longitude in degrees][E|W]
。経度、E
またはW
緯度が90の場合はスキップできます。 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
。
これにより、頂点がすべて明確になり、3つの頂点のうち2つが対pod点のペアにならないことが保証されます。
得点
これはcode-golfなので、最短のコードが優先されます。