Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- math.tau = 2 * math.pi
- function math.degree(v)
- return 360 * v / math.tau
- end
- function math.radian(v)
- return math.tau * v / 360
- end
- function math.round(num, prec)
- local mult = 10^(prec or 0)
- return ((num * mult + 0.5) / mult):floor()
- end
- function math.sgn(num)
- return num > 0 and 1 or num < 0 and -1 or 0
- end
- vector = {}
- _meta = _meta or {}
- _meta.V = {}
- function V(t, n)
- local res = {}
- res.n = n or t.n or #t
- for i = 1, res.n do
- res[i] = t[i]
- end
- return setmetatable(res, _meta.V)
- end
- function vector.zero(n)
- return vector.fill(n, 0)
- end
- function vector.fill(n, k)
- local res = {}
- for i = 1, n do
- res[i] = k
- end
- res.n = n
- return setmetatable(res, _meta.V)
- end
- function vector.unit(n, i)
- local res = {}
- for j = 1, n do
- res[j] = i == j and 1 or 0
- end
- res.n = n
- return setmetatable(res, _meta.V)
- end
- function vector.length(v)
- local length = 0
- for _, val in ipairs(v) do
- length = length + val^2
- end
- return math.sqrt(length)
- end
- function vector.cross(v1, v2)
- local res = {}
- res[1] = v1[2]*v2[3] - v1[3]*v2[2]
- res[2] = v1[3]*v2[1] - v1[1]*v2[3]
- res[3] = v1[1]*v2[2] - v1[2]*v2[1]
- res.n = 3
- return setmetatable(res, _meta.V)
- end
Advertisement
Add Comment
Please, Sign In to add comment