測繪類C#程序代碼_第1頁
測繪類C#程序代碼_第2頁
測繪類C#程序代碼_第3頁
測繪類C#程序代碼_第4頁
測繪類C#程序代碼_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

測繪類C#程序代碼測繪類C#程序代碼測繪類C#程序代碼常用測量程序設計代碼(1)用全站儀在A點觀測了B點斜邊和垂直角,求A到B得高差。(提示:,D--斜邊,--垂直角,--儀器高,--反光鏡高,--大氣折光系數(shù))usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplicat(yī)ion{staticvoidMain(string{Console、Write("請輸入斜邊=");doubleD=double、Parse(Console、ReadLine());Console、Write("請輸入垂直角[ddd、mmss]=");doublea=DEG(double、Parse(Console、ReadLine()));Console、Write("請輸入儀器高=");doublei=double、Parse(Console、ReadLine());Console、Write("請輸入反光鏡高=");doublev=double、Parse(Console、ReadLine());doubleh=D*Math、Sin(a)+(1-0、13)*D/6371000、0*D/6371000、0*Mat(yī)h、Cos(a)*Math、Cos(a)/2、0+i-v;Console、WriteLine("高差為{0}",h);}//將ddd、mmss轉(zhuǎn)為弧度staticpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Mat(yī)h、Abs(ang));ang=Mat(yī)h、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Math、PI;}}}(2)如圖所示,已知A點得坐標及A點到B點得邊長及方位角,計算B點得坐標。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string{Console、Write("請輸入A點得X坐標=");doubleXA=double、Parse(Console、ReadLine());Console、Write("請輸入A點得Y坐標=");doubleYA=double、Parse(Console、ReadLine());Console、Write("請輸入A到B得方位角[ddd、mmss]=");doublea=DEG(double、Parse(Console、ReadLine()));Console、Write("請輸入A到B得水平距離=");doubleS=double、Parse(Console、ReadLine());doubleXB=XA+S*Math、Cos(a);doubleYB=YA+S*Math、Sin(a);Console、WriteLine("B點得坐標({0},{1})",XB,YB);}//將ddd、mmss轉(zhuǎn)為弧度stat(yī)icpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Math、Abs(ang));ang=Math、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Math、PI;}}}(3)如圖所示,已知A點和B點得坐標,計算A點到得邊長及方位角。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]arg{Console、Write("請輸入A點得X坐標=");doubleXA=double、Parse(Console、ReadLine());Console、Write("請輸入A點得Y坐標=");doubleYA=double、Parse(Console、ReadLine());Console、Write("請輸入B點得X坐標=");doubleXB=double、Parse(Console、ReadLine());Console、Write("請輸入B點得Y坐標=");doubleYB=double、Parse(Console、ReadLine());doubleS=距離(XA,YA,XB,YB);doublea=方位角(XA,YA,XB,YB);Console、WriteLine("AB間得距離={0},從A到B得方位角={1}",S,DMS(a));}//將弧度轉(zhuǎn)為ddd、mmssstaticpublicdoubleDMS(doubleang){ang+=1、0E-15;//加上一個小量,以保證進位intfuhao=(int)(ang/Mat(yī)h、Abs(ang));ang=Math、Abs(ang)*180、0/Math、PI;intd=(int)ang;ang=(ang-d)*60、0;intm=(int)ang;doubles=(ang-m)*60、0;return(d+m/100、0+s/10000、0)*fuhao;}//計算方位角,返回弧度值publicstaticdouble方位角(doublex1,doubley1,doublex2,doubley2){doubledeltaX=x2-x1;doubledeltaY=y(tǒng)2-y1;doubleangle=Math、PI*0、5;if(Math、Abs(deltaX)>0、000000001){angle=Mat(yī)h、Atan2(deltaY,deltaX);}if(angle<0){angle+=Math、PI;}if(deltaY<0、0){angle+=Math、PI;}returnangle;}//計算距離publicstaticdouble距離(doublex1,doubley1,doublex2,doubley2){returnMath、Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));}}}(4)在如圖所示得支中導線,已知A點到M點得坐標方位角及每個左角,求每條邊得坐標方位角。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console、Write("請輸入A點到M點得坐標方位角=");//將A點到M點得坐標方位角換算為M點到A點得坐標方位角,以便利用公式doublea0=DEG(double、Parse(Console、ReadLine())+180、0);if(a0>2*Math、PI){a0-=2*Math、PI;}List<double>導線轉(zhuǎn)角集合=newList<double>();inti=1;do{Console、Write("請輸入第{0}個轉(zhuǎn)角得水平角[左角為正,右角為負]<直接回車結(jié)束輸入>=",i++);stringstr=Console、ReadLine();if(str!=""){導線轉(zhuǎn)角集合、Add(DEG(double、Parse(str)));}else{break;}}while(true);i=1;foreach(doubleain導線轉(zhuǎn)角集合){a0+=a+Math、PI;if(a0>2*Math、PI){a0-=2*Math、PI;}elseif(a0<0、0){a0+=2*Mat(yī)h、PI;}Console、WriteLine("第{0}條邊得方位角為{1}",i++,DMS(a0));}}//將弧度轉(zhuǎn)為ddd、mmssstaticpublicdoubleDMS(doubleang){ang+=1、0E-15;//加上一個小量,以保證進位intfuhao=(int)(ang/Math、Abs(ang));ang=Math、Abs(ang)*180、0/Math、PI;intd=(int)ang;ang=(ang-d)*60、0;intm=(int)ang;doubles=(ang-m)*60、0;return(d+m/100、0+s/10000、0)*fuhao;}//將ddd、mmss轉(zhuǎn)為弧度stat(yī)icpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Math、Abs(ang));ang=Mat(yī)h、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Math、PI;}}}(5)在如圖所示得支中導線,已知A點和M點得坐標及每個左角和每條邊長,求每個點得坐標。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplicat(yī)ion{stat(yī)icvoidMain(string[]args{Console、Write("請輸入M點得x坐標=");doubleMx=double、Parse(Console、ReadLine());Console、Write("請輸入M點得y坐標=");doubleMy=double、Parse(Console、ReadLine());Console、Write("請輸入A點得x坐標=");doubleAx=double、Parse(Console、ReadLine());Console、Write("請輸入A點得y坐標=");doubleAy=double、Parse(Console、ReadLine());List<double>導線轉(zhuǎn)角集合=newList<double>();List<double>導線邊長集合=newList<double>();inti=1;do{Console、Write("請輸入第{0}個轉(zhuǎn)角得水平角[左角為正,右角為負]<直接回車結(jié)束輸入>=",i);stringstr=Console、ReadLine();if(str!=""){導線轉(zhuǎn)角集合、Add(DEG(double、Parse(str)));}else{break;}Console、Write("請輸入第{0}條邊長值=",i++);導線邊長集合、Add(double、Parse(Console、ReadLine()));}while(true);//計算M到A得坐標方位角doublea0=方位角(Mx,My,Ax,Ay);//計算每個點得坐標doublex0=Ax;doubley0=Ay;for(intj=0;j<導線轉(zhuǎn)角集合、Count;j++){a0+=導線轉(zhuǎn)角集合[j]+Mat(yī)h、PI;if(a0>2*Math、PI)a0-=2*Math、PI;x0=x0+導線邊長集合[j]*Math、Cos(a0);y0=y0+導線邊長集合[j]*Math、Sin(a0);Console、WriteLine("P{0}點得坐標就就是:{1},{2}",j+2,x0,y0);}}//將ddd、mmss轉(zhuǎn)為弧度staticpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Math、Abs(ang));ang=Math、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Math、PI;}//計算方位角,返回弧度值publicstat(yī)icdouble方位角(doublex1,doubley1,doublex2,doubley2){doubledeltaX=x2-x1;doubledeltaY=y2-y1;doubleangle=Math、PI*0、5;if(Mat(yī)h、Abs(deltaX)>0、000000001){angle=Math、Atan2(deltaY,deltaX);}if(angle<0){angle+=Math、PI;}if(deltaY<0、0){angle+=Math、PI;}returnangle;}}}(6)在如圖所示得單一附合水準路線中,已知A點和B點得高程及每段得長度和高差,求每個點得高程。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{stat(yī)icvoidMain(string[]a{Console、Write("請輸入A點得高程=");doubleHa=double、Parse(Console、ReadLine());Console、Write("請輸入B點得高程=");doubleHb=double、Parse(Console、ReadLine());List<double>路線段長度集合=newList<double>();List<double>路線段高差集合=newList<double>();inti=1;do{Console、Write("請輸入第{0}段長度[公里為單位]<直接回車結(jié)束輸入>=",i);stringstr=Console、ReadLine();if(str!=""){路線段長度集合、Add(double、Parse(str));}else{break;}Console、Write("請輸入第{0}段高差=",i++);路線段高差集合、Add(double、Parse(Console、ReadLine()));}while(true);//計算水準路線閉合差doublew=0;double總長度=0;for(intj=0;j<路線段長度集合、Count;j++){w+=路線段高差集合[j];總長度+=路線段長度集合[j];}w=w-(Hb-Ha);//閉合差doublev=-w/總長度;//每公里改正數(shù)//計算每個點得高程doubleH=Ha;for(intj=0;j<路線段長度集合、Count;j++){H+=路線段高差集合[j]+v*路線段長度集合[j];Console、WriteLine("P{0}點得高程就就是:{1}",j+1,H);}Console、WriteLine("最后一點就就就是B點!");}}}(7)在如圖所示得前方交會中,ABJ三點按逆時針方向排列,已知AB兩點得坐標和兩個交會角度,求J點得坐標。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console、Write("請輸入A點得x坐標=");doubleAx=double、Parse(Console、ReadLine());Console、Write("請輸入A點得y坐標=");doubleAy=double、Parse(Console、ReadLine());Console、Write("請輸入B點得x坐標=");doubleBx=double、Parse(Console、ReadLine());Console、Write("請輸入B點得y坐標=");doubleBy=double、Parse(Console、ReadLine());Console、Write("請輸入α得角度值=");doubleα=DEG(double、Parse(Console、ReadLine()));Console、Write("請輸入β得角度值=");doubleβ=DEG(double、Parse(Console、ReadLine()));//計算A到B得坐標方位角doublea0=方位角(Ax,Ay,Bx,By);//計算A到J得坐標方位角a0-=α;//計算A到B得邊長doubles=距離(Ax,Ay,Bx,By);//計算A到J得邊長s=s/Mat(yī)h、Sin(Math、PI-α-β)*Math、Sin(β);//計算J得坐標doubleJx=Ax+s*Math、Cos(a0);doubleJy=Ay+s*Mat(yī)h、Sin(a0);Console、WriteLine("J點得坐標={0},{1}",Jx,Jy);}//將ddd、mmss轉(zhuǎn)為弧度staticpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Mat(yī)h、Abs(ang));ang=Mat(yī)h、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Math、PI;}//計算方位角,返回弧度值publicstaticdouble方位角(doublex1,doubley1,doublex2,doubley2){doubledeltaX=x2-x1;doubledeltaY=y(tǒng)2-y1;doubleangle=Mat(yī)h、PI*0、5;if(Math、Abs(deltaX)>0、000000001){angle=Math、Atan2(deltaY,deltaX);}if(angle<0){angle+=Mat(yī)h、PI;}if(deltaY<0、0){angle+=Math、PI;}returnangle;}//計算距離publicstaticdouble距離(doublex1,doubley1,doublex2,doubley2){returnMath、Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));}}}(8)在如圖所示得單個多邊形中,已知每個點得坐標,求多邊形得面積。提示面積得計算公式為:usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplicat(yī)ion{stat(yī)icvoidMain(string[]a{List<double>多邊形X坐標集=newList<double>();List<double>多邊形Y坐標集=newList<double>();inti=1;do{Console、Write("請輸入第{0}點得x坐標<直接回車就結(jié)束輸入>=",i);stringstr=Console、ReadLine();if(str!=""){多邊形X坐標集、Add(double、Parse(str));}else{break;}Console、Write("請輸入第{0}點得y坐標=",i++);多邊形Y坐標集、Add(double、Parse(Console、ReadLine()));}while(true);//計算面積doublearea=0;//點得個數(shù)intCount=多邊形X坐標集、Count;for(intj=0;j<Count-1;j++){area+=多邊形X坐標集[j]*多邊形Y坐標集[j+1]-多邊形X坐標集[j+1]*多邊形Y坐標集[j];}//計算最后一點到起點得項area+=多邊形X坐標集[Count-1]*多邊形Y坐標集[0]-多邊形X坐標集[0]*多邊形Y坐標集[Count-1];Console、WriteLine("多邊形得面積={0}",Math、Abs(area*0、5));}}}(9)在如圖所示得僅有一個連接角得附合導線中,已知A點和B點得高程及每條邊得斜邊、垂直角、儀器高和反光鏡高,求每個點得高程。(提示:,D--斜邊,--垂直角,--儀器高,--反光鏡高,--大氣折光系數(shù))usingSystem;usingSystem、Collections、Generic;usingSystem、Linq;usingSystem、Text;namespace導線{classProgram{staticvoidMain(s{Console、Write("請輸入A點得高程=");doubleHA=double、Parse(Console、ReadLine());Console、Write("請輸入B點得高程=");doubleHB=double、Parse(Console、ReadLine());List<double>高差集合=newList<double>();List<double>水平距離平方集合=newList<double>();inti=1;double高差和=0;double水平距離平方和=0;do{Console、Write("請輸入{0}點到{1}點得斜距D<直接回車結(jié)束輸入>=",i,i+1);stringstr=Console、ReadLine();if(str=="")break;doubleD=double、Parse(str);Console、Write("請輸入{0}點到{1}點得垂直角=",i,i+1);doubleα=導線、DEG(double、Parse(Console、ReadLine()));//并化為弧度Console、Write("請輸入{0}得儀器高=",i);double儀器高=double、Parse(Console、ReadLine());Console、Write("請輸入{0}得反光鏡高=",i+1);double反光鏡高=double、Parse(Console、ReadLine());i++;double水平距離;doubleh=導線、高差(D,α,儀器高,反光鏡高,out水平距離);水平距離平方集合、Add(水平距離*水平距離);高差集合、Add(h);水平距離平方和+=水平距離*水平距離;高差和+=h;}while(true);//計算高差閉合差double高差閉合差=HA+高差和-HB;//計算單位長度改正數(shù),三角高程得權與距離得平方成反比double單位長度改正數(shù)=-高差閉合差/水平距離平方和;//計算每點高程doubleH=HA;for(intj=0;j<高差集合、Count;j++){H+=高差集合[j]+單位長度改正數(shù)*水平距離平方集合[j];Console、WriteLine("第{0}點得高程H={1}",j+2,H);}Console、WriteLine("最后一個點得高程應該與B點得高程相同!");}}class導線{//將ddd、mmss轉(zhuǎn)為弧度staticpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Mat(yī)h、Abs(ang));ang=Math、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Math、PI;}//高差計算,返回高差publicstaticdouble高差(double斜距,double垂直角,double儀器高,double反光鏡高,outdouble水平距離){doubleh=斜距*Math、Sin(垂直角)+斜距*Mat(yī)h、Cos(垂直角)/6371000、0*斜距*Math、Cos(垂直角)*(1-0、13)+儀器高-反光鏡高;水平距離=斜距*Math、Cos(垂直角);returnh;}}}(10)在如圖所示得僅有一個連接角得附合導線中,已知M點、A點和B點得坐標,每個點得左角及每條邊得水平距離,求每個點得坐標。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespace導線{classProgram{staticvoidMain(string[]args){Console、Write("請輸入M點得X坐標=");doubleMX=double、Parse(Console、ReadLine());Console、Write("請輸入M點得Y坐標=");doubleMY=double、Parse(Console、ReadLine());Console、Write("請輸入A點得X坐標=");doubleAX=double、Parse(Console、ReadLine());Console、Write("請輸入A點得Y坐標=");doubleAY=double、Parse(Console、ReadLine());Console、Write("請輸入B點得X坐標=");doubleBX=double、Parse(Console、ReadLine());Console、Write("請輸入B點得Y坐標=");doubleBY=double、Parse(Console、ReadLine());//計算M到A得方位角doubleα0=導線、方位角(MX,MY,AX,AY);List<double>坐標增量X集合=newList<double>();List<double>坐標增量Y集合=newList<double>();inti=1;double坐標增量X和=0;double坐標增量Y和=0;double坐標增量X絕對值和=0;double坐標增量Y絕對值和=0;double水平距離和=0;do{Console、Write("請輸入{0}點到{1}點得水平距離S<直接回車結(jié)束輸入>=",i,i+1);stringstr=Console、ReadLine();if(str=="")break;doubleS=double、Parse(str);Console、Write("請輸入{0}點得水平角<左角為正,右角為負>=",i);doubleβ=導線、DEG(double、Parse(Console、ReadLine()));i++;//計算坐標增量doubledx,dy;α0=導線、坐標(0,0,β,S,α0,outdx,outdy);坐標增量X集合、Add(dx);坐標增量Y集合、Add(dy);坐標增量X和+=dx;;坐標增量Y和+=dy;;坐標增量X絕對值和+=Math、Abs(dx);坐標增量Y絕對值和+=Math、Abs(dy);水平距離和+=S;}while(true);//計算閉合差double閉合差X=AX+坐標增量X和-BX;double閉合差Y=AY+坐標增量Y和-BY;//計算單位長度改正數(shù)doubleX坐標單位長度改正數(shù)=-閉合差X/坐標增量X絕對值和;doubleY坐標單位長度改正數(shù)=-閉合差Y/坐標增量Y絕對值和;//計算導線相對精度intf=(int)(水平距離和/Math、Sqrt(閉合差X*閉合差X+閉合差Y*閉合差Y));Console、WriteLine("導線得相對精度為1/{0}",f);//計算每點坐標doubleX=AX;doubleY=AY;for(intj=0;j<坐標增量X集合、Count;j++){X+=坐標增量X集合[j]+X坐標單位長度改正數(shù)*Math、Abs(坐標增量X集合[j]);Y+=坐標增量Y集合[j]+Y坐標單位長度改正數(shù)*Mat(yī)h、Abs(坐標增量Y集合[j]);Console、WriteLine("第{0}點得X坐標={1},Y坐標={2}",j+2,X,Y);}Console、WriteLine("最后一個點得坐標應該與B點得坐標相同!");}}class導線{//將ddd、mmss轉(zhuǎn)為弧度stat(yī)icpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Math、Abs(ang));ang=Math、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Mat(yī)h、PI;}//計算方位角,返回弧度值publicstaticdouble方位角(doublex1,doubley1,doublex2,doubley2){doubledeltaX=x2-x1;doubledeltaY=y2-y1;doubleangle=Math、PI*0、5;if(Mat(yī)h、Abs(deltaX)>0、000000001){angle=Math、Atan2(deltaY,deltaX);}if(angle<0){angle+=Math、PI;}if(deltaY<0、0){angle+=Mat(yī)h、PI;}returnangle;}//計算坐標,返回已知點到計算點得方位角publicstaticdouble坐標(doublex0,doubley0,double左角,double水平距離,double已知方位角,outdoublex,outdoubley){double方位角=已知方位角+左角+Mat(yī)h、PI;//將方位角調(diào)整到0到2π之間if(方位角>=Math、PI*2)方位角-=Math、PI*2;if(方位角<0、0)方位角+=Math、PI*2;x=x0+水平距離*Math、Cos(方位角);y=y0+水平距離*Mat(yī)h、Sin(方位角);return方位角;}}}(11)在如圖所示得僅有一個連接角得附合導線中,已知M點、A點和B點得坐標,A點和B點得高程,每個點得左角及每條邊得斜邊、垂直角、儀器高和反光鏡高,求每個點得坐標和高程。(提示:,D--斜邊,--垂直角,--儀器高,--反光鏡高,--大氣折光系數(shù))usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespace導線{classProgram{staticvoidMain(string[]a{Console、Write("請輸入M點得X坐標=");doubleMX=double、Parse(Console、ReadLine());Console、Write("請輸入M點得Y坐標=");doubleMY=double、Parse(Console、ReadLine());Console、Write("請輸入A點得X坐標=");doubleAX=double、Parse(Console、ReadLine());Console、Write("請輸入A點得Y坐標=");doubleAY=double、Parse(Console、ReadLine());Console、Write("請輸入A點得高程=");doubleHA=double、Parse(Console、ReadLine());Console、Write("請輸入B點得X坐標=");doubleBX=double、Parse(Console、ReadLine());Console、Write("請輸入B點得Y坐標=");doubleBY=double、Parse(Console、ReadLine());Console、Write("請輸入B點得高程=");doubleHB=double、Parse(Console、ReadLine());//計算M到A得方位角doubleα0=導線、方位角(MX,MY,AX,AY);List<double>坐標增量X集合=newList<double>();List<double>坐標增量Y集合=newList<double>();List<double>高差集合=newList<double>();List<double>水平距離平方集合=newList<double>();inti=1;double坐標增量X和=0;double坐標增量Y和=0;double坐標增量X絕對值和=0;double坐標增量Y絕對值和=0;double水平距離和=0;double高差和=0;double水平距離平方和=0;do{Console、Write("請輸入{0}點到{1}點得斜距D<直接回車結(jié)束輸入>=",i,i+1);stringstr=Console、ReadLine();if(str=="")break;doubleD=double、Parse(str);Console、Write("請輸入{0}點得水平角<左角為正,右角為負>=",i);doubleβ=導線、DEG(double、Parse(Console、ReadLine()));Console、Write("請輸入{0}點到{1}點得垂直角=",i,i+1);doubleα=導線、DEG(double、Parse(Console、ReadLine()));//并化為弧度Console、Write("請輸入{0}得儀器高=",i);double儀器高=double、Parse(Console、ReadLine());Console、Write("請輸入{0}得反光鏡高=",i+1);double反光鏡高=double、Parse(Console、ReadLine());i++;//計算高差double水平距離;doubleh=導線、高差(D,α,儀器高,反光鏡高,out水平距離);水平距離平方集合、Add(水平距離*水平距離);高差集合、Add(h);水平距離平方和+=水平距離*水平距離;高差和+=h;//計算坐標增量doubledx,dy;α0=導線、坐標(0,0,β,水平距離,α0,outdx,outdy);坐標增量X集合、Add(dx);坐標增量Y集合、Add(dy);坐標增量X和+=dx;;坐標增量Y和+=dy;;坐標增量X絕對值和+=Math、Abs(dx);坐標增量Y絕對值和+=Math、Abs(dy);水平距離和+=水平距離;}while(true);//計算高差閉合差double高差閉合差=HA+高差和-HB;//計算單位長度改正數(shù),三角高程得權與距離得平方成反比double單位長度改正數(shù)=-高差閉合差/水平距離平方和;//計算閉合差double閉合差X=AX+坐標增量X和-BX;double閉合差Y=AY+坐標增量Y和-BY;//計算單位長度改正數(shù)doubleX坐標單位長度改正數(shù)=-閉合差X/坐標增量X絕對值和;doubleY坐標單位長度改正數(shù)=-閉合差Y/坐標增量Y絕對值和;//計算導線相對精度intf=(int)(水平距離和/Math、Sqrt(閉合差X*閉合差X+閉合差Y*閉合差Y));Console、WriteLine("導線得相對精度為1/{0}",f);//計算每點坐標doubleX=AX;doubleY=AY;doubleH=HA;for(intj=0;j<坐標增量X集合、Count;j++){H+=高差集合[j]+單位長度改正數(shù)*水平距離平方集合[j];X+=坐標增量X集合[j]+X坐標單位長度改正數(shù)*Math、Abs(坐標增量X集合[j]);Y+=坐標增量Y集合[j]+Y坐標單位長度改正數(shù)*Math、Abs(坐標增量Y集合[j]);Console、WriteLine("第{0}點得X坐標={1},Y坐標={2},高程H={3}",j+2,X,Y,H);}Console、WriteLine("最后一個點得坐標和高程應該與B點得坐標和高程相同!");}}class導線{//將ddd、mmss轉(zhuǎn)為弧度stat(yī)icpublicdoubleDEG(doubleang){intfuhao=(int)(ang/Math、Abs(ang));ang=Mat(yī)h、Abs(ang);intd=(int)ang;intm=((int)(ang*100))-d*100;doubles=ang*10000-m*100-d*10000;return((d+m/60、0+s/3600、0)*fuhao)/180、0*Mat(yī)h、PI;}//計算方位角,返回弧度值publicstaticdouble方位角(doublex1,doubley1,doublex2,doubley2){doubledeltaX=x2-x1;doubledeltaY=y(tǒng)2-y1;doubleangle=Math、PI*0、5;if(Mat(yī)h、Abs(deltaX)>0、000000001){angle=Math、Atan2(deltaY,deltaX);}if(angle<0){angle+=Math、PI;}if(deltaY<0、0){angle+=Math、PI;}returnangle;}//高差計算,返回高差publicstat(yī)icdouble高差(double斜距,double垂直角,double儀器高,double反光鏡高,outdouble水平距離){doubleh=斜距*Math、Sin(垂直角)+斜距*Math、Cos(垂直角)/6371000、0*斜距*Math、Cos(垂直角)*(1-0、13)+儀器高-反光鏡高;水平距離=斜距*Math、Cos(垂直角);returnh;}//計算坐標,返回已知點到計算點得方位角publicstaticdouble坐標(doublex0,doubley0,double左角,double水平距離,double已知方位角,outdoublex,outdoubley){double方位角=已知方位角+左角+Math、PI;//將方位角調(diào)整到0到2π之間if(方位角>=Mat(yī)h、PI*2)方位角-=Math、PI*2;if(方位角<0、0)方位角+=Math、PI*2;x=x0+水平距離*Math、Cos(方位角);y=y0+水平距離*Math、Sin(方位角);return方位角;}}}(12)在如圖所示得具有兩個連接角得附合導線中,已知M點、N點、A點和B點得坐標,A點和B點得高程,每個點得左角及每條邊得斜邊、垂直角、儀器高和反光鏡高,請采用近似平差方法求每個點得坐標和高程。(提示:,D--斜邊,--垂直角,--儀器高,--反光鏡高,--大氣折光系數(shù))usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespace導線{classProgram{staticvoidMain(string[]arg{Console、Write("請輸入M點得X坐標=");doubleMX=double、Parse(Console、

溫馨提示

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

評論

0/150

提交評論