gpt4 book ai didi

function - 纬度/经度 + 距离 + 航向 --> 纬度/经度

转载 作者:行者123 更新时间:2023-12-02 16:18:55 29 4
gpt4 key购买 nike

所以:我有以下函数,改编自在线找到的公式,它采用两个纬度/经度坐标并计算它们之间的距离(以英里为单位)(沿着球形地球):

public static double distance (double lat1, double lon1, double lat2, double lon2) {
double theta = toRadians(lon1-lon2);
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);

double dist = sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(theta);
dist = toDegrees(acos(dist)) * 60 * 1.1515 * 1.609344 * 1000;

return dist;
}

据我所知,这很好用。

我需要的是第二个函数,它使用完全相同的地球几何模型,采用单个纬度/经度对 [A]、航向和距离,并输出一个新的纬度/经度对 [B ] 这样,如果您从点 [A] 开始,并在给定航向行驶给定距离,您最终会到达点 [B]。

这就是我的几何技能完全发挥作用的地方:)

任何帮助将不胜感激!

谢谢,-丹

最佳答案

我从 The Aviation Formulary 获取大部分此类公式.

他给出的公式是:

Lat/lon given radial and distance

A point {lat,lon} is a distance d out on the tc radial from point 1 if:

 lat=asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
IF (cos(lat)=0)
lon=lon1 // endpoint a pole
ELSE
lon=mod(lon1-asin(sin(tc)*sin(d)/cos(lat))+pi,2*pi)-pi
ENDIF

This algorithm is limited to distances such that dlon < pi/2, i.e those that extend around less than one quarter of the circumference of the earth in longitude. A completely general, but more complicated algorithm is necessary if greater distances are allowed:

    lat =asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
dlon=atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(lat))
lon=mod( lon1-dlon +pi,2*pi )-pi

请注意,他使用“tc”代表真实航向(以从北开始顺时针旋转的弧度为单位),并且他给出的距离以沿地球表面的弧度为单位。公式集的第一部分对此进行了解释(以及从海里来回转换的公式)。另外,请查看该页面上的“实现说明”和“工作示例”。

关于function - 纬度/经度 + 距离 + 航向 --> 纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378281/

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