我试图使用公式(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