帮我用C++写代码,已知一点的经纬度和另一点相对该点的距离和方位,求另一点的经纬度
时间: 2024-05-20 07:18:24 浏览: 154
当然可以,以下是代码:
#include <stdio.h>
#include <math.h>
#define pi 3.14159265358979323846
double rad(double d)
{
return d * pi / 180.0;
}
int main()
{
double lat1, lng1; // 第一个点的经纬度
double distance, bearing; // 相对距离和方位
double lat2, lng2; // 第二个点的经纬度
printf("请输入第一个点的经纬度和相对距离和方位:\n");
scanf("%lf %lf %lf %lf", &lat1, &lng1, &distance, &bearing);
double lat1r = rad(lat1);
double lng1r = rad(lng1);
double b = rad(bearing);
double R = 6371.0; // 地球半径,单位:千米
lat2 = asin(sin(lat1r) * cos(distance / R) + cos(lat1r) * sin(distance / R) * cos(b));
lng2 = lng1r + atan2(sin(b) * sin(distance / R) * cos(lat1r), cos(distance / R) - sin(lat1r) * sin(lat2));
printf("第二个点的经纬度为:%lf %lf\n", lat2 * 180.0 / pi, lng2 * 180.0 / pi);
return 0;
}
希望能对你有所帮助!
阅读全文