在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