早教吧 育儿知识 作业答案 考试题库 百科 知识分享

已知地球半径R,A点(J1,W1),B点(J2,B2),求两点间直线距离和球面距离的公式!已知地球半径R,A点(J1,W1),B点(J2,B2),J,W,代表该点经度和纬度,求两点间直线距离和球面距离的公式!

题目详情
已知地球半径R, A点(J1,W1),B点(J2,B2),求两点间直线距离和球面距离的公式!
已知地球半径R, A点(J1,W1),B点(J2,B2),J,W,代表该点经度和纬度,求两点间直线距离和球面距离的公式!
▼优质解答
答案和解析
#ifndef __JWD_AND_HELPER_20051005
#define __JWD_AND_HELPER_20051005
#include "stdafx.h"
#include
#include
using namespace std;
#ifndef PI
#define PI 3.14159265;
#endif
static double Rc = 6378137; // 赤道半径
static double Rj = 6356725; // 极半径
namespace CDYW{
class JWD
{
public:
double m_LoDeg,m_LoMin,m_LoSec; // longtitude 经度
double m_LaDeg,m_LaMin,m_LaSec;
double m_Longitude,m_Latitude;
double m_RadLo,m_RadLa;
double Ec;
double Ed;
public:
// 构造函数,经度:loDeg 度,loMin 分,loSec 秒; 纬度:laDeg 度,laMin 分,laSec秒
JWD(double loDeg,double loMin,double loSec,double laDeg,double laMin,double laSec)
{
m_LoDeg=loDeg; m_LoMin=loMin; m_LoSec=loSec; m_LaDeg=laDeg; m_LaMin=laMin; m_LaSec=laSec;
m_Longitude = m_LoDeg + m_LoMin / 60 + m_LoSec / 3600;
m_Latitude = m_LaDeg + m_LaMin / 60 + m_LaSec / 3600;
m_RadLo = m_Longitude * PI / 180.;
m_RadLa = m_Latitude * PI / 180.;
Ec = Rj + (Rc - Rj) * (90.- m_Latitude) / 90.;
Ed = Ec * cos(m_RadLa);
}
//!
JWD(double longitude,double latitude)
{
m_LoDeg = int(longitude);
m_LoMin = int((longitude - m_LoDeg)*60);
m_LoSec = (longitude - m_LoDeg - m_LoMin/60.)*3600;
m_LaDeg = int(latitude);
m_LaMin = int((latitude - m_LaDeg)*60);
m_LaSec = (latitude - m_LaDeg - m_LaMin/60.)*3600;
m_Longitude = longitude;
m_Latitude = latitude;
m_RadLo = longitude * PI/180.;
m_RadLa = latitude * PI/180.;
Ec = Rj + (Rc - Rj) * (90.-m_Latitude) / 90.;
Ed = Ec * cos(m_RadLa);
}
};
class CJWDHelper
{
public:
CJWDHelper() {};
CJWDHelper() {};
//!计算点A 和 点B的经纬度,求他们的距离和点B相对于点A的方位
/*!
* \param A A点经纬度
* \param B B点经纬度
* \param angle B相对于A的方位,不需要返回该值,则将其设为空
* \return A点B点的距离
*/
static double distance(JWD A,JWD B,double *angle)
{
double dx = (B.m_RadLo - A.m_RadLo) * A.Ed;
double dy = (B.m_RadLa - A.m_RadLa) * A.Ec;
double out = sqrt(dx * dx + dy * dy);
if( angle != NULL)
{
*angle = atan(fabs(dx/dy))*180./PI;
// 判断象限
double dLo = B.m_Longitude - A.m_Longitude;
double dLa = B.m_Latitude - A.m_Latitude;
if(dLo > 0 && dLa
看了 已知地球半径R,A点(J1,...的网友还看了以下:

冥王星相比地球距离太阳更遥远,冥王星的质量约为地球质量的0.0022倍,半径约为地球半径的0.19  2020-04-09 …

求太阳半径与太阳到地球距离的比?分别写出太阳的半径到地球距离,以及太阳半径除以到地球距离的结果  2020-04-11 …

如图为一个缆车示意图,该缆车半径为4.8m,圆上最低点与地面距离为0.8m,60秒转动一圈,图中O  2020-06-17 …

如图所示,地球半径为R,a是地球赤道上的一栋建筑,b是与地心的距离为nR的地球同步卫星,c是在赤道  2020-06-18 …

如图为一个缆车示意图,该缆车半径为4.8m,圆上最低点与地面距离为0.8m,60秒转动一圈,图中O  2020-07-06 …

.“神舟”五号飞船运行轨道是以地球的中心F为焦点的椭圆,测得近地点A距地面为mkm,远地点B距地面  2020-07-20 …

圆周运动半径月球饶地球运动的轨迹(近似看成圆)的半径是地球半径加地月距离还是地球半径+地月距离+月球  2020-11-10 …

关于物理天体间r的问题当研究月球绕地球转的时候GM/R2=v2/r这里的r指的是什么是地球半径+地月  2020-12-16 …

某个星球,质量是地球质量的4倍,半径是地球半径的4倍.在其表面有如图所示的装置,光滑水平面右端B处连  2020-12-28 …

某小行星质量为地球质量的万分之一,半径为地球半径的百分之一它绕地球做匀速圆周运动,距太阳距离是地球距  2021-02-01 …