建议:先实现同一个半球上的计算,正确运行之后再拓展到两个半球.
已知地球的赤道半径为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
人气:471 ℃ 时间:2019-08-22 12:35:58
解答
#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;
}
推荐
- 地球赤道的半径是6378千米,一个身高1.5米的学生,如果绕赤道走一圈,他的头顶比脚底多走几米?如果身高2米的运动员,也绕赤道走一圈,他的头顶比脚底多走几米?从上面的计算中,你能得出身高x米的人,绕赤道走一圈,他的头顶比脚底多走几米的规律吗
- 地球的赤道半径是6378千米,两极方向的半径比赤道短22千米左右,仅差( ).
- 地球赤道的半径是6378米,如果沿着赤道走一圈,走了多少千米
- 地球极半径为6357千米,赤道半径为6378千米,平均半径怎么会是6371千米
- 地球的赤道半径是6378千米,赤道一周的长约是多少千米?
- 谁有《典范英语6-1》海象参加表演和《典范英语6-2》吵闹的邻居的英文主要内容,
- 大学物理电场电势计算问题
- (物理)把5kg的水从40℃烧至100℃,需要完全燃烧多少kg的干木材?假设燃烧完全燃烧放出的热量全部被水吸收
猜你喜欢