/// <summary> /// returns the angle in desired mode between 0 and 180 /// </summary> /// <param name="firstPoint"></param> /// <param name="middlePoint"></param> /// <param name="lastPoint"></param> /// <returns></returns> public static double GetAngle(IPoint firstPoint, IPoint middlePoint, IPoint lastPoint, AngleMode mode = AngleMode.Radian) { var radianAngle = Math.Acos(GetCosineOfAngle(firstPoint, middlePoint, lastPoint)); if (mode == AngleMode.Radian) { return(radianAngle); } else if (mode == AngleMode.Degree) { return(UnitConversion.RadianToDegree(radianAngle)); } else if (mode == AngleMode.Grade) { return(UnitConversion.RadianToGrade(radianAngle)); } throw new NotImplementedException("SpatialUtility > GetAngle"); }