質問

それはその不正確であってもですか?私はApfloat任意の精度で全体を再implented、それは

!!私が開始することが知られている必要があります何の違いを行っていません
public static double bearing(LatLng latLng1, LatLng latLng2) {
 double deltaLong = toRadians(latLng2.longitude - latLng1.longitude);

 double lat1 = toRadians(latLng1.latitude);
 double lat2 = toRadians(latLng2.latitude);

 double y = sin(deltaLong) * cos(lat2);
 double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(deltaLong);
 double result = toDegrees(atan2(y, x));
 return (result + 360.0) % 360.0;
}

@Test
 public void testBearing() {

  LatLng first = new LatLng(36.0, 174.0);
  LatLng second = new LatLng(36.0, 175.0);
  assertEquals(270.0, LatLng.bearing(second, first), 0.005);
  assertEquals(90.0, LatLng.bearing(first, second), 0.005);
 }

テストの最初の主張は、これを与えます:

  

にjava.lang.AssertionError:   予想:<270.0>が、   でした:<270.29389750911355>

0.29は非常に長い道のりオフに思えますか?これは私が実装することを選んだ式ますか?

役に立ちましたか?

解決

あなたはあなたが球状(ISH)地球の表面上にある、Bへの最短ルートに沿ってBからAのベアリングを考え出したそれを正しく行われ、行われているように見えるものをやった場合AとBの間の大円の円弧、AとBとの間の緯度の線のNOT円弧

Mathematicaの測地機能は89.7061270.294として、あなたのテストの位置について、ベアリングを与えます。

(a)は、あなたの計算が正しいですが、(b)は、あなたのナビゲーションスキルがアップ研磨が必要な場合ように、それが見えます。

他のヒント

あなたは、これは、数値の問題に起因してよろしいですか?私はあなたがユークリッド幾何学に期待するものから、私は正確にあなたが計算しようとしているのか分からないが、あなたが球に角度を扱う際に、小さな偏差ことを、認めなければならない。

  

にjava.lang.AssertionError:予想:<270.0>しかしでした:<270.29389750911355>

この0.29絶対誤差は、0.1%の相対誤差を表します。どのようにこの「長い道のりオフ」とは?

フロートは7桁を与えるだろう。 16.ラジアンへの変換三角関数や程度になる可能性があるためダブルスのが良いです。

のが信じられるのであれば、

式は、右に見えますます。

私はそのページにあなたの開始と最終的な値を差し込む場合は、

、彼らが報告した結果は、089°42'22 "です。私は360から自分の結果を減算し、度、分、秒に変換する場合は、あなたの結果は彼らのものと同じです。どちらの正しい両方だか、両方間違っている。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top