建议:先实现同一个半球上的计算,正确运行之后再拓展到两个半球.已知地球的赤道半径为6378.137千米.假设在赤道上,有两个处于不同经度(单位为度)的城市,用C语言编程序求出这两点之间
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 03:33:18
![建议:先实现同一个半球上的计算,正确运行之后再拓展到两个半球.已知地球的赤道半径为6378.137千米.假设在赤道上,有两个处于不同经度(单位为度)的城市,用C语言编程序求出这两点之间](/uploads/image/z/1701917-53-7.jpg?t=%E5%BB%BA%E8%AE%AE%EF%BC%9A%E5%85%88%E5%AE%9E%E7%8E%B0%E5%90%8C%E4%B8%80%E4%B8%AA%E5%8D%8A%E7%90%83%E4%B8%8A%E7%9A%84%E8%AE%A1%E7%AE%97%2C%E6%AD%A3%E7%A1%AE%E8%BF%90%E8%A1%8C%E4%B9%8B%E5%90%8E%E5%86%8D%E6%8B%93%E5%B1%95%E5%88%B0%E4%B8%A4%E4%B8%AA%E5%8D%8A%E7%90%83.%E5%B7%B2%E7%9F%A5%E5%9C%B0%E7%90%83%E7%9A%84%E8%B5%A4%E9%81%93%E5%8D%8A%E5%BE%84%E4%B8%BA6378.137%E5%8D%83%E7%B1%B3.%E5%81%87%E8%AE%BE%E5%9C%A8%E8%B5%A4%E9%81%93%E4%B8%8A%2C%E6%9C%89%E4%B8%A4%E4%B8%AA%E5%A4%84%E4%BA%8E%E4%B8%8D%E5%90%8C%E7%BB%8F%E5%BA%A6%EF%BC%88%E5%8D%95%E4%BD%8D%E4%B8%BA%E5%BA%A6%EF%BC%89%E7%9A%84%E5%9F%8E%E5%B8%82%2C%E7%94%A8C%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B%E5%BA%8F%E6%B1%82%E5%87%BA%E8%BF%99%E4%B8%A4%E7%82%B9%E4%B9%8B%E9%97%B4)
建议:先实现同一个半球上的计算,正确运行之后再拓展到两个半球.已知地球的赤道半径为6378.137千米.假设在赤道上,有两个处于不同经度(单位为度)的城市,用C语言编程序求出这两点之间
建议:先实现同一个半球上的计算,正确运行之后再拓展到两个半球.
已知地球的赤道半径为6378.137千米.假设在赤道上,有两个处于不同经度(单位为度)的城市,用C语言编程序求出这两点之间的直线距离(即弦长)与球面距离 (即劣弧的长度).
实验要求:
1.计算结果要有尽可能高的精确度.
2.要考虑到横跨东、西两个半球的情况.(提示:东经为正,西经为负.)
3.要求输入数据之间以空格分隔.例如,欲求赤道上东经10度到东经50度的距离,输入格式应为:10 50
4.最后提交完成的C语言源程序文件.
参考测试数据及结果:
东经0度,东经90度——直线距离9020.047727 ,球面距离10018.754000
东经20.5度,西经36.6度——直线距离6096.548421 ,球面距离6356.342816
东经160度,西经170度——直线距离3301.566601 ,球面距离3339.584667
建议:先实现同一个半球上的计算,正确运行之后再拓展到两个半球.已知地球的赤道半径为6378.137千米.假设在赤道上,有两个处于不同经度(单位为度)的城市,用C语言编程序求出这两点之间
#include
#include
const double R=6378.1370;
const double pi=3.141592654;
double chord_len(double a,double b);
double arc_len(double a,double b);
double chord_len(double a,double b)
{
double x,rad;
/*printf("%f,%f in chord_len\n",a,b);*/
rad=fabs(b-a);
if ( rad > 180) rad = 360-rad;
rad = rad*pi/180;
x=sqrt(2.0)*R*sqrt(1.0-cos(rad));
return x;
}
double arc_len(double a,double b)
{
double x,rad;
rad=fabs(b-a);
if ( rad > 180) rad = 360-rad;
x=R*rad*pi/180;
return x;
}
int main()
{
double a,b;
printf("请输入两个城市的经度(以空格隔开.东经为正,西经为负.):\n");
scanf("%lf %lf",&a,&b);
printf("%lf,%lf\n",a,b);
printf("两个城市的直线距离为:%f\n",chord_len(a,b));
printf("两个城市的球面距离为:%f\n",arc_len(a,b));
return 0;
}