測繪程序設計四 函數(shù)實驗報告_第1頁
測繪程序設計四 函數(shù)實驗報告_第2頁
測繪程序設計四 函數(shù)實驗報告_第3頁
測繪程序設計四 函數(shù)實驗報告_第4頁
測繪程序設計四 函數(shù)實驗報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、測繪程序設計(VC.net)上機實驗報告(Visual C+.Net)班 級: 測繪1402 學 號: 0401140207 姓 名: 施慶章 序 號: sm_207 二零一六年五月實驗4 函數(shù)一、實驗目的· 掌握函數(shù)的定義、引用及應用方法。二、實驗內(nèi)容1.交會定點計算函數(shù)設計把前方交會、測邊交會、后方交會程序?qū)懗珊瘮?shù)的形式,然后再通過主程序調(diào)用。提示:后方交會計算函數(shù)設計思路(1) 基本原理及計算公式。若將Pa、Pb、Pc看成權(quán),則P點的坐標即為三個已知點的加權(quán)平均值(2)計算程序設計步驟設計界面,用于輸入3個已知點的坐標和三個觀測角a、b和g,以及用于輸出待定點坐標的文本框(12

2、個)、靜態(tài)標簽框和Button按鈕;定義文本框控件變量(Value);創(chuàng)建后方交會定點計算函數(shù),函數(shù)的輸入為三個觀測角和三個已知點的坐標,輸出為待定點坐標,輸出可以用引用參數(shù)的方式輸出,具體計算步驟;a.根據(jù)已知點計算三個內(nèi)角A、B、C;b.計算Tan(a)、Tan(b)、Tan(g)、Tan(A)、Tan(B)、Tan(C);c.計算Pa、Pb、Pc;d.計算待定點坐標Xp、Yp。創(chuàng)建“計算”Button按鈕的Click事件函數(shù),在該事件函數(shù)中調(diào)用后方交會計算函數(shù),并在相應的文本框中顯示計算結(jié)果。2.高斯投影正反算計算函數(shù)設計編寫高斯投影正算與反算的兩個函數(shù),并設計簡單界面對函數(shù)計算的正確性

3、進行測試。 正算公式: 長半軸第一偏心率是要求的點到中央子午線的經(jīng)度差,為底點緯度 下標“f”表示與有關量 反算公式:即,y=0時 x 所對應道的子午弧長界面設計:控件類型控件ID控件名稱變量函數(shù)EditControlIDC_EDITx1x1EditControlIDC_EDITx2x2EditControl IDC_EDITy1y1EditControlIDC_EDITy2y2EditControlIDC_EDITDapDapEditControlIDC_EDITDbpDbpEditControlIDC_EDITxpxpEditControlIDC_EDITypypEditControlID

4、C_EDITX1X1EditControlIDC_EDITX2X2EditControlIDC_EDITY1Y1EditControlIDC_EDITY2Y2EditControlIDC_EDITalphaaEditControlIDC_EDITbettabEditControlIDC_EDITXpXpEditControlIDC_EDITYpYpButtonID_BUTTON_DELETE清除OnBnClickedDELETEButtonID_BUTTON_OK2計算前方交會OnBnClickedOK2ButtonID_BUTTON_OK計算側(cè)方交會OnBnClickedOKButtonID

5、_BUTTON_CANCLE取消OnBnClickedCANCLE控件類型控件ID變量控件名稱函數(shù)EditControlIDC_EDITXAXAEditControlIDC_EDITYAYAEditControlIDC_EDITXBXBEditControlIDC_EDITYBYBEditControlIDC_EDITXCXCEditControlIDC_EDITYCYCEditControlIDC_EDITalphaalphaEditControlIDC_EDITbettabettaEditControlIDC_EDITgammagammaEditControlIDC_EDITXPXPEdi

6、tControlIDC_EDITYPYPButtonID_BUTTON_OK計算OnBnClickedOKButtonID_BUTTON_DELETE清除OnBnClickedELETE控件類型控件ID變量控件名稱函數(shù)EditControlIDC_EDITXXEditControlIDC_EDITYYEditControlIDC_EDITB BEditControlIDC_EDITL LEditControlIDC_EDIT2nButtonID_BUTTON_ InverseOnBnClickedInverseButtonID_BUTTON_ DeleteOnBnClickedDeleteBu

7、ttonID_BUTTON_CoordinateOnBnClickedCoordinateButtonID_BUTTON_ CancelOnBnClickedCancel主要代碼:double PI=3.1415926;double EPSILON=1.0E-10;void FowardIntersection(double Xa1,double Ya1,double Xb1,double Yb1,double a,double b,double& Xp1,double& Yp1) /前方交會函數(shù)double cota=1/tan(a);double cotb=1/tan(b)

8、;Xp1=(Xa1*cotb+Xb1*cota+Yb1-Ya1)/(cota+cotb);Yp1=(Ya1*cotb+Yb1*cota+Xa1-Xb1)/(cota+cotb);void SideIntersection(double Xa2,double Ya2,double Xb2,double Yb2,double Dap,double Dbp,double& Xp2,double& Yp2) /側(cè)方交會函數(shù)double dx=Xb2-Xa2;double dy=Yb2-Ya2+EPSILON;/計算AB方位角(弧度制)double angleAB;if(dy>=0

9、)angleAB=0.5*PI-atan(dx/dy);elseangleAB=1.5*PI-atan(dx/dy);/計算角Adouble Dab; /AB邊長double A; /角Adouble angleAP; /方位角APDab=sqrt(Xb2-Xa2)*(Xb2-Xa2)+(Yb2-Ya2)*(Yb2-Ya2);A=acos(Dab*Dab+Dap*Dap-Dbp*Dbp)/(2*Dab*Dap); angleAP=angleAB-A;Xp2=Xa2+Dap*cos(angleAP);Yp2=Ya2+Dap*sin(angleAP);void Csqz2Dlg:OnBnClick

10、edCancle()/清空數(shù)據(jù)UpdateData(true);X1=0;Y1=0;X2=0;Y2=0;a=0;b=0;Xp=0;Yp=0;x1=0;y1=0;x2=0;y2=0;Dap=0;Dbp=0;xp=0;yp=0;UpdateData(false);void Csqz2Dlg:OnBnClickedOk2()/進行側(cè)方交會計算UpdateData(true);SideIntersection(x1,y1,x2,y2,Dap,Dbp,xp,yp); /調(diào)用函數(shù)UpdateData(false); void Csqz2Dlg:OnBnClickedOk()/進行前方交會計算UpdateD

11、ata(true);FowardIntersection(X1,Y1,X2,Y2,a,b,Xp,Yp); /調(diào)用函數(shù)UpdateData(false);double Pxy(double x,double y) /計算x,y的函數(shù)double P; P=(tan(x)*tan(y)/(tan(x)-tan(y);return P;void CsqzDlg:OnBnClickedOk()/進行后方交會的計算UpdateData(TRUE);double Pa;double Pb;double Pc;double a,b,c,A,B,C;a=sqrt(XC-XB)*(XC-XB)+(YC-YB)*

12、(YC-YB); b=sqrt(XC-XA)*(XC-XA)+(YC-YA)*(YC-YA);c=sqrt(XB-XA)*(XB-XA)+(YB-YA)-(YB-YA);A=acos(b*b+c*c-a*a)/(2*b*c)*180/3.1415926;B=acos(a*a+c*c-b*b)/(2*a*c)*180/3.1415926; C=acos(b*b+a*a-c*c)/(2*b*a)*180/3.1415926;if(alpha+betta+C<170|alpha+betta+C>190) /判斷危險圓Pa=Pxy(alpha,A);Pb=Pxy(betta,B);Pc=P

13、xy(gamma,C);XP=(XA*Pa+XB*Pb+XC*Pc)/(Pa+Pb+Pc);YP=(YA*Pa+YB*Pb+YC*Pc)/(Pa+Pb+Pc); elseMessageBox(_T("該點位于危險圓上"); UpdateData(FALSE);#include "math.h"double PI=3.1415926; /一些常數(shù)的定義double p2=206265;double a=6378140.0;double b=6356755.2881575287;double e=(sqrt(a*a-b*b)/a;double e1=(sqr

14、t(a*a-b*b)/b;double dmstodgree(double dmg) /度分秒轉(zhuǎn)換成度double dge;int Dgree;int Min;int Secend;Dgree=int(dmg);/截取度的整數(shù)部分 Min=int(dmg-Dgree)*100);/截取分的部分Secend=int(dmg-Dgree)*100-Min)*100;/截取秒的部分dge=Dgree+(Min/60)+(Secend/3600);/將度分秒轉(zhuǎn)換為度return dge;/返回度double dgreetodms(double drg)/度轉(zhuǎn)換成度分秒 double dge;int D

15、gree;int Min;int Secend; Dgree=int(drg);/截取度的整數(shù)部分 Min=int(drg-Dgree)*60);/截取分的整數(shù)部分 Secend=int(drg-Dgree)*60-Min)*60);/截取秒的整數(shù)部分 dge=Dgree+Min/100+Secend/10000;/將度轉(zhuǎn)換成度分秒return dge;/返回度分秒double caculateS(double B) /計算Xdouble A0=1+3/4*e*e+45/64*pow(e,4)+350/512*pow(e,6)+11025/16384*pow(e,8);double A2=-1

16、/2*(3/4*e*e+60/64*pow(e,4)+525/512*pow(e,6)+17640/16384*pow(e,8);double A4=1/4*(15/64*pow(e,4)+210/512*pow(e,6)+8820/16384*pow(e,8);double A6=-1/6*(35/512*pow(e,6)+2520/16384*pow(e,8);double A8=1/8*(315/16384*pow(e,8); double S=a*(1-e*e)*(A0*B+A2*sin(2*B)+A4*sin(4*B)+A6*sin(6*B)+A8*sin(8*B);return S

17、;double caculateBf(double X) /計算Bf double A0=1+3/4*e*e+45/64*pow(e,4)+350/512*pow(e,6)+11025/16384*pow(e,8);double B0=caculateS(X)/(a*(1-e*e)*A0);double k0=1/2*(3/4*e*e+45/64*pow(e,4)+350/512*pow(e,6)+11025/16384*pow(e,8);double k2=-1/3*(63/64*pow(e,4)+1108/512*pow(e,6)+58239/16384*pow(e,8);double k

18、4=1/3*(604/512*pow(e,6)+68484/16384*pow(e,8);double k6=-1/3*(26328/16384*pow(e,8);double Bf=B0+sin(2*B0)*(k0+sin(B0)*sin(B0)*(k2+sin(B0)*sin(B0)*(k4+k6*sin(B0)*sin(B0);return Bf;void coordinatecalculate(double B,double L,double n,double &X,double&Y) /正算 double dl=dmstodgree(L);double N=dmsto

19、dgree(n);double l=(dl-N)*3600/206265;double b=dmstodgree(B)*PI/180; double n1=e1*cos(b);double t=tan(b);double N1=a/sqrt(1-e*e*sin(b)*sin(b); double l2=abs(l-(int(l)*6-3)*3600;/經(jīng)度L同當前子午線的差值單位為秒double s=p2*p2*p2*p2;double v=l2*l2*l2*l2;double u=cos(b)*cos(b)*cos(b);X=caculateS(X)+N1/(2*(p2)*(p2)*sin(

20、b)*cos(b)*(l2)*(l2)+N/(24*(p2)*(p2)*sin(b)*u*(5-t*t+9*n1*n1+4*n1*n1*n1*n1)*v+N1/(720*p2*p2*s)*sin(b)*cos(b)*cos(b)*u*(61-58*t*t+t*t*t*t)*l2*l2*v;Y=N1/(p2)*cos(b)*(l2)+N*p2/(6*s)*u*(1-t*t+n*n)*v/l2+N1/(120*p2*s)*cos(b)*cos(b)*u*(5-18*t*t+t*t*t*t-58*n1*n1*t*t)*l2*v; void coordinateinversecalculation(d

21、ouble X,double Y,double n,double &B,double &L) /反算 double Bf=caculateBf(X);double x=X; double Tf=tan(Bf);double nf=e1*cos(Bf); double Nf=a/sqrt(1-e*e*sin(Bf)*sin(Bf);double Mf=Nf/(1+e1*e1*cos(Bf)*cos(Bf);double g=Nf*Nf*Nf*Nf;double h=Y*Y*Y*Y;double c=Tf*Tf*Tf*Tf;double b=Bf-Tf/(2*Mf*Nf)*Y*Y+

22、Tf/(24*Mf*pow(Nf,3)*(5+3*Tf*Tf+nf*nf-9*nf*nf*Tf*Tf)*h-Tf/(720*Mf*pow(Nf,5)*(61+90*Tf*Tf+45*c)*h*Y*Y;double l=1/(Nf*cos(Bf)*Y-Nf/(6*g*cos(Bf)*(1+2*Tf*Tf+nf*nf)*h/Y+1/(120*Nf*g*cos(Bf)*(5+28*Tf*Tf+24*c+6*nf*nf+8*nf*nf*Tf*Tf)*h*Y;l=l+n;B=dmstodgree(b); /轉(zhuǎn)換L=dmstodgree(l);void qingchu(double X,double Y,double n,double B,double L)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論