面向对象程序设计——陈士城-副本.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计——陈士城-副本

面向对象程序设计 开发环境:VC++6.0。 主要工作:在测量中会涉及到几种坐标系统的转换,本程序实现了一下几类坐标系的转换(包括:北京-54坐标,国家-80坐标,WGS-84坐标)。 大地坐标与高斯平面坐标的转换。 将大地坐标转为高斯平面坐标,按照高斯投影正算公式进行。将高斯平面坐标转为大地坐标,按照高斯投影反算公式进行。 (1)、由大地坐标求高斯平面坐标: 高斯投影坐标正算公式(由求): (2)、由高斯平面坐标求大地坐标: 高斯投影坐标反算公式(由求): 大地坐标与空间直角坐标坐标的转换。 (1)、由大地坐标求空间直角坐标: (2)、由空间直角坐标求大地坐标: 式中,,为该点的卯酉圈曲率半径;,、分别为该大地坐标系对应椭球的长半轴和第一偏心率。 空间直角坐标与空间直角坐标的转换。 应用的是布尔莎公式: 公式存在7个参数:3个平移参数,3个旋转参数,1个尺度变化参数。 附1 程序设计界面 附2 主要程序代码 // DlgCoord.cpp : implementation file ///////////////////////////////////////////////////////////////////////////// BOOL CDlgCoord::OnInitDialog() { CDialog::OnInitDialog(); m_comOld.SetCurSel(0); //默认椭球类型 m_comNew.SetCurSel(0); CWnd* pWnd; pWnd=GetDlgItem(IDC_COMBO_GEO_T0); pWnd-ShowWindow(SW_HIDE); pWnd=GetDlgItem(IDC_COMBO_GEO_T1); pWnd-ShowWindow(SW_HIDE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDlgCoord::OnRadioGeoOld() //源 大地坐标 { CWnd* pWnd; pWnd=GetDlgItem(IDC_COMBO_GEO_T0); pWnd-ShowWindow(SW_SHOW); m_comGeoOld.SetCurSel(0); m_strX0=; //置0 m_strY0=; m_strH0=; pWnd=GetDlgItem(IDC_STATIC_X0);//标签标题改变 pWnd-SetWindowText(B=); pWnd=GetDlgItem(IDC_STATIC_Y0); pWnd-SetWindowText(L=); pWnd=GetDlgItem(IDC_STATIC_H0); pWnd-SetWindowText(H=); } …… 其余几个单选按钮类似 void CDlgCoord::OnButtonCoordOk() //坐标转换 按钮 { UpdateData(); //高斯正算 大地-平面 if(m_CoordTypeOld==1m_CoordTypeNew==2) { if(m_strX0.GetLength()==0||m_strY0.GetLength()==0) {AfxMessageBox(请输入数据!);m_ctrX0.SetFocus();} else GaussForward(); } //高斯反算 平面-大地 …… //大地坐标-空间直角坐标 …… //空间直角坐标-大地坐标 …… //空间直角坐标-空间直角坐标 …… } void CDlgCoord::GaussForward()//高斯正算 { UpdateData(); double B,Bbak,L,l,ll,L0,x,y,cos2B,p2; double N,a0,a4,a6,a3,a5; p2=206264.806247; B=stod(m_strX0); // 化为 秒 L=stod(m_strY0); //化为 秒 Bbak=B; //备份B B=B/p2; //化为弧度值 L0=stod(g_center);//获得中央子午线 // AfxMessageBox(g_center); l=L-L0; //化为 秒 l=l/p2;//化为弧度 ll=l*l; //l相乘 cos2B=cos(B)*cos(B); //国家-80 大地坐标

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档