/// <summary> /// 计算夹角 /// </summary> /// <param name="P_pre"></param> /// <param name="P_pos"></param> /// <param name="direction"></param> /// <returns></returns> public static Angle Get_IncludedAngle(Angle P_pre, Angle P_pos, Methods.Direction direction) { Angle a = new Angle(180, 0, 0); Angle b = new Angle(360, 0, 0); if (direction == Methods.Direction.left) { return((P_pos - P_pre + a + b) % b); } else { return((P_pre - P_pos + a + b) % b); } }
/// <summary> /// 计算方位角 /// </summary> /// <param name="PAngle0">已知方位角</param> /// <param name="ObservedAngle">观测角</param> /// <param name="direction">角方向</param> /// <returns></returns> public static Angle GetPangle(Angle PAngle0, Angle ObservedAngle, Methods.Direction direction) { Angle PAngle, a0 = new Angle(180, 0, 0), b0 = new Angle(360, 0, 0); if (direction == Methods.Direction.left) { PAngle = (PAngle0 + ObservedAngle - a0 + b0) % b0; } else { PAngle = (PAngle0 - ObservedAngle + a0 + b0) % b0; } return(PAngle); }
public void TestRowMinSortDesc2() { var array = new int[, ] { { 0, 2 }, { 3, 1 } }; var expected = new int[, ] { { 3, 1 }, { 0, 2 } }; var dir = new Methods.Direction((x, y) => x < y); Methods.Sort(array, Methods.GetRowMin, dir); Test(array, expected); }
public void TestRowMaxSortAsc1() { var array = new int[, ] { { 1, 2 }, { 3, 1 } }; var expected = new int[, ] { { 1, 2 }, { 3, 1 } }; var dir = new Methods.Direction((x, y) => x > y); Methods.Sort(array, Methods.GetRowMax, dir); Test(array, expected); }