用C++求地球两点间距离已知地球的平均半径为6371.393千米,假设在地球的同一纬度上,有两个处于不同经度的点A、B,编程序求出这两点之间的直线距离(即弦长)、弦长所对球心角的大小(单位

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 11:34:42

用C++求地球两点间距离已知地球的平均半径为6371.393千米,假设在地球的同一纬度上,有两个处于不同经度的点A、B,编程序求出这两点之间的直线距离(即弦长)、弦长所对球心角的大小(单位
用C++求地球两点间距离
已知地球的平均半径为6371.393千米,假设在地球的同一纬度上,有两个处于不同经度的点A、B,编程序求出这两点之间的直线距离(即弦长)、弦长所对球心角的大小(单位为度)以及球面距离(即劣弧的长度).
要求:
⑴计算结果要有尽可能高的精确度.
⑵ 要考虑到横跨东、西两个半球的情况.(提示:东经为正,西经为负;北纬为正,南纬为负.)
⑶ 要求输入数据之间以空格分隔.例如,北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50

用C++求地球两点间距离已知地球的平均半径为6371.393千米,假设在地球的同一纬度上,有两个处于不同经度的点A、B,编程序求出这两点之间的直线距离(即弦长)、弦长所对球心角的大小(单位
根据你的题目写的


#include <iostream>
#include <string>
using namespace std;
#define  EARTH_RADIUS  6371.393
#define PI 3.14159
int main(int argc,char ** argv)
{
\x05while(1)
\x05{
\x05\x05char szInput[128];
\x05\x05string strInput;
\x05\x05string strTmp;
\x05\x05char szTmp[128];
\x05\x05string::size_type Index;
\x05\x05float LatLongitude[3]={0};\x05//经纬度
\x05\x05float Radius;
\x05\x05float ArcLen;\x05\x05//弧长
\x05\x05float ChordLen;\x05\x05//弦长
\x05\x05float LonDiff;\x05//圆心角
\x05\x05int i=0;
\x05\x05cout<<"-----------------------------------------------"<<endl;
\x05\x05cout<<"请输入经纬度"<<endl;
\x05\x05cin.clear();
\x05\x05cin.sync();
\x05\x05cin.get(szInput,sizeof(szInput));
\x05\x05strInput=szInput;
\x05\x05while((Index=strInput.find(" ")) != string::npos)
\x05\x05{
\x05\x05\x05strTmp=strInput.substr(0,Index);
\x05\x05\x05_snprintf(szTmp,sizeof(szTmp),"%s",strTmp.c_str());
\x05\x05\x05sscanf(szTmp,"%f",&(LatLongitude[i]));
\x05\x05\x05strInput=strInput.substr(Index+1);
\x05\x05\x05i++;
\x05\x05}
\x05\x05_snprintf(szTmp,sizeof(szTmp),"%s",strInput.c_str());
\x05\x05sscanf(szTmp,"%f",&(LatLongitude[i]));
\x05\x05if(LatLongitude[0]>90 || LatLongitude[0]<-90)
\x05\x05{
\x05\x05\x05cout<<"输入纬度有误"<<endl;
\x05\x05\x05continue;
\x05\x05}
\x05\x05if(LatLongitude[1]<-180 || LatLongitude[1]>180 || LatLongitude[2]<-180 || LatLongitude[2]>180)
\x05\x05{
\x05\x05\x05cout<<"输入经度有误"<<endl;
\x05\x05\x05continue;
\x05\x05}
\x05\x05Radius=EARTH_RADIUS*sin((90-LatLongitude[0])/180*PI);
\x05\x05if(LatLongitude[2]>LatLongitude[1])
\x05\x05{
\x05\x05\x05LonDiff=LatLongitude[2]-LatLongitude[1];


\x05\x05}
\x05\x05else
\x05\x05{
\x05\x05\x05LonDiff=LatLongitude[1]-LatLongitude[2];
\x05\x05}\x05
\x05\x05if(LonDiff>180)
\x05\x05{
\x05\x05\x05LonDiff=360-LonDiff;
\x05\x05}
\x05\x05ChordLen=Radius*sin(LonDiff/2/180*PI)*2;
\x05\x05ArcLen=2*Radius*PI*(LonDiff/360);
\x05\x05cout<<"两点之间的弦长:"<<ChordLen<<"千米"<<endl;
\x05\x05cout<<"弦长所对应的圆心角:"<<LonDiff<<"度"<<endl;
\x05\x05cout<<"两点之间的劣弧长:"<<ArcLen<<"千米"<<endl;


\x05}
\x05
\x05return 0;
}


运行

用C++求地球两点间距离已知地球的平均半径为6371.393千米,假设在地球的同一纬度上,有两个处于不同经度的点A、B,编程序求出这两点之间的直线距离(即弦长)、弦长所对球心角的大小(单位 求计算地球上A B两点间距离的计算公式 以下为两点经纬度A(x,y) B(a,b) 求地球的密度已知地球自转周期为T,地球半径为R,引力常量为G,地球同步卫星离地面的高度约为地球半径的6倍.试求地球的平均密度. 已知两点坐标,两点间距离是多少 ,求那个公式 已知地球半径637,AB两城市位于同一纬度但不同经度.编程求AB间距离C语言6371 用打点计时器测量重力加速度,A、B、C为纸带上的三个点,AB间距离为0.980cm,BC间距离为1.372cm,已知地球半径为6.37*106m,试计算地球的第一宇宙速度是多少?(电源频率为50Hz) 在直角坐标系中,已知A、B两点的坐标分别为(3,0)、(0,4),C为x轴上一点,若△ABC是等腰三角形,求点C的坐标用两点间距离公式 已知月球绕地球运动周期T和轨道半径r,地球半径为R求地球的质量?地球的平均密度? 已知月球绕地球运动周期T和轨道半径r,地球半径R 求地球的质量,地球的平均密度急, C语言 两点间距离 C语言求两点间距离以像素为单位 已知弧长295,弧两点间距离为272,求圆的半径r, 地球的平均半径 地球的平均半径 已知地球的半径为R,地球表面的重力加速度为g,引力常量为G.1求地球的质量M; 2求地球平均密度P 用 平面直角坐标系中两点间距离公式 已知A(2,1),B(4,3),c为坐标轴上的点,求c点坐标c为坐标轴上的点,△ABC是以底边为底边的等腰三角形 求一个能算三点共线和两点间距离的c语言程序 已知地球半径为R,地球表面重力加速度为g,万有引力常量为G求地球的平均密度,近地卫星绕地球做匀速圆周运动的线速度大小