Angles (geometric), normalization and conversion: Difference between revisions

Added Common Lisp
(Added Common Lisp)
Line 402:
1000000 1600 Mils 90 100 1600 1.5708
1000000 5.9256 Radians 339.5132 377.2368 6035.7895 5.9256</pre>
 
=={{header|Common Lisp}}==
Usage: (angles <i>angle(s)</i>)
or (angles) for auto-test.
VAL* is unnormalized.
<lang lisp>(defun DegToDeg (a) (rem a 360))
(defun GradToGrad (a) (rem a 400))
(defun MilToMil (a) (rem a 6400))
(defun RadToRad (a) (rem a (* 2 pi)))
 
(defun DegToGrad (a) (GradToGrad (* (/ a 360) 400)))
(defun DegToRad (a) (RadToRad (* (/ a 360) (* 2 pi))))
(defun DegToMil (a) (MilToMil (* (/ a 360) 6400)))
 
(defun GradToDeg (a) (DegToDeg (* (/ a 400) 360)))
(defun GradToRad (a) (RadToRad (* (/ a 400) (* 2 pi))))
(defun GradToMil (a) (MilToMil (* (/ a 400) 6400)))
 
(defun MilToDeg (a) (DegToDeg (* (/ a 6400) 360)))
(defun MilToGrad (a) (GradToGrad (* (/ a 6400) 400)))
(defun MilToRad (a) (RadToRad (* (/ a 6400) (* 2 pi))))
 
(defun RadToDeg (a) (DegToDeg (* (/ a (* 2 pi)) 360)))
(defun RadToGrad (a) (GradToGrad (* (/ a (* 2 pi)) 400)))
(defun RadToMil (a) (MilToMil (* (/ a (* 2 pi)) 6400)))
 
(defun angles (&rest angles)
(if (not angles) (setf angles '(-2 -1 0 1 2 6.2831853 16 57.2957795 359 399 6399 1000000)))
(dolist (a angles)
(format t "UNIT ~15@a ~15@a ~15@a ~15@a ~15@a~%" "VAL*" "DEG" "GRAD" "MIL" "RAD")
(format t "Deg | ~15f | ~15f | ~15f | ~15f | ~15f~%" a (DegToDeg a) (DegToGrad a) (DegToMil a) (DegToRad a))
(format t "Grad | ~15f | ~15f | ~15f | ~15f | ~15f~%" a (GradToDeg a) (GradToGrad a) (GradToMil a) (GradToRad a))
(format t "Mil | ~15f | ~15f | ~15f | ~15f | ~15f~%" a (MilToDeg a) (MilToGrad a) (MilToMil a) (MilToRad a))
(format t "Rad | ~15f | ~15f | ~15f | ~15f | ~15f~%~%" a (RadToDeg a) (RadToGrad a) (RadToMil a) (RadToRad a))))</lang>
{{out}}
<pre>[CLISP]> (angles)
UNIT VAL* DEG GRAD MIL RAD
Deg | -2.0 | -2.0 | -2.2222223 | -35.555557 | -.0349065850399
Grad | -2.0 | -1.8 | -2.0 | -32.0 | -.0314159265359
Mil | -2.0 | -0.1125 | -0.125 | -2.0 | -.0019634954085
Rad | -2.0 | -114.5915590262 | -127.3239544735 | -2037.183271576 | -2.0
 
UNIT VAL* DEG GRAD MIL RAD
Deg | -1.0 | -1.0 | -1.1111112 | -17.777779 | -.0174532925199
Grad | -1.0 | -0.9 | -1.0 | -16.0 | -.0157079632679
Mil | -1.0 | -0.05625 | -0.0625 | -1.0 | -.0009817477042
Rad | -1.0 | -57.29577951308 | -63.66197723676 | -1018.591635788 | -1.0
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 0.0 | 0.0 | 0.0 | 0.0 | 0.0
Grad | 0.0 | 0.0 | 0.0 | 0.0 | 0.0
Mil | 0.0 | 0.0 | 0.0 | 0.0 | 0.0
Rad | 0.0 | 0.0 | 0.0 | 0.0 | 0.0
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 1.0 | 1.0 | 1.1111112 | 17.777779 | .01745329251994
Grad | 1.0 | 0.9 | 1.0 | 16.0 | .01570796326795
Mil | 1.0 | 0.05625 | 0.0625 | 1.0 | .00098174770425
Rad | 1.0 | 57.295779513082 | 63.661977236758 | 1018.5916357881 | 1.0
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 2.0 | 2.0 | 2.2222223 | 35.555557 | .03490658503989
Grad | 2.0 | 1.8 | 2.0 | 32.0 | 0.0314159265359
Mil | 2.0 | 0.1125 | 0.125 | 2.0 | .00196349540849
Rad | 2.0 | 114.59155902616 | 127.32395447352 | 2037.1832715763 | 2.0
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 6.2831855 | 6.2831855 | 6.981317 | 111.70107 | 0.10966227
Grad | 6.2831855 | 5.654867 | 6.2831855 | 100.53097 | 0.098696046
Mil | 6.2831855 | 0.3534292 | 0.3926991 | 6.2831855 | 0.006168503
Rad | 6.2831855 | 0.0 | 0.0 | 0.0 | 0.0
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 16.0 | 16.0 | 17.777779 | 284.44446 | .27925268031909
Grad | 16.0 | 14.4 | 16.0 | 256.0 | .25132741228718
Mil | 16.0 | 0.9 | 1.0 | 16.0 | .01570796326795
Rad | 16.0 | 196.73247220932 | 218.59163578813 | 3497.4661726101 | 3.4336293856408
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 57.29578 | 57.295784 | 63.66198 | 1018.5917 | 0.99999994
Grad | 57.29578 | 51.566204 | 57.29578 | 916.7325 | 0.90000004
Mil | 57.29578 | 3.2228878 | 3.5809863 | 57.29578 | 0.056250002
Rad | 57.29578 | 42.80651 | 47.56279 | 761.00464 | 0.74711454
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 359.0 | 359.0 | 398.8889 | 6382.222 | 6.2657320146596
Grad | 359.0 | 323.1 | 359.0 | 5744.0 | 5.6391588131937
Mil | 359.0 | 20.19375 | 22.4375 | 359.0 | 0.3524474258246
Rad | 359.0 | 49.184845196553 | 54.64982799617 | 874.39724793872 | .85843749076357
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 399.0 | 39.0 | 43.333332 | 693.3333 | .68067840827779
Grad | 399.0 | 359.1 | 399.0 | 6384.0 | 6.2674773439116
Mil | 399.0 | 22.44375 | 24.9375 | 399.0 | .39171733399448
Rad | 399.0 | 181.01602571985 | 201.1289174665 | 3218.0626794639 | 3.1593256476861
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 6399.0 | 279.0 | 310.0 | 4960.0 | 4.8694686130642
Grad | 6399.0 | 359.1 | 399.0 | 6384.0 | 6.2674773439116
Mil | 6399.0 | 359.94376 | 399.9375 | 6399.0 | 6.2822035594753
Rad | 6399.0 | 155.69310421377 | 172.9923380153 | 2767.8774082448 | 2.717357291181
 
UNIT VAL* DEG GRAD MIL RAD
Deg | 1000000.0 | 280.0 | 311.1111 | 4977.778 | 4.8869219055841
Grad | 1000000.0 | 0.0 | 0.0 | 0.0 | 0.0
Mil | 1000000.0 | 90.0 | 100.0 | 1600.0 | 1.5707963267949
Rad | 1000000.0 | 339.51308232088 | 377.23675813431 | 6035.7881301489 | 5.9256211400939</pre>
 
=={{header|Factor}}==
9

edits