我很难把我的头包裹在三角函数上。我正在试着从起点、纬度、原木、距离和方位推断出目的地的纬度和经度。
幸运的是,我找到了一个令人惊叹的网站,它准确地描述了我所需要的功能:“Destination point http://www.movable-type.co.uk/scripts/latlong.html Destination point it point”我在我的java程序中尝试了一下,但它对我不起作用。我按照网站上说的那样部署了它。下面是我的代码:
double dist = 150/6371;
double brng = Math.toRadians(90);
double lat1 = Math.toRadians(26.88288045572338);
double lon1 = Math.toRadians(75.78369140625);
double lat2 = Math.asin( Math.sin(lat1)*Math.cos(dist) + Math.cos(lat1)*Math.sin(dist)*Math.cos(brng) );
double a = Math.atan2(Math.sin(brng)*Math.sin(dist)*Math.cos(lat1), Math.cos(dist)-Math.sin(lat1)*Math.sin(lat2));
System.out.println("a = " + a);
double lon2 = lon1 + a;
lon2 = (lon2+ 3*Math.PI) % (2*Math.PI) - Math.PI;
System.out.println("Latitude = "+Math.toDegrees(lat2)+"\nLongitude = "+Math.toDegrees(lon2));
但它显示的输出是:
a = 0.0
Latitude = 26.882880455723377
Longitude = 75.78369140625
我没有得到我正在做的错误的地方。任何人都可以帮我找出问题所在。
提前谢谢。:-)
发布于 2012-04-12 15:50:33
你的问题在你的第一行。
试一试
double dist = 150.0 / 6371.0;
原因是150/6371
被计算为0
,因为它执行整数除法(而不是浮点除法)。即使结果存储在double
中,也是如此。您可以通过将两个数字中的一个设为浮点文字来强制执行浮点除法。
https://stackoverflow.com/questions/10119479
复制相似问题