verwende Ich versuche, die Formel von (www.movable-type.co.uk/scripts/latlong.html) zu verwenden, um einen Zielpunkt zurückzugeben, der einen Start gibt Punkt, Entfernung und Peilung. Das sind meine Werte:Ich komme immer wieder mit der falschen Berechnung, wenn ich die Vincenty-Formel
int radius_km = 6371;
double d = 74.02;
double st_lat = 39.4450;
st_lat = Math.toRadians(st_lat);
double bearing = 106.1607;
bearing = Math.toRadians(bearing);
double end_lat = Math.asin(Math.sin(st_lat)*Math.cos(d/radius_km) +
Math.cos(st_lat)*Math.sin(d/radius_km)*Math.cos
(bearing));
end_lat = Math.toDegrees(end_lat);
Als ich die d, st_lat eingeben und Lager auf der Website, bekomme ich diese: 39 ° 33'28 "N. Wenn ich den obigen Code (den ich von der Website kopiert habe) benutze, bekomme ich folgendes: 39.25679699255662.
Ich sah mich um mehr und jemand sagte die Division das Dezimalsystem Betrag nicht zurückgeben kann, so ersetzte ich die Division mit:
BigDecimal distance = new BigDecimal("74.02");
BigDecimal strradius = new BigDecimal("6371");
BigDecimal d2 = distance.divide(strradius, 6, RoundingMode.HALF_EVEN);
double d = d2.doubleValue();
und verändert die Formel:
end_lat=Math.asin(Math.sin(st_lat)*
Math.cos(d)+Math.cos(st_lat)*Math.sin(d)*Math.cos(bearing));
Die Antwort, die ich Holen Sie jetzt ist 39.25680143864117. Ich bin sicher, dass ich etwas vermisse, aber ich bin nicht in der Lage, jeden Schritt der Berechnung zu durchlaufen, um zu sehen, wo ich aus bin. Hat jemand eine Schritt-für-Schritt-Anleitung, wie man das macht? Ich würde es sehr begrüßen. Danke.
Warum ist Radius eine ganze Zahl? –
Kleine Entfernungen sind nicht sehr genau, wenn Sie die Triggerfunktionen verwenden. –
Was würden Sie vorschlagen? – Dave