地理坐标化为直角坐标的简单的c++程序
时间: 2023-12-18 10:01:22 浏览: 17
下面是一个简单的C程序,将地理坐标转换为直角坐标:
```c
#include <stdio.h>
#include <math.h>
double D2R(double degrees) {
return degrees * (M_PI / 180);
}
void convertToCartesian(double lat, double lon, double *x, double *y) {
double latR = D2R(lat);
double lonR = D2R(lon);
double a = 6378137.0; // 地球长半径
double f = 1 / 298.257223563; // 扁率
double N = a / sqrt(1 - pow(sin(latR) * (1 - f), 2)); // 卯酉圈曲率半径
double H = 0; // 高度
*x = (N + H) * cos(latR) * cos(lonR);
*y = (N + H) * cos(latR) * sin(lonR);
}
int main() {
double lat, lon;
double x, y;
printf("请输入纬度(-90到90度):");
scanf("%lf", &lat);
printf("请输入经度(-180到180度):");
scanf("%lf", &lon);
convertToCartesian(lat, lon, &x, &y);
printf("直角坐标:x = %.2lf, y = %.2lf\n", x, y);
return 0;
}
```
这个程序使用输入的纬度和经度值,将其转换为直角坐标。它使用了地球的长半径(a)和扁率(f)作为计算参数,并使用了卯酉圈曲率半径(N)来计算直角坐标的x和y值。最后,打印出转换后的直角坐标。请注意,输入的纬度范围应在-90到90度之间,经度范围应在-180到180度之间。