示例#1
0
        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));
        }
示例#2
0
        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}");
            }
        }
示例#3
0
 public Angle(double value, UnitsOfAngle units)
 {
     Value = value;
     Units = units;
 }