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

vc程序,以下是自已写的,但有错误,没法运行,求调试.//已知待定点的空间直角坐标(X、Y、Z),求其大地坐标(B、L、H).利用这两种坐标系可以看作时同一个地球坐标系的两种形式之间的关系,

题目详情
vc程序,以下是自已写的,但有错误,没法运行,求调试.
//已知待定点的空间直角坐标(X、Y、Z),求其大地坐标(B、L、H).利用这两种坐标系可以看作时同一个地球坐标系的两种形式之间的关系,确定其数学转换关系.
#include
#include
math()
{
float X=2325.2153,Y=5146.3214,Z=5324541314.1753; //已知待定点的空间直角坐标,单位为米
double e2=0.006738525414683,c=6399698.9017827110; //克氏椭球中椭圆的第一偏心率
float q,r,R,L,a,A1,A2,A3,A4,tB,B,V,N,H,fB,fL,dB,fenB,mB,C,dL,fenL,mL;
q=atan(Z/sqrt(X*X+Y*Y));
r=sqrt(X*X+Y*Y+Z*Z);
R=6371116.0; //地球半径
L=atan(Y/X); //大地坐标经度
a=1/298.3;
A1=a*tan(q)/R;
A2=sin(q)*sin(q)+2*a*cos(q)*cos(q)/R;
A3=3*sin(q)*sin(q)*sin(q)*sin(q)+16*(a*sin(q)*sin(q)*cos(q)*cos(q)/R+4*a*a*cos(q)*cos(q)*(2-5*sin(q)*sin(q))/(R*R));
A4=5*sin(q)*sin(q)*sin(q)*sin(q)*sin(q)*sin(q)+48*(a*sin(q)*sin(q)*sin(q)*sin(q)*cos(q)*cos(q)+20*a*a*cos(q)*cos(q)*sin(q)*sin(q)*(4-7*sin(q)*sin(q))/(R*R)+16*a*a*a*cos(q)*cos(q)*(1-7*sin(q)*sin(q)+8*sin(q)*sin(q)*sin(q)*sin(q))/(R*R*R));
tB=tan(q)+A1*e2*(1+e2/2.0*(A2+e2/4.0*(A3+A4/2.0)*e2));
B=atan(tB); //大地坐标纬度
V=sqrt(1+e2*cos(B)*cos(B));
N=c/V; //所在子午圈的卯酉圈曲率半径
H=r*cos(q)/cos(B)-N; //待定点的大地高
fB=rad2deg(B); //将弧度化成角度
fL=rad2deg(L);
dB=floor(fB);
fenB=floor((fB-dB)*60);
mB=floor(((fB-dB)*60-fenB)*60); //将角度用度,分,秒表示
C=floor(fL);
fenL=floor((fL-dL)*60);
mL=floor(((fL-dL)*60-fenL)*60);
printf("\nL=%d %d %d\n",dL,fenL,mL);
printf("B=%d %d %d\n",dB,fenB,mB);
}
▼优质解答
答案和解析
fB=rad2deg(B);
fL=rad2deg(L);
dB=floor(fB);
在此处调用了外部函数,你的外部函数没有声明和实现,所以会报错.看看是否没有包含应包含的头文件.