我試圖使用公式(www.movable-type.co.uk/scripts/latlong.html)返回目標點,給出一個起點點,距離和方位。這是我的價值觀:使用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);
當我進入d,st_lat並在網站軸承,我得到這樣的:39°33'28「N。 當我使用上面的代碼(我從網站複製),我得到這個:39.25679699255662。
我看了看周圍越來越有人說師可能不會返回小數量,所以我換成師帶:
BigDecimal distance = new BigDecimal("74.02");
BigDecimal strradius = new BigDecimal("6371");
BigDecimal d2 = distance.divide(strradius, 6, RoundingMode.HALF_EVEN);
double d = d2.doubleValue();
,改變了公式:
end_lat=Math.asin(Math.sin(st_lat)*
Math.cos(d)+Math.cos(st_lat)*Math.sin(d)*Math.cos(bearing));
答案我現在得到是39.25680143864117。 我確定我錯過了一些東西,但我無法通過計算的每一步來查看我在哪裏。有沒有人有關於如何做到這一點的分步說明?我將不勝感激。 謝謝。
爲什麼半徑是一個整數? – 2010-11-18 15:37:00
如果您使用trig函數,小距離將不會非常準確 – 2010-11-18 15:52:44
您認爲它會是什麼? – Dave 2010-11-18 18:29:47