vc程序,以下是自已写的,但有错误,没法运行,求调试.//已-查字典问答网
分类选择

来自翟强的问题

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

  vc程序,以下是自已写的,但有错误,没法运行,求调试.

  //已知待定点的空间直角坐标(X、Y、Z),求其大地坐标(B、L、H).利用这两种坐标系可以看作时同一个地球坐标系的两种形式之间的关系,确定其数学转换关系.

  #include

  #include

  math()

  {

  floatX=2325.2153,Y=5146.3214,Z=5324541314.1753;//已知待定点的空间直角坐标,单位为米

  doublee2=0.006738525414683,c=6399698.9017827110;//克氏椭球中椭圆的第一偏心率

  floatq,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%dn",dL,fenL,mL);

  printf("B=%d%d%dn",dB,fenB,mB);

  }

3回答
2020-10-12 23:13
我要回答
请先登录
丁友东

  fB=rad2deg(B);

  fL=rad2deg(L);

  dB=floor(fB);

  在此处调用了外部函数,你的外部函数没有声明和实现,所以会报错.看看是否没有包含应包含的头文件.

2020-10-12 23:14:47
翟强

  请问此处的头文件。是什么

2020-10-12 23:16:12
丁友东

  这是自定义的函数,在stdio.h和math.h是没有的,如果你有代码的出处可以查看代码中#include中的文件,搜索rad2deg函数的出处就可以找到了,如果没有就自己实现,应该比较简单,简单实现如下:#definePI3.1415926doublerad2deg(doublevalue)//将弧度转换为角度{returnvalue*180/PI;}//另外一个函数的功能没有注释,可以通过整个功能进行猜测,但有一定的风险。

2020-10-12 23:17:01

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •