早教吧作业答案频道 -->数学-->
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);
}
//已知待定点的空间直角坐标(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);
在此处调用了外部函数,你的外部函数没有声明和实现,所以会报错.看看是否没有包含应包含的头文件.
fL=rad2deg(L);
dB=floor(fB);
在此处调用了外部函数,你的外部函数没有声明和实现,所以会报错.看看是否没有包含应包含的头文件.
看了vc程序,以下是自已写的,但有...的网友还看了以下:
已知直线l及其两侧两点A、B,如图.(1)在直线l上求一点P,使PA=PB;(2)在直线l上求一点 2020-05-14 …
已知直线L:3x-y-1=0及点A(4,1),B(0,4)(1)试在L上求一点C使ac-bc最大, 2020-05-17 …
已知:a‖b‖c,a∩l=A,b∩l=B,c∩l=C.求证a,b,c,与l共面 2020-06-12 …
一道关于求两点间最大最小值的问题已知点P(2,4),Q(3,1),直线l:x-y+1=0.⑴在l上 2020-06-26 …
如图,已知直线l及其两侧两点A、B.(1)在直线l上求一点O,使到A、B两点距离之和最短;(2)在 2020-07-25 …
已知:a‖b‖c,a∩l=A,b∩l=B,c∩l=C.求证a,b,c,与l共面 2020-07-29 …
已知:a∩b∩c=D,a∩l=A,b∩l=B,c∩l=C,求:a,b,c,l共面 2020-07-29 …
已知直线L:y=4x和P(6,4),在直线L上求一点Q,使.已知直线L:y=4x和P(6,4),在 2020-07-30 …
已知直线l同旁的两点A、B,在l上求一点P,使PA+PB最小,则求P点的作法正确的为()A.作A关于 2020-11-06 …
已知直线l及位于其两侧的两点A,B,如图(1)在图①中的直线l上求一点P,使PA=PB;(2)在图② 2020-12-01 …