J'essaie d'utiliser la formule de (www.movable-type.co.uk/scripts/latlong.html) pour retourner un point de destination donnant un départ le point, la distance et le relèvement. Ce sont mes valeurs:Je continue à venir avec le mauvais calcul en utilisant la formule vincenty
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);
Quand je rentre le d, st_lat et portant sur le site, je reçois ceci: 39 ° 33'28 "N. Lorsque j'utilise le code ci-dessus (que j'ai copié du site Web), je reçois ceci: 39.25679699255662.
Je regardais autour de plus et que quelqu'un dit que la division ne peut pas renvoyer la quantité décimale, donc j'ai remplacé la division avec:
BigDecimal distance = new BigDecimal("74.02");
BigDecimal strradius = new BigDecimal("6371");
BigDecimal d2 = distance.divide(strradius, 6, RoundingMode.HALF_EVEN);
double d = d2.doubleValue();
et a changé la formule pour:
end_lat=Math.asin(Math.sin(st_lat)*
Math.cos(d)+Math.cos(st_lat)*Math.sin(d)*Math.cos(bearing));
La réponse que je obtenir maintenant est 39.25680143864117. Je suis sûr qu'il me manque quelque chose, mais je ne suis pas capable de passer par chaque étape du calcul pour voir où je m'en vais. Est-ce que quelqu'un a des instructions étape par étape sur la façon de faire cela? Je l'apprécierais grandement. Merci.
Pourquoi le rayon est-il un nombre entier? –
Les petites distances ne seront pas très précises si vous utilisez les fonctions trigonométriques. –
Que suggérez-vous? – Dave