gpt4 book ai didi

java - 根据方位角和距离计算纬度和经度

转载 作者:太空狗 更新时间:2023-10-29 22:40:04 24 4
gpt4 key购买 nike

我很难全神贯注于三角学。我正在尝试从起始纬度、对数、距离和方位推断出目的地纬度和经度。

幸运的是,我找到了一个很棒的网站,它准确描述了我需要的功能: http://www.movable-type.co.uk/scripts/latlong.html “目的地点给定距离和方位距起点” 我在我的 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

我没有弄清楚我哪里做错了。请任何人帮助我找出问题所在。

提前致谢。 :-)

最佳答案

你的问题在你的第一行。

尝试

double dist = 150.0 / 6371.0;

原因是 150/6371 被计算为 0,因为它执行整数除法(而不是浮点除法)。即使结果存储在 double 中也是如此。您可以通过将两个数字之一设为浮点文字来强制进行浮点除法。

关于java - 根据方位角和距离计算纬度和经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10119479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com