1、/主函数入口GeodesyHomework.cpp#include MyFunction.hZhengsuan.hFansuan.h#include using namespace std;void fansuan();void zhengsuan();void main() zhengsuan(); fansuan(); printf(/n over!);void zhengsuan() double myB,myL; coutmyXmyY; Fansuan myFansuan1(myX,myY); myFansuan1.printLocation();/自定功能函数库MyFunction.
2、h#define PI 3.1415926double angleToDegree(int du,int fen,float miao);double angleToDegree();/将度分秒换算为度double degreeToRadian(double degree);double degreeToRadian();/将角度换算为弧度MyFunction.cppdouble angleToDegree(int du,int fen,float miao) double result=0; result=miao/3600.0+fen/60.0+du; return result;doub
3、le angleToDegree() int du,fen; float miao; double result;请输入度 分 秒。例如:30 20 00dufenmiao; result=angleToDegree(du,fen,miao);double degreeToRadian(double degree) result=degree/57.2321;double degreeToRadian() double result,degree; degree=angleToDegree(); result=degreeToRadian(degree);/正算类Zhengsuan.h/ Zh
4、engsuan.h: interface for the Zhengsuan class./#if !defined(AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8F14_56421A7B4466_INCLUDED_)#define AFX_ZHENGSUAN_H_2655EA28_E810_44A3_8F14_56421A7B4466_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER #define rouSecond 206264.5math.hclass Zhengsuan public: Zheng
5、suan(); Zhengsuan(double fB,double fL); double getX(); double getY(); double getrB(); double getrL(); void printLocation(); virtual Zhengsuan();private: double x; double y;/坐标 double X; double Y;/国家统一坐标 double B; double rB; int Bsecond; double L; double rL; /输入的纬度B,经度L,rB,rL为对应弧度表示值,Bsecond为换算成秒数值 i
6、nt n;/带号n double L0;/中央经线纬度L0 double LDot;/纬度差L-L0 int LDotSecond;/换算成秒的纬度差 double l; double N; double a0; double a3; double a4; double a5; double a6;/七个计算参数;#endif / !Zhengsuan.cpp/ Zhengsuan.cpp: implementation of the Zhengsuan class./ Construction/DestructionZhengsuan:Zhengsuan()Zhengsuan(double
7、fB,double fL) B=fB; rB=degreeToRadian(fB); L=fL; rL=degreeToRadian(fL); Bsecond=B*3600;/初始化经度L,纬度B,Bsecond,按弧度的纬度rB n=(int)(L/6+1);/初始化带号n L0=6*n-3;/中央经线经度,角度单位 LDot=L-L0;/经度差 LDotSecond=LDot*3600; l=(LDot)*3600/rouSecond;/计算参数l N=6399698.902-(21562.267-(108.973-0.612*cos(rB)*cos(rB)*cos(rB)*cos(rB)
8、*cos(rB)*cos(rB);/计算参数N a0=32140.404-(135.3302-(0.7092-0.004*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB);/计算参数a0 a4=(0.25+0.00252*cos(rB)*cos(rB)*cos(rB)*cos(rB)-0.04166;/计算参数a4 a6=(0.166*cos(rB)*cos(rB)-0.084)*cos(rB)*cos(rB);/计算参数a6 a3=(0.3333333+0.001123*cos(rB)*cos(rB)*cos(rB)*cos(rB)-0.1666
9、667;/计算参数a3 a5=0.0083-(0.1667-(0.1968+0.004*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB)*cos(rB);/计算参数a5 x=6367558.4969*Bsecond/rouSecond-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(rB)*cos(rB);/正算x y=(1+(a3+a5*l*l)*l*l)*l*N*cos(rB);/正算y X=x; Y=n*1000000+y+500000;Zhengsuan()double Zhengsuan:getX() return X;getY() return Y;void Zhengsuan:printLocation()正算得国家统一坐标为: X= %8.8f Y=%8.8f n,X,Y);getrB() return rB;getrL() return rL;/反算类Fansuan.h/ Fansuan.h: interface for the Fansuan class./
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1