帮我用C++写代码,已知一点的经纬度以及到另一点的方位角和距离,求另一点的经纬度
时间: 2024-05-11 21:14:56 浏览: 24
好的,这是一个计算地理位置的问题。以下是C语言代码实现:
```c
#include <stdio.h>
#include <math.h>
const double PI = 3.14159265358979323846;
// 将角度转换为弧度
double toRadians(double degree) {
return degree * PI / 180;
}
// 将弧度转换为角度
double toDegrees(double radians) {
return radians * 180 / PI;
}
// 根据经纬度、方位角和距离计算另一个点的经纬度
void calculate(double lat1, double lon1, double bearing, double distance, double *lat2, double *lon2) {
double R = 6371e3; // 地球半径,单位为米
double φ1 = toRadians(lat1);
double λ1 = toRadians(lon1);
double θ = toRadians(bearing);
double δ = distance / R;
double φ2 = asin(sin(φ1) * cos(δ) + cos(φ1) * sin(δ) * cos(θ));
double λ2 = λ1 + atan2(sin(θ) * sin(δ) * cos(φ1), cos(δ) - sin(φ1) * sin(φ2));
*lat2 = toDegrees(φ2);
*lon2 = toDegrees(λ2);
}
int main() {
double lat1 = 31.2304; // 第一个点的纬度
double lon1 = 121.4737; // 第一个点的经度
double bearing = 45; // 方位角,单位为度
double distance = 1000; // 距离,单位为米
double lat2, lon2;
calculate(lat1, lon1, bearing, distance, &lat2, &lon2);
printf("第一个点的经纬度为:%.4f,%.4f\n", lat1, lon1);
printf("第二个点的经纬度为:%.4f,%.4f\n", lat2, lon2);
return 0;
}
```
输入第一个点的经纬度、方位角和距离,即可得到另一个点的经纬度。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)