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

Added Wren
(Added Wren)
Line 2,368:
("1000000.0000", "1600.0000", "Mils", "90.0000", "100.0000", "1600.0000", "1.5708")
("1000000.0000", "5.9256", "Radians", "339.5132", "377.2368", "6035.7895", "5.9256")</pre>
 
=={{header|Wren}}==
{{trans|Go}}
{{libheader|Wren-fmt}}
<lang ecmascript>import "/fmt" for Fmt
 
var d2d = Fn.new { |d| d % 360 }
var g2g = Fn.new { |g| g % 400 }
var m2m = Fn.new { |m| m % 6400 }
var r2r = Fn.new { |r| r % (2*Num.pi) }
var d2g = Fn.new { |d| d2d.call(d) * 400 / 360 }
var d2m = Fn.new { |d| d2d.call(d) * 6400 / 360 }
var d2r = Fn.new { |d| d2d.call(d) * Num.pi / 180 }
var g2d = Fn.new { |g| g2g.call(g) * 360 / 400 }
var g2m = Fn.new { |g| g2g.call(g) * 6400 / 400 }
var g2r = Fn.new { |g| g2g.call(g) * Num.pi / 200 }
var m2d = Fn.new { |m| m2m.call(m) * 360 / 6400 }
var m2g = Fn.new { |m| m2m.call(m) * 400 / 6400 }
var m2r = Fn.new { |m| m2m.call(m) * Num.pi / 3200 }
var r2d = Fn.new { |r| r2r.call(r) * 180 / Num.pi }
var r2g = Fn.new { |r| r2r.call(r) * 200 / Num.pi }
var r2m = Fn.new { |r| r2r.call(r) * 3200 / Num.pi }
 
// Aligns number to decimal point assuming 7 characters before and after.
var s = Fn.new { |f| Fmt.g(15, f, 7) }
 
var f1 = "$15m $15m $15m $15m $15m"
var f2 = "$s $s $s $s $s"
var angles = [-2, -1, 0, 1, 2, 6.2831853, 16, 57.2957795, 359, 399, 6399, 1000000]
Fmt.print(f1, "degrees", "normalized degs", "gradians", "mils", "radians")
for (a in angles) {
Fmt.print(f2, s.call(a), s.call(d2d.call(a)), s.call(d2g.call(a)), s.call(d2m.call(a)), s.call(d2r.call(a)))
}
f1 = "\n" + f1
Fmt.print(f1, "gradians", "normalized grds", "degrees", "mils", "radians")
for (a in angles) {
Fmt.print(f2, s.call(a), s.call(g2g.call(a)), s.call(g2d.call(a)), s.call(g2m.call(a)), s.call(g2r.call(a)))
}
Fmt.print(f1, "mils", "normalized mils", "degrees", "gradians", "radians")
for (a in angles) {
Fmt.print(f2, s.call(a), s.call(m2m.call(a)), s.call(m2d.call(a)), s.call(m2g.call(a)), s.call(m2r.call(a)))
}
Fmt.print(f1, "radians", "normalized rads", "degrees", "gradians", "mils")
for (a in angles) {
Fmt.print(f2, s.call(a), s.call(r2r.call(a)), s.call(r2d.call(a)), s.call(r2g.call(a)), s.call(r2m.call(a)))
}</lang>
 
{{out}}
<pre>
degrees normalized degs gradians mils radians
-2.0 -2.0 -2.2222222 -35.5555556 -0.0349066
-1.0 -1.0 -1.1111111 -17.7777778 -0.0174533
0.0 0.0 0.0 0.0 0.0
1.0 1.0 1.1111111 17.7777778 0.0174533
2.0 2.0 2.2222222 35.5555556 0.0349066
6.2831853 6.2831853 6.981317 111.701072 0.1096623
16.0 16.0 17.7777778 284.4444444 0.2792527
57.2957795 57.2957795 63.6619772 1018.5916356 1.0
359.0 359.0 398.8888889 6382.2222222 6.265732
399.0 39.0 43.3333333 693.3333333 0.6806784
6399.0 279.0 310.0 4960.0 4.8694686
1000000.0 280.0 311.1111111 4977.7777778 4.8869219
 
gradians normalized grds degrees mils radians
-2.0 -2.0 -1.8 -32.0 -0.0314159
-1.0 -1.0 -0.9 -16.0 -0.015708
0.0 0.0 0.0 0.0 0.0
1.0 1.0 0.9 16.0 0.015708
2.0 2.0 1.8 32.0 0.0314159
6.2831853 6.2831853 5.6548668 100.5309648 0.098696
16.0 16.0 14.4 256.0 0.2513274
57.2957795 57.2957795 51.5662016 916.732472 0.9
359.0 359.0 323.1 5744.0 5.6391588
399.0 399.0 359.1 6384.0 6.2674773
6399.0 399.0 359.1 6384.0 6.2674773
1000000.0 0.0 0.0 0.0 0.0
 
mils normalized mils degrees gradians radians
-2.0 -2.0 -0.1125 -0.125 -0.0019635
-1.0 -1.0 -0.05625 -0.0625 -0.0009817
0.0 0.0 0.0 0.0 0.0
1.0 1.0 0.05625 0.0625 0.0009817
2.0 2.0 0.1125 0.125 0.0019635
6.2831853 6.2831853 0.3534292 0.3926991 0.0061685
16.0 16.0 0.9 1.0 0.015708
57.2957795 57.2957795 3.2228876 3.5809862 0.05625
359.0 359.0 20.19375 22.4375 0.3524474
399.0 399.0 22.44375 24.9375 0.3917173
6399.0 6399.0 359.94375 399.9375 6.2822036
1000000.0 1600.0 90.0 100.0 1.5707963
 
radians normalized rads degrees gradians mils
-2.0 -2.0 -114.591559 -127.3239545 -2037.1832716
-1.0 -1.0 -57.2957795 -63.6619772 -1018.5916358
0.0 0.0 0.0 0.0 0.0
1.0 1.0 57.2957795 63.6619772 1018.5916358
2.0 2.0 114.591559 127.3239545 2037.1832716
6.2831853 6.2831853 359.9999996 399.9999995 6399.9999927
16.0 3.4336294 196.7324722 218.5916358 3497.4661726
57.2957795 0.7471117 42.8063493 47.5626103 761.0017647
359.0 0.8584375 49.1848452 54.649828 874.3972479
399.0 3.1593256 181.0160257 201.1289175 3218.0626795
6399.0 2.7173573 155.6931042 172.992338 2767.8774082
1000000.0 5.9256211 339.5130823 377.2367581 6035.7881302
</pre>
 
=={{header|zkl}}==
9,476

edits