经纬度 方位角计算 代码 c
时间: 2023-05-08 10:01:11 浏览: 435
经纬度是地球表面上一个位置的坐标,经度用来描述东西方向位置,纬度用来描述南北方向位置。方位角指的是从一个位置出发,沿着规定的方向线到达目标位置的方向角度数。如何通过给定的经纬度计算方位角呢?下面是一个简单的C代码实现方法。
首先,需要明白两点之间的距离和方位角是通过经纬度坐标计算得出的。假设我们有两个点A(x1, y1)和B(x2, y2),其中x为经度,y为纬度。则两点的距离D为:
D = 6371 * arccos(sin(y1) * sin(y2) + cos(y1) * cos(y2) * cos(x2 - x1))
其中6371是地球半径。而两点的方位角θ为:
θ = arctan2(sin(Δλ) * cos(y2), cos(y1) * sin(y2) − sin(y1) * cos(y2) * cos(Δλ))
其中Δλ为经度差,arctan2()是求反正切函数的函数。接下来,我们构建C代码:
#include <math.h>
#define PI 3.14159265358979323846
// 计算两点之间的距离(单位:千米)
double distance(double lat1, double lon1, double lat2, double lon2)
{
double dLat = (lat2 - lat1) * PI / 180.0;
double dLon = (lon2 - lon1) * PI / 180.0;
double a = sin(dLat / 2) * sin(dLat / 2) + cos(lat1 * PI / 180.0)
* cos(lat2 * PI / 180.0) * sin(dLon / 2) * sin(dLon / 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
double d = 6371 * c; // 地球半径为 6371 千米
return d;
}
// 计算两点之间的方位角(单位:角度)
double bearing(double lat1, double lon1, double lat2, double lon2)
{
double y = sin(lon2 - lon1) * cos(lat2);
double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1);
double brng = atan2(y, x) * 180.0 / PI;
return brng >= 0 ? brng : 360.0 + brng;
}
以上代码中,distance()函数计算两点之间的距离,bearing()函数计算两点之间的方位角。lat1、lon1、lat2、lon2分别为两个点的经纬度坐标。通过调用这两个函数,即可计算出任意两点间的距离和方位角。
阅读全文