在C中使用两组坐标(经度和纬度)

我已经开始在一个自治的rc直升机上工作。 我需要帮助找到一种方法来计算轴承acuratley。 我使用两组坐标(经度和纬度),一个是当前位置,另一个是目标点。 我已经将经度和纬度转换成十进制格式,所以....

40°58'19.86"N = 40.972183
74°14'52.74"W = 74.247983

任何人都可以在c中找到代码来找到我可以使用的轴承或公式吗?

我看过:http://www.movable-type.co.uk/scripts/latlong.html,当我将它转移到C,结果没有任何意义。

这是我所尝试过的:

 double x = Sin(Longitude2 - Longitude1) * Cos(Latitude2);
 double y = Cos(Latitude1) * Sin(Latitude2) - Sin(Latitude1) * Cos(Latitude2) * Cos(Longitude2 - Longitude1);
 double heading = (Atan2(x, y) % 2 * 3.14159265) (180/3.14159265);

在计算之前是否将坐标从度数转换为弧度?

angleRad = 3.14159265 * angleDeg / 180;

bearing = Atan2(y, x); 在该网站。 轴承应该从rad转换为deg:

bearing = 180 * bearing / 3.14159265; 并在最终为负值的情况下:

bearing = bearing + 360;

我不知道如何使用上面的惯例来写这个(使用“%”)。

纬度1和经度1是观察者的坐标,纬度2和经度2是目的地点的坐标。

该网站的公式运作良好。


对于您正在考虑的非常小的区域,您可以假设世界是平坦的。 如果您只需要在本地工作,则可以以米(或英尺)为单位预先计算地面上的经纬度值,

然后,简单地将delta经纬度转换为距离,然后执行正常的trig。

要将距离转换为纬度/经度,您可以使用谷歌地球来衡量它或如何将纬度或经度转换为米?

链接地址: http://www.djcxy.com/p/84901.html

上一篇: Bearing using two sets of coordinates (Latitude and Longitude) in C

下一篇: Position from the latitude and longitude of nearby places