コード例 #1
0
ファイル: Angle.cs プロジェクト: kubaszostak/KSz.Shared
        public string ToString(AngleUnits units, string precision, DegreesFormat degFormat)
        {
            switch (units)
            {
                case AngleUnits.Radians:
                    return this.AsRad.ToString(precision);

                case AngleUnits.Grads:
                    return this.AsGrad.ToString(precision);

                case AngleUnits.Degrees:
                    return ToDegreesString(degFormat, precision);
            }
            return this.Value.ToString(precision);
        }
コード例 #2
0
ファイル: Angle.cs プロジェクト: kubaszostak/KSz.Shared
        public string ToDegreesString(DegreesFormat degFormat, string precision)
        {
            if (double.IsNaN(AsRad))
                return "NaN°";
            if (degFormat == DegreesFormat.Deg)
            {
                return this.AsDeg.ToString(precision) + "°";
            }

            // 0.000 -> 00.000
            if (precision == "0")
                precision = "00";
            else
                precision = precision.Replace("0.", "00.");

            double deg = 0.0;
            double min = 0.0;
            double sec = 0.0;

            // 52.9233222
            double angle = this.AsDeg;

            deg = Math.Floor(angle);

            angle = (angle - deg) * 60.0;
            min = angle;
            if (degFormat == DegreesFormat.DegMin)
            {
                // 52°59.9999 może wyświetlić jako 52°60.0 zamiast 53°00.0 dlatego
                if (min.ToString(precision) == 60.ToString(precision))
                {
                    min = 0;
                    deg = deg + 1;
                }
                return deg.ToString("0") + "°" + min.ToString(precision) + "'";
            }
            min = Math.Floor(angle);


            angle = (angle - min) * 60.0;
            sec = angle;

            // dla kąta 52°09'59.999" może wyświetlić 52°09'60" zamiast 52°10'00" dlatego
            if (sec.ToString(precision) == 60.ToString(precision))
            {
                sec = 0;
                min = min + 1.0;
            }
            if (min.ToString("00") == 60.ToString("00"))
            {
                min = 0.0;
                deg = deg + 1;
            }

            return deg.ToString("0") + "°" + min.ToString("00") + "'" + sec.ToString(precision) + @"""";
        }
コード例 #3
0
 public void LoadFromDefaults()
 {
     this._degreesFormat = DegreesCoordinate.DefaultDegreesFormat;
     this._degreesPrecision = DegreesCoordinate.DefaultPrecision;
     this._XYPrecision = XYCoordinate.DefaultPrecision;
     this._coordinateSystem = CoordinateSystem.Default;
 }