32 lines
1.3 KiB
Plaintext
32 lines
1.3 KiB
Plaintext
ClearAll[NormalizeAngle, NormalizeDegree, NormalizeGradian, NormalizeMil, NormalizeRadian]
|
|
NormalizeAngle[d_, full_] := Module[{a = d},
|
|
If[Abs[a/full] > 4,
|
|
a = a - Sign[a] full (Quotient[Abs[a], full] - 4)
|
|
];
|
|
While[a < -full, a += full];
|
|
While[a > full, a -= full];
|
|
a
|
|
]
|
|
ClearAll[Degree2Gradian, Degree2Mil, Degree2Radian, Gradian2Degree, Gradian2Mil, Gradian2Radian, Mil2Degree, Mil2Gradian, Mil2Radian, Radian2Degree, Radian2Gradian, Radian2Mil]
|
|
NormalizeDegree[d_] := NormalizeAngle[d, 360]
|
|
NormalizeGradian[d_] := NormalizeAngle[d, 400]
|
|
NormalizeMil[d_] := NormalizeAngle[d, 6400]
|
|
NormalizeRadian[d_] := NormalizeAngle[d, 2 Pi]
|
|
Degree2Gradian[d_] := d 400/360
|
|
Degree2Mil[d_] := d 6400/360
|
|
Degree2Radian[d_] := d Pi/180
|
|
Gradian2Degree[d_] := d 360/400
|
|
Gradian2Mil[d_] := d 6400/400
|
|
Gradian2Radian[d_] := d 2 Pi/400
|
|
Mil2Degree[d_] := d 360/6400
|
|
Mil2Gradian[d_] := d 400/6400
|
|
Mil2Radian[d_] := d 2 Pi/6400
|
|
Radian2Degree[d_] := d 180/Pi
|
|
Radian2Gradian[d_] := d 400/(2 Pi)
|
|
Radian2Mil[d_] := d 6400/(2 Pi)
|
|
MapThread[Construct, {{Degree2Gradian, Degree2Mil, Degree2Radian,
|
|
Gradian2Degree, Gradian2Mil, Gradian2Radian, Mil2Degree,
|
|
Mil2Gradian, Mil2Radian, Radian2Degree, Radian2Gradian,
|
|
Radian2Mil}, {-2, -1, 0, 1, 2, 6.2831853, 16, 57.2957795, 359, 399,
|
|
6399, 1000000}}]
|