高斯正反算实验报告王震阳4176.docx
- 文档编号:24250884
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:14
- 大小:58.39KB
高斯正反算实验报告王震阳4176.docx
《高斯正反算实验报告王震阳4176.docx》由会员分享,可在线阅读,更多相关《高斯正反算实验报告王震阳4176.docx(14页珍藏版)》请在冰豆网上搜索。
高斯正反算实验报告王震阳4176
实验2:
高斯正反算以及换带程序
的实现
姓名:
王震阳
学号:
班级:
测绘09-1班
扌旨导老师:
周志易
完成时间:
2011.08.1
1实验目的和要求
1.了解高斯正反算的基本思想。
2.完成高斯正反算点算程序的实现过程
2实验环境和工具
通过Windowsxp系统运行Vc6.0软件
3实验结
3.1程序代码
1.正反算程序
charcb[100],cl[100],cl0[100],cx[100],cy[100];
charcbdu[100],cbfen[100],cbmiao[100];
charcldu[100],clfen[100],clmiao[100];
charcl0du[100],cl0fen[100],cl0miao[100];
doubledb=0,dl=0,dl0=0,dx=0,dy=0;
doubledbdu=0,dbfen=0,dbmiao=0;
doubledldu=0,dlfen=0,dlmiao=0;
doubledl0du=0,dl0fen=0,dl0miao=0;
doublep2=206264.8062;
charcfr[100];
charcfb[100],cfl[100];
doubledfb=0,dfl=0;
doubledfbdu=0,dfbfen=0,dfbmiao=0;doubledfldu=0,dflfen=0,dflmiao;
charcfbdu[100],cfbfen[100],cfbmiao[100];
charcfldu[100],cflfen[100],cflmiao[100];m_b.GetWindowText(cb,100);
for(inti=0;cb[i]!
='';i++)
{
if(cb[i]!
='')cbdu[i]=cb[i];
}
cbdu[i]='\0';
dbdu=atof((LPCTSTR)cbdu);/////
for(intj=0;cb[j+strlen(cbdu)+1]!
='';j++)
{cbfen[j]=cb[j+strlen(cbdu)+1];
}cbfen[j]='\0';
dbfen=atof((LPCTSTR)cbfen);/////
for(intk=0;cb[k+strlen(cbdu)+strlen(cbfen)+2]!
='';k++){
cbmiao[k]=cb[k+strlen(cbdu)+strlen(cbfen)+2];
}cbmiao[k]='\0';
dbmiao=atof((LPCTSTR)cbmiao);////
db=(dbdu*3600+dbfen*60+dbmiao)/206264.8062;//////纬度的弧度制
////////////////////////////////////////////////////////////////////////////////获取经度L的度分秒、、、、////
m_l.GetWindowText(cl,100);
for(i=0;cl[i]!
='';i++)
{
if(cl[i]!
='')
cldu[i]=cl[i];
}
cldu[i]='\0';dldu=atof((LPCTSTR)cldu);/////
for(j=0;cl[j+strlen(cldu)+1]!
='';j++)
{clfen[j]=cl[j+strlen(cldu)+1];
}
clfen[j]='\0';dlfen=atof((LPCTSTR)clfen);/////
for(k=0;cl[k+strlen(cldu)+strlen(clfen)+2]!
='';k++)
{clmiao[k]=cl[k+strlen(cldu)+strlen(clfen)+2];
}clmiao[k]='\0';dlmiao=atof((LPCTSTR)clmiao);/////
dl=(dldu*3600+dlfen*60+dlmiao)/206264.8062;//////经度的弧度制
//////////////////////////////////////////////////////////////////////////获取经度L0的度分秒、、、、///////m_l0.GetWindowText(cl0,100);
doubledl1=atof((LPCTSTR)cl0);/////dl0=dl1*3600/206264.8062;//////中央子午线的弧度制
///////////////////////////////////////////////////////////////////////////////////////////////
charczx[100],czy[100],czr[100];
doubledzx=0.,dzy=0.,dzr=0.;
doublel=dl-dl0;
double
n=6399698.902-(21562.267-(108.973-0.612*cos(db)*cos(db))*cos(db)*cos(db))*cos(db)*cos(db);
double
a0=32140.404-(135.3302-(0.7092-0.0040*cos(db)*cos(db))*cos(db)*cos(db))*cos(db)*cos(db);
doublea4=(0.25+0.00252*cos(db)*cos(db))*cos(db)*cos(db)-0.04166;
doublea6=(0.166*cos(db)*cos(db)-0.084)*cos(db)*cos(db);
doublea3=(0.3333333+0.001123*cos(db)*cos(db))*cos(db)*cos(db)-0.1666667;
doublea5=0.0083-(0.1667-(0.1968+0.004*cos(db)*cos(db))*cos(db)*cos(db))*cos(db)*cos(db);
dzx=6367558.4969*db-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*n)*sin(db)*cos(db);dzy=(1.+(a3+a5*l*l)*l*l)*l*n*cos(db);
_gcvt(dzx,14,czx);
m_zx=czx;
_gcvt(dzy,14,czy);
m_zy=czy;
///////////
doublezr1=0.33333+0.00674*cos(db)*cos(db);
doublezr2=(0.2*cos(db)*cos(db)-0.0067)*l*l;
doubledzrdu,dzrfen,dzrmiao;
charczrdu[100],czrfen[100],czrmiao[100],mczr1[100];
CStringmczr2,mczr3,mczr4,mczr5,mczr6,mczr7,mczr8;dzr=l*sin(db)*(1+(zr1+zr2)*l*l*cos(db)*cos(db));
dzrdu=(int)(dzr*p2/3600.0);
dzrfen=(int)((dzr*p2-dzrdu*3600)/60.0);
dzrmiao=(dzr*p2-dzrdu*3600-dzrfen*60);_gcvt(dzrdu,5,czrdu);
_gcvt(dzrfen,5,czrfen);
_gcvt(dzrmiao,4,czrmiao);
mczr6='';
mczr2=czrfen;
mczr3=czrdu;
mczr4=czrmiao;
mczr5=mczr3+mczr6+mczr2+mczr6+mczr4;
m_zr=mczr5;
///////////////////////////反算程序//////
CStringcfdu1,cffen1,cfmiao1,cff1;
CStringcfdu2,cffen2,cfmiao2,cff2;
CStringmcfr4,mcfr2,mcfr3,mcfr5,mcfr6;
m_x.GetWindowText(cx,100);
m_y.GetWindowText(cy,100);
dx=atof((LPCTSTR)cx);
dy=atof((LPCTSTR)cy);
doublebter=dx/6367558.4969;
doublebf1=(293622+(2350+22*cos(bter)*cos(bter))*cos(bter)*cos(bter))*cos(bter)*cos(bter);double
bf=bter+((.0+bf1)*sin(bter)*cos(bter))/(10.0*10.0*10.0*10.0*10.0*10.0*10.0*10.0*10.0*10.0);
doublenf1=21562.267-(108.973-0.612*cos(bf)*cos(bf))*cos(bf)*cos(bf);
doublenf=6399698.902-nf1*cos(bf)*cos(bf);
doublez=dy/(nf*cos(bf));
doubleb2=(0.5+0.003369*cos(bf)*cos(bf))*sin(bf)*cos(bf);
doubleb3=0.333333-(0.166667-0.001123*cos(bf)*cos(bf))*cos(bf)*cos(bf);
doubleb4=0.25+(0.16161+0.00562*cos(bf)*cos(bf))*cos(bf)*cos(bf);
doubleb5=0.2-(0.1667-0.0088*cos(bf)*cos(bf))*cos(bf)*cos(bf);dfb=bf-(1-(b4-0.12*z*z)*z*z)*z*z*b2;
dfl=dl0+(1-(b3-b5*z*z)*z*z)*z;
dfbdu=(int)(dfb*p2/3600);
dfbfen=(int)((dfb*p2-dfbdu*3600)/60);dfbmiao=dfb*p2-dfbdu*3600-dfbfen*60;
_gcvt(dfbdu,15,cfbdu);
cfdu1=cfbdu;
_gcvt(dfbfen,15,cfbfen);
cffen1=cfbfen;
_gcvt(dfbmiao,15,cfbmiao);
cfmiao1=cfbmiao;
cff1=cfdu1+mczr6+cffen1+mczr6+cfmiao1;
m_fb=cff1;
dfldu=(int)(dfl*p2/3600);
dflfen=(int)((dfl*p2-dfldu*3600)/60);
dflmiao=dfl*p2-dfldu*3600-dflfen*60;
_gcvt(dfldu,10,cfldu);
cfdu2=cfldu;
_gcvt(dflfen,10,cflfen);
cffen2=cflfen;
_gcvt(dflmiao,10,cflmiao);
cfmiao2=cflmiao;
cff2=cfdu2+mczr6+cffen2+mczr6+cfmiao2;
m_fl=cff2;
//////计算反算子午收敛角du///
doubledfr;
doublel1=dl0-dfl;
doublefr1=0.33333+0.00674*cos(dfb)*cos(dfb);
doublefr2=(0.2*cos(dfb)*cos(dfb)-0.0067)*l1*l1;
doubledfrdu,dfrfen,dfrmiao;
charcfrdu[100],cfrfen[100],cfrmiao[100],mcfr1[100];
dfr=l1*sin(dfb)*(1+(fr1+fr2)*l1*l1*cos(dfb)*cos(dfb));
dfrdu=(int)(dfr*p2/3600.0);
dfrfen=(int)((dfr*p2-dfrdu*3600)/60.0);
dfrmiao=(dfr*p2-dfrdu*3600-dfrfen*60);
_gcvt(dfrdu,5,cfrdu);
_gcvt(dfrfen,5,cfrfen);
_gcvt(dfrmiao,4,cfrmiao);mcfr6='';
mcfr2=czrfen;
mcfr3=czrdu;
mcfr4=czrmiao;
mcfr5=mcfr3+mcfr6+mcfr2+mcfr6+mcfr4;
m_fr=mcfr5;
UpdateData(false);
}
///////////////////////////////////换带程序
charcx[100],cy[100];
charcl0[100];
charcl0n[100];
doubledx=0.,dy=0.;
doubledl0=0.,dl0n=0.;
m_x1.GetWindowText(cx,100);
m_y1.GetWindowText(cy,100);
dx=atof((LPCTSTR)cx);
dy=atof((LPCTSTR)cy);
m_l0.GetWindowText(cl0,100);
dl0=atof((LPCTSTR)cl0);
m_l0n.GetWindowText(cl0n,100);
dl0n=atof((LPCTSTR)cl0n);
doublebter=dx/6367558.4969;
doublebf1=(293622+(2350+22*cos(bter)*cos(bter))*cos(bter)*cos(bter))*cos(bter)*cos(bter);
doublebf=bter+((.0+bf1)*sin(bter)*cos(bter))/(10.0*10.0*10.0*10.0*10.0*10.0*10.0*10.0*10.0*10.0);
doublenf1=21562.267-(108.973-0.612*cos(bf)*cos(bf))*cos(bf)*cos(bf);
doublenf=6399698.902-nf1*cos(bf)*cos(bf);
doublez=dy/(nf*cos(bf));
doubleb2=(0.5+0.003369*cos(bf)*cos(bf))*sin(bf)*cos(bf);
doubleb3=0.333333-(0.166667-0.001123*cos(bf)*cos(bf))*cos(bf)*cos(bf);
doubleb4=0.25+(0.16161+0.00562*cos(bf)*cos(bf))*cos(bf)*cos(bf);
doubleb5=0.2-(0.1667-0.0088*cos(bf)*cos(bf))*cos(bf)*cos(bf);
doubledfb=0,dfl=0.;
dfb=bf-(1-(b4-0.12*z*z)*z*z)*z*z*b2;
CStringcfdu1,cffen1,cfmiao1,cff1;
CStringmczr6='';
doubledfbdu=(int)(dfb*p2/3600);
doubledfbfen=(int)((dfb*p2-dfbdu*3600)/60);
doubledfbmiao=dfb*p2-dfbdu*3600-dfbfen*60;
charcfbdu[100],cfbfen[100],cfbmiao[100];
_gcvt(dfbdu,15,cfbdu);
cfdu1=cfbdu;
_gcvt(dfbfen,15,cfbfen);
cffen1=cfbfen;
_gcvt(dfbmiao,15,cfbmiao);
cfmiao1=cfbmiao;
cff1=cfdu1+mczr6+cffen1+mczr6+cfmiao1;
m_b=cff1;
/////////
dl0=dl0*3600/206264.8062;
dfl=dl0+(1-(b3-b5*z*z)*z*z)*z;
doubledfldu=(int)(dfl*p2/3600);
doubledflfen=(int)((dfl*p2-dfldu*3600)/60);
doubledflmiao=dfl*p2-dfldu*3600-dflfen*60;
charcfldu[100],cflfen[100],cflmiao[100];
CStringcfdu2,cffen2,cfmiao2,cff2;
_gcvt(dfldu,100,cfldu);
cfdu2=cfldu;
_gcvt(dflfen,100,cflfen);
cffen2=cflfen;
_gcvt(dflmiao,100,cflmiao);
cfmiao2=cflmiao;
cff2=cfdu2+mczr6+cffen2+mczr6+cfmiao2;
m_l=cff2;
//////
UpdateData(false);
doublel=dfl-dl0n*3600/p2;
doublen=6399698.902-(21562.267-(108.973-0.612*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb);
doublea0=32140.404-(135.3302-(0.7092-0.0040*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb);
doublea4=(0.25+0.00252*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb)-0.04166;
doublea6=(0.166*cos(dfb)*cos(dfb)-0.084)*cos(dfb)*cos(dfb);
doublea3=(0.3333333+0.001123*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb)-0.1666667;
doublea5=0.0083-(0.1667-(0.1968+0.004*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb))*cos(dfb)*cos(dfb)
charcx2[100];
charcy2[100];
doubledx2=6367558.4969*dfb-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*n)*sin(dfb)*cos(dfb);
doubledy2=(1.+(a3+a5*l*l)*l*l)*l*n*cos(dfb);
_gcvt(dx2,14,cx2);
m_x2=cx2;
_gcvt(dy2,14,cy2);
m_y2=cy2;
UpdateData(false);
//////
doublezr1=0.33333+0.00674*cos(dfb)*cos(dfb);
doublezr2=(0.2*cos(dfb)*cos(dfb)-0.0067)*l*l;
doubledzrdu,dzrfen,dzrmiao;
charczrdu[100],czrfen[100],czrmiao[100],mczr1[100];
CStringmczr2,mczr3,mczr4,mczr5,mczr7,mczr8;
doubledzr=l*sin(dfb)*(1+(zr1+zr2)*l*l*cos(dfb)*cos(dfb));
dzrdu=(int)(dzr*p2/3600.0);
dzrfen=(int)((dzr*p2-dzrdu*3600)/60.0);
dzrmiao=(dzr*p2-dzrdu*3600-dzrfen*60);
_gcvt(dzrdu,5,czrdu);
_gcvt(dzrfen,5,czrfen);
_gcvt(dzrmiao,4,czrmiao);
mczr6='';
mczr2=czrfen;
mczr3=czrdu;
mczr4=czrmiao;
mczr5=mczr3+mczr6+mczr2+mczr6+mczr4;
m_r=mczr5;
UpdateData(false);
3.2运行结果分析
得到预期结果,经过和答案比对完全正确,程序正确。
4实验心得
本次程序和上一次大地主题结算程序相比有一点改进之处,在输入度分秒时可以在同一个编辑框里同时输入,之间要以空格分开,程序便可识别。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 正反 实验 报告 王震阳 4176