1 /// <summary> 2 /// 计算方位角,从某点的指北方向线起,依顺时针方向到目标方向线之间的水平夹角。 3 /// </summary> 4 /// <param name="gcdStart"></param> 5 /// <param name="gcdEnd"></param> 6 /// <returns></returns> 7 public const double PI = 3.1415926;//定义常量PI 8 public string CalDmFWJ(GCD gcdStart, GCD gcdEnd) 9 { 10 double dmfwj = 0.0;//断面方位角 11 double dx = gcdEnd.GcdY - gcdStart.GcdY; 12 double dy = gcdEnd.GcdX - gcdStart.GcdX; 13 double jiao = 0; 14 jiao = Math.Abs((gcdEnd.GcdY - gcdStart.GcdY) / (gcdEnd.GcdX - gcdStart.GcdX)); 15 //四个象限,四种不同的情况 16 if (dx >= 0 && dy >= 0) 17 { 18 dmfwj = Math.Atan(jiao); 19 } 20 if (dx < 0 && dy > 0) 21 { 22 dmfwj = 2 * PI - Math.Atan(jiao); 23 24 } 25 if (dx <= 0 && dy <= 0) 26 { 27 dmfwj = Math.Atan(jiao) + PI; 28 29 } 30 if (dx > 0 && dy < 0) 31 { 32 dmfwj = PI - Math.Atan(jiao); 33 } 34 dmfwj = dmfwj / PI * 180;//弧度转角度 35 //转换为度 分 秒 36 return Math.Floor(((dmfwj - Math.Floor(dmfwj)) * 60 - Math.Floor((dmfwj - Math.Floor(dmfwj)) * 60)) * 60).ToString(); 37 }