测绘常识:测绘知识常识十:如何做前方交会、侧边交会、后边交会、边角交会
c#在panel上画弧:C# DrawArc(画弧)_Gou_Hailong的博客-CSDN博客
前方交会成果展示:(坐标是老师要求的,所以看起来有点奇怪,学会方法就好了)
主要代码:
写了一个计算前方交会的方法
写程序需要判断角度的大小,正负,因为程序里面没有减去负数相当于加上其正数的转换,所以需要特别注意角度的范围,所以在这基础上公式中加上了变量sign去完成判断正负的功能。
//交会计算方法 private void get_p() { const double PI = Math.PI; //判断A,B,P排列顺序与方位角增加方向,一致sign=1,相反sign=-1 int sign=1; az_ab = Math.Atan((yb - ya) / (xb - xa))* (180 / PI); Dab = Math.Sqrt(Math.Pow(xa - xb, 2.0) + Math.Pow(ya - yb, 2.0)); az_ba = Math.Atan((xa - xb) / (ya - yb ))* (180 / PI); if (az_ab > az_ba) { }//顺时针排列,一致 else if (az_ab < az_ba) { sign = -1; }//逆时针排列,相反 cot_a = 1 / Math.Tan(angle_a * PI / 180); cot_b = 1 / Math.Tan(angle_b * PI / 180); xp = (xa * cot_b + xb * cot_a + sign*(ya - yb)) / (cot_a + cot_b); xp = Math.Round(xp, 3); yp = (ya * cot_b + yb * cot_a + sign*(xb - xa)) / (cot_a + cot_b); yp = Math.Round(yp, 3); }a,b是已知点,p点是待求坐标点
az_ab:指的是a到b的方位角,带方向
Dab是ab之间的距离
angle_a是角a的角度,然后以此类推(这是运用前方交会的公式,见