Frage

Ist es auch, dass ungenau? Ich das Ganze mit Apfloat beliebiger Genauigkeit wieder zuzurAufnahme und es machte keinen Unterschied, die ich mit !!

beginnen hätte wissen müssen,
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);
 }

Die erste Behauptung im Test ergibt dies:

  

java.lang.AssertionError:   erwartet: <270.0> aber   war: <270,29389750911355>

0,29 scheint ganz weit weg? Ist das die Formel i zu implementieren wählte?

War es hilfreich?

Lösung

Wenn Sie das getan haben, was Sie scheinen getan zu haben und es richtig gemacht haben Sie auf dem kürzesten Weg von A nach B das Lager von A aus B herausgefunden, welche auf der Oberfläche des kugelförmigen (ish) Die Erde ist die Bogen des großen Kreises zwischen A und B, NICHT dem Bogen der Linie der Breite zwischen A und B

Mathematicas geodätische Funktionen geben, die Lager, für Ihre Teststellungen, wie 89.7061 und 270.294.

So sieht es so aus, als ob (a) Ihre Berechnung korrekt ist, aber (b) Ihre Navigations-Fähigkeiten benötigen Aufpolieren.

Andere Tipps

Sind Sie sicher, ist dies auf numerische Probleme? Ich muss zugeben, dass ich nicht genau wissen, was Sie zu berechnen versuchen, aber wenn man mit Winkeln auf einer Kugel zu tun, kleine Abweichungen von dem, was Sie in euklidischen Geometrie erwartet.

  

java.lang.AssertionError: erwartet: <270.0> aber war: <270,29389750911355>

Dieser 0,29 absolute Fehler repräsentiert einen relativen Fehler von 0,1%. Wie ist dies „ein langer Weg“?

Floats wird 7 signifikante Stellen geben; Doppelzimmer sind gut für die 16. Könnte die trigonometrischen Funktionen oder der Grad in Bogenmaß Umwandlung sein.

Formel sieht richtig, wenn diese Quelle angenommen werden soll .

Wenn ich Ihre Start- und Endwerte in die Seite stecken, ist das Ergebnis, dass sie berichten, ist 089 ° 42'22 ". Wenn ich Ihr Ergebnis von 360 subtrahieren und in Grad, Minuten konvertieren und Sekunden Ihr Ergebnis ist zu ihnen identisch. Entweder sind Sie beide richtig oder sind Sie beide falsch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top