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

下載本文檔

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

文檔簡介

1、常用測量程序設(shè)計代碼(1)用全站儀在A點觀測了B點斜邊和垂直角,求A到B的高差。(提示:,D-斜邊,-垂直角,-儀器高,-反光鏡高,-大氣折光系數(shù))using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(請輸入斜邊=); double D = double.Parse(Console.ReadLine(); Console.Write(請輸入

2、垂直角ddd.mmss=); double a = DEG(double.Parse(Console.ReadLine(); Console.Write(請輸入儀器高=); double i = double.Parse(Console.ReadLine(); Console.Write(請輸入反光鏡高=); double v = double.Parse(Console.ReadLine(); double h = D * Math.Sin(a) + (1 - 0.13) * D / 6371000.0 * D / 6371000.0 * Math.Cos(a) * Math.Cos(a)

3、/ 2.0 + i - v; Console.WriteLine(高差為0,h); /將ddd.mmss轉(zhuǎn)為弧度 static public double DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang); int d = (int)ang; int m = (int)(ang * 100) - d * 100; double s = ang * 10000 - m * 100 - d * 10000; return (d + m / 60.0 + s / 3600.0) * fuhao) /

4、180.0 * Math.PI; (2)如圖所示,已知A點的坐標(biāo)及A點到B點的邊長及方位角,計算B點的坐標(biāo)。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(請輸入A點的X坐標(biāo)=); double XA = double.Parse(Console.ReadLine(); Console.Write(請輸入A點的Y坐標(biāo)=); doubl

5、e YA = double.Parse(Console.ReadLine(); Console.Write(請輸入A到B的方位角ddd.mmss=); double a = DEG(double.Parse(Console.ReadLine(); Console.Write(請輸入A到B的水平距離=); double S = double.Parse(Console.ReadLine(); double XB = XA + S*Math.Cos(a); double YB = YA + S*Math.Sin(a); Console.WriteLine(B點的坐標(biāo)(0,1),XB,YB); /將

6、ddd.mmss轉(zhuǎn)為弧度 static public double DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang); int d = (int)ang; int m = (int)(ang * 100) - d * 100; double s = ang * 10000 - m * 100 - d * 10000; return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; (3)如圖所示,已知A點和B點的坐標(biāo),計算A點到的邊長

7、及方位角。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(請輸入A點的X坐標(biāo)=); double XA = double.Parse(Console.ReadLine(); Console.Write(請輸入A點的Y坐標(biāo)=); double YA = double.Parse(Console.ReadLine(); Console.W

8、rite(請輸入B點的X坐標(biāo)=); double XB = double.Parse(Console.ReadLine(); Console.Write(請輸入B點的Y坐標(biāo)=); double YB = double.Parse(Console.ReadLine(); double S = 距離(XA, YA, XB, YB); double a = 方位角(XA, YA, XB, YB); Console.WriteLine(AB間的距離=0,從A到B的方位角=1,S,DMS(a); /將弧度轉(zhuǎn)為ddd.mmss static public double DMS(double ang) an

9、g += 1.0E-15;/加上一個小量,以保證進(jìn)位 int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang) * 180.0 / Math.PI; int d = (int)ang; ang = (ang - d) * 60.0; int m = (int)ang; double s = (ang - m) * 60.0; return (d + m / 100.0 + s / 10000.0) * fuhao; /計算方位角,返回弧度值 public static double 方位角(double x1, double y1,

10、double x2, double y2) double deltaX = x2 - x1; double deltaY = y2 - y1; double angle = Math.PI * 0.5; if (Math.Abs(deltaX) 0.000000001) angle = Math.Atan2(deltaY, deltaX); if (angle 0) angle += Math.PI; if (deltaY 2 * Math.PI) a0 -= 2 * Math.PI; List 導(dǎo)線轉(zhuǎn)角集合 = new List(); int i = 1; do Console.Write(

11、請輸入第0個轉(zhuǎn)角的水平角左角為正,右角為負(fù) =,i+); string str = Console.ReadLine(); if (str != ) 導(dǎo)線轉(zhuǎn)角集合.Add(DEG(double.Parse(str); else break; while (true); i = 1; foreach (double a in 導(dǎo)線轉(zhuǎn)角集合) a0 += a + Math.PI; if (a0 2 * Math.PI) a0 -= 2 * Math.PI; else if (a0 0.0) a0 += 2 * Math.PI; Console.WriteLine(第0條邊的方位角為1,i+,DMS

12、(a0); /將弧度轉(zhuǎn)為ddd.mmss static public double DMS(double ang) ang += 1.0E-15;/加上一個小量,以保證進(jìn)位 int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang) * 180.0 / Math.PI; int d = (int)ang; ang = (ang - d) * 60.0; int m = (int)ang; double s = (ang - m) * 60.0; return (d + m / 100.0 + s / 10000.0) * fuhao;

13、/將ddd.mmss轉(zhuǎn)為弧度 static public double DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang); int d = (int)ang; int m = (int)(ang * 100) - d * 100; double s = ang * 10000 - m * 100 - d * 10000; return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; (5)在如圖所示的支中導(dǎo)線,已知A點和M點的坐標(biāo)及

14、每個左角和每條邊長,求每個點的坐標(biāo)。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(請輸入M點的x坐標(biāo)=); double Mx = double.Parse(Console.ReadLine(); Console.Write(請輸入M點的y坐標(biāo)=); double My = double.Parse(Console.ReadLine

15、(); Console.Write(請輸入A點的x坐標(biāo)=); double Ax = double.Parse(Console.ReadLine(); Console.Write(請輸入A點的y坐標(biāo)=); double Ay = double.Parse(Console.ReadLine(); List 導(dǎo)線轉(zhuǎn)角集合 = new List(); List 導(dǎo)線邊長集合 = new List(); int i = 1; do Console.Write(請輸入第0個轉(zhuǎn)角的水平角左角為正,右角為負(fù)=,i); string str = Console.ReadLine(); if (str != )

16、 導(dǎo)線轉(zhuǎn)角集合.Add(DEG(double.Parse(str); else break; Console.Write(請輸入第0條邊長值=, i+); 導(dǎo)線邊長集合.Add( double.Parse(Console.ReadLine(); while (true); /計算M到A的坐標(biāo)方位角 double a0 = 方位角(Mx, My, Ax, Ay); /計算每個點的坐標(biāo) double x0 = Ax; double y0 = Ay; for (int j = 0; j 2 * Math.PI) a0 -= 2 * Math.PI; x0 = x0 + 導(dǎo)線邊長集合j * Math.

17、Cos(a0); y0 = y0 + 導(dǎo)線邊長集合j * Math.Sin(a0); Console.WriteLine(P0點的坐標(biāo)是:1,2,j+2,x0,y0); /將ddd.mmss轉(zhuǎn)為弧度 static public double DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang); int d = (int)ang; int m = (int)(ang * 100) - d * 100; double s = ang * 10000 - m * 100 - d * 10000; ret

18、urn (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; /計算方位角,返回弧度值 public static double 方位角(double x1, double y1, double x2, double y2) double deltaX = x2 - x1; double deltaY = y2 - y1; double angle = Math.PI * 0.5; if (Math.Abs(deltaX) 0.000000001) angle = Math.Atan2(deltaY, deltaX); if (angl

19、e 0) angle += Math.PI; if (deltaY 0.0) angle += Math.PI; return angle; (6)在如圖所示的單一附合水準(zhǔn)路線中,已知A點和B點的高程及每段的長度和高差,求每個點的高程。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(請輸入A點的高程=); double Ha = do

20、uble.Parse(Console.ReadLine(); Console.Write(請輸入B點的高程=); double Hb = double.Parse(Console.ReadLine(); List 路線段長度集合 = new List(); List 路線段高差集合 = new List(); int i = 1; do Console.Write(請輸入第0段長度公里為單位=,i); string str = Console.ReadLine(); if (str != ) 路線段長度集合.Add(double.Parse(str); else break; Console.

21、Write(請輸入第0段高差=, i+); 路線段高差集合.Add(double.Parse(Console.ReadLine(); while (true); /計算水準(zhǔn)路線閉合差 double w = 0; double 總長度 = 0; for (int j = 0; j 路線段長度集合.Count; j+) w += 路線段高差集合j; 總長度 += 路線段長度集合j; w = w - (Hb - Ha); /閉合差 double v = -w / 總長度; /每公里改正數(shù) /計算每個點的高程 double H = Ha; for (int j = 0; j 0.000000001)

22、angle = Math.Atan2(deltaY, deltaX); if (angle 0) angle += Math.PI; if (deltaY 0.0) angle += Math.PI; return angle; /計算距離 public static double 距離(double x1, double y1, double x2, double y2) return Math.Sqrt(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); (8)在如圖所示的單個多邊形中,已知每個點的坐標(biāo),求多邊形的面積。提示面積的計算公式為:usin

23、g System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) List 多邊形X坐標(biāo)集 = new List(); List 多邊形Y坐標(biāo)集 = new List(); int i = 1; do Console.Write(請輸入第0點的x坐標(biāo)=,i); string str = Console.ReadLine(); if (str != ) 多邊形X坐標(biāo)集.Add(double

24、.Parse(str); else break; Console.Write(請輸入第0點的y坐標(biāo)=,i+); 多邊形Y坐標(biāo)集.Add( double.Parse(Console.ReadLine(); while (true); /計算面積 double area = 0; /點的個數(shù) int Count = 多邊形X坐標(biāo)集.Count; for (int j = 0; j Count-1; j+) area += 多邊形X坐標(biāo)集j * 多邊形Y坐標(biāo)集j + 1 - 多邊形X坐標(biāo)集j + 1 * 多邊形Y坐標(biāo)集j; /計算最后一點到起點的項 area += 多邊形X坐標(biāo)集Count - 1

25、* 多邊形Y坐標(biāo)集0 - 多邊形X坐標(biāo)集0 * 多邊形Y坐標(biāo)集Count - 1; Console.WriteLine(多邊形的面積=0,Math.Abs(area * 0.5); (9)在如圖所示的僅有一個連接角的附合導(dǎo)線中,已知A點和B點的高程及每條邊的斜邊、垂直角、儀器高和反光鏡高,求每個點的高程。(提示:,D-斜邊,-垂直角,-儀器高,-反光鏡高,-大氣折光系數(shù))using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 導(dǎo)線 class Program stat

26、ic void Main(string args) Console.Write(請輸入A點的高程=); double HA = double.Parse(Console.ReadLine(); Console.Write(請輸入B點的高程=); double HB = double.Parse(Console.ReadLine(); List 高差集合 = new List(); List 水平距離平方集合 = new List(); int i = 1; double 高差和 = 0; double 水平距離平方和 = 0; do Console.Write(請輸入0點到1點的斜距D=,i,

27、i+1); string str = Console.ReadLine(); if (str = ) break; double D = double.Parse(str); Console.Write(請輸入0點到1點的垂直角=, 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 反光鏡

28、高 = double.Parse(Console.ReadLine(); i+; double 水平距離; double h = 導(dǎo)線.高差(D, , 儀器高, 反光鏡高, out 水平距離); 水平距離平方集合.Add(水平距離 * 水平距離); 高差集合.Add(h); 水平距離平方和 += 水平距離 * 水平距離; 高差和 += h; while (true); /計算高差閉合差 double 高差閉合差 = HA + 高差和 - HB; /計算單位長度改正數(shù),三角高程的權(quán)與距離的平方成反比 double 單位長度改正數(shù) = -高差閉合差 / 水平距離平方和; /計算每點高程 doubl

29、e H = HA; for (int j = 0; j 高差集合.Count; j+) H += 高差集合j + 單位長度改正數(shù) * 水平距離平方集合j; Console.WriteLine(第0點的高程H=1,j+2,H); Console.WriteLine(最后一個點的高程應(yīng)該與B點的高程相同!); class 導(dǎo)線 /將ddd.mmss轉(zhuǎn)為弧度 static public double DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang); int d = (int)ang; int m =

30、 (int)(ang * 100) - d * 100; double s = ang * 10000 - m * 100 - d * 10000; return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; /高差計算,返回高差 public static double 高差(double 斜距,double 垂直角,double 儀器高,double 反光鏡高,out double 水平距離) double h = 斜距 * Math.Sin(垂直角) + 斜距 * Math.Cos(垂直角) / 6371000.0 * 斜距 * Math.Cos(垂直角) * (1 - 0.13) + 儀器高 - 反光鏡高; 水平距離 = 斜距*Math.Cos(垂直角); return h; (10)在如圖所示的僅有一個連接角的附合導(dǎo)線中,已知M點、A點和B點的坐標(biāo),每個點的左角及每條邊的水平距離,求每個點的坐標(biāo)。using System;using System.Collections.Generic;using System.Text;namespace 導(dǎo)線 class Program static void Main(string args) Console.Write(請輸入M點的X坐標(biāo)=);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論