作业帮 > 综合 > 作业

地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/03/29 19:43:22
地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离
求出经纬度差,根据cosθ=cosθ1cosθ2求出两城到球心的角的弧度θ,再根据L = θ * R可求球面距离.
编程如下,仅是给个思路,考虑不周之处楼主请自行完善.
#include
#include
#include
using namespace std;
const double R = 6371.0;
const double PI = 3.141592653;
struct Coordinate
{
\x09string X;//经度
\x09string Y;//纬度
};
double GetTheta(Coordinate& A,Coordinate& B)
{
\x09int la,lb;
\x09double a,b,dx,dy;
\x09char cha,chb;
\x09string ax,ay,bx,by;
\x09ax = A.X;
\x09ay = A.Y;
\x09bx = B.X;
\x09by = B.Y;
\x09la = ax.length();
\x09lb = bx.length();
\x09cha = ax[la-1]; ax[la-1] = 0;
\x09chb = bx[lb-1]; bx[lb-1] = 0;
\x09sscanf(ax.data(),"%lf",&a);
\x09sscanf(bx.data(),"%lf",&b);
\x09if(cha == chb)
\x09\x09dx = abs(a-b);
\x09else
\x09{
\x09\x09dx = abs(a+b);
\x09\x09if(dx > 180) dx = 360 - dx;
\x09}
\x09la = ay.length();
\x09lb = by.length();
\x09cha = ay[la-1]; ay[la-1] = 0;
\x09chb = by[lb-1]; by[lb-1] = 0;
\x09sscanf(ay.data(),"%lf",&a);
\x09sscanf(by.data(),"%lf",&b);
\x09if(cha == chb)
\x09\x09dy = abs(a-b);
\x09else
\x09\x09dy = abs(a+b);
\x09dx = dx * PI / 180;//角度转弧度
\x09dy = dy * PI / 180;
\x09return acos(cos(dx)*cos(dy)) ;
}
int main()
{
\x09double theta,dis;
\x09Coordinate A,B;
\x09A.X = "12.35E";
\x09A.Y = "23.05N";
\x09B.X = "30.25E";
\x09B.Y = "20.28S";
\x09theta = GetTheta(A,B);
\x09dis = theta * R;
\x09printf("%.2lfkm\n",dis);
\x09
\x09return 0;
}
地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离 1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的 已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,求A,B之间距离 地球同一纬度上两个处于不同经度的点AB编程序求出这两点之间的直线距离弦长所对球心角的大小以及球面距离 地球上A和B两地分别在北纬60和30的纬度圈上,且经度差为90,设地球半径为R,求两地球面距离 地球半径为R,赤道上A、B两城市分别为东经38度和西经67度,则A、B两地的球面距离 每一经度和纬度在地球上的实际距离大约是多少千米? 甲市到乙市约200千米,如果在比例尺为1;2000000的地图上画出这两个城市,这两个城市之间的图上距离是多少厘米? 地球上有甲乙两个城市,甲在北纬30°,东经83°,乙在北纬30°,西经97°,求这两个城市在纬度圈上的距离与它们在地球表 地球上有甲乙两个城市,甲在北纬30°,东经83°,乙在北纬30°,西经97°,求这两个城市在纬度圈上的距离与他们在地球表 根据地球上两个地点的经度和纬度,如何获得这两点的球面距离或直线距离?有无定理公式? 设地球的半径为R,在北纬45°圈上有两个点A,B,它们的经度相差90°,求A,B间的球面距离