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

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論