public Angle GetAngle(UnitsOfAngle units) { var degrees = Math.Abs((Center.GetAzimuth(Origin, UnitsOfAngle.Degree) - Center.GetAzimuth(Terminus, UnitsOfAngle.Degree)).Value); if ((Type == ArcTypes.Minor && degrees > 180) || (Type == ArcTypes.Major && degrees < 180)) { degrees = 360 - degrees; } return(new Angle(degrees, UnitsOfAngle.Degree).ConvertTo(units)); }
public Angle ConvertTo(UnitsOfAngle units) { if (Units == units) { return(this); } switch (Units) { case UnitsOfAngle.Degree: switch (units) { case UnitsOfAngle.Radian: return(new Angle(Value.ToRadians(), units)); case UnitsOfAngle.BinaryDegree: case UnitsOfAngle.ClockPosition: case UnitsOfAngle.CompassPoint: case UnitsOfAngle.Degree: case UnitsOfAngle.Gradian: case UnitsOfAngle.Milliradian: case UnitsOfAngle.MinuteOfArc: case UnitsOfAngle.Quadrant: case UnitsOfAngle.SecondOfArc: case UnitsOfAngle.Sextant: case UnitsOfAngle.Turn: default: throw new NotSupportedException($"{nameof(units)}: {units}"); } case UnitsOfAngle.Radian: switch (units) { case UnitsOfAngle.Degree: return(new Angle(Value.ToDegrees(), units)); case UnitsOfAngle.Radian: case UnitsOfAngle.BinaryDegree: case UnitsOfAngle.ClockPosition: case UnitsOfAngle.CompassPoint: case UnitsOfAngle.Gradian: case UnitsOfAngle.Milliradian: case UnitsOfAngle.MinuteOfArc: case UnitsOfAngle.Quadrant: case UnitsOfAngle.SecondOfArc: case UnitsOfAngle.Sextant: case UnitsOfAngle.Turn: default: throw new NotSupportedException($"{nameof(units)}: {units}"); } case UnitsOfAngle.BinaryDegree: case UnitsOfAngle.ClockPosition: case UnitsOfAngle.CompassPoint: case UnitsOfAngle.Gradian: case UnitsOfAngle.Milliradian: case UnitsOfAngle.MinuteOfArc: case UnitsOfAngle.Quadrant: case UnitsOfAngle.SecondOfArc: case UnitsOfAngle.Sextant: case UnitsOfAngle.Turn: default: throw new NotSupportedException($"{nameof(units)}: {units}"); } }
public Angle(double value, UnitsOfAngle units) { Value = value; Units = units; }