RosettaCodeData/Task/Angles-geometric-normalization-and-conversion/Pluto/angles-geometric-normalization-and-conversion.pluto
2026-04-30 12:34:36 -04:00

42 lines
1.5 KiB
Text

local fmt = require "fmt"
local d2d = |d| -> math.fmod(d, 360)
local g2g = |g| -> math.fmod(g, 400)
local m2m = |m| -> math.fmod(m, 6400)
local r2r = |r| -> math.fmod(r, 2 * math.pi)
local d2g = |d| -> d2d(d) * 400 / 360
local d2m = |d| -> d2d(d) * 6400 / 360
local d2r = |d| -> d2d(d) * math.pi / 180
local g2d = |g| -> g2g(g) * 360 / 400
local g2m = |g| -> g2g(g) * 6400 / 400
local g2r = |g| -> g2g(g) * math.pi / 200
local m2d = |m| -> m2m(m) * 360 / 6400
local m2g = |m| -> m2m(m) * 400 / 6400
local m2r = |m| -> m2m(m) * math.pi / 3200
local r2d = |r| -> r2r(r) * 180 / math.pi
local r2g = |r| -> r2r(r) * 200 / math.pi
local r2m = |r| -> r2r(r) * 3200 / math.pi
local c = |s| -> fmt.center(s, 15)
local f1 = "%15s %15s %15s %15s %15s"
local f2 = "%15.7f %15.7f %15.7f %15.7f %15.7f"
local angles = {-2, -1, 0, 1, 2, 6.2831853, 16, 57.2957795, 359, 399, 6399, 1000000}
fmt.print(f1, c("degrees"), c("normalized degs"), c("gradians"), c("mils"), c("radians"))
for angles as a do
fmt.print(f2, a, d2d(a), d2g(a), d2m(a), d2r(a))
end
f1 = "\n" .. f1
fmt.print(f1, c("gradians"), c("normalized grds"), c("degrees"), c("mils"), c("radians"))
for angles as a do
fmt.print(f2, a, g2g(a), g2d(a), g2m(a), g2r(a))
end
fmt.print(f1, c("mils"), c("normalized mils"), c("degrees"), c("gradians"), c("radians"))
for angles as a do
fmt.print(f2, a, m2m(a), m2d(a), m2g(a), m2r(a))
end
fmt.print(f1, c("radians"), c("normalized rads"), c("degrees"), c("gradians"), c("mils"))
for angles as a do
fmt.print(f2, a, r2r(a), r2d(a), r2g(a), r2m(a))
end