3

我已经开始在 c 中研究一架自主遥控直升机。我需要帮助找到一种计算方位 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);
4

2 回答 2

2

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

angleRad = 3.14159265 * angleDeg / 180;

bearing = Atan2(y, x); 在那个网站上。轴承应依次从 rad 转换为 deg:

bearing = 180 * bearing / 3.14159265; 如果最终为负值:

bearing = bearing + 360;

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

Latitude1 和 Longitude1 是观察者的坐标 Latitude2 和 Longitude2 是目标点的坐标。

该网站的公式效果很好。

于 2013-06-15T19:17:23.470 回答
1

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

然后只需将 delta lat/lon 转换为距离并进行正常触发。

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

于 2012-08-12T01:55:08.833 回答