alexop1000

Lua

May 28th, 2019
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.32 KB | None | 0 0
  1. math.tau = 2 * math.pi
  2. function math.degree(v)
  3.     return 360 * v / math.tau
  4. end
  5.  
  6. function math.radian(v)
  7.     return math.tau * v / 360
  8. end
  9. function math.round(num, prec)
  10.     local mult = 10^(prec or 0)
  11.     return ((num * mult + 0.5) / mult):floor()
  12. end
  13. function math.sgn(num)
  14.     return num > 0 and 1 or num < 0 and -1 or 0
  15. end
  16. vector = {}
  17.  
  18. _meta = _meta or {}
  19. _meta.V = {}
  20. function V(t, n)
  21.     local res = {}
  22.     res.n = n or t.n or #t
  23.     for i = 1, res.n do
  24.         res[i] = t[i]
  25.     end
  26.  
  27.     return setmetatable(res, _meta.V)
  28. end
  29. function vector.zero(n)
  30.     return vector.fill(n, 0)
  31. end
  32. function vector.fill(n, k)
  33.     local res = {}
  34.     for i = 1, n do
  35.         res[i] = k
  36.     end
  37.  
  38.     res.n = n
  39.     return setmetatable(res, _meta.V)
  40. end
  41. function vector.unit(n, i)
  42.     local res = {}
  43.     for j = 1, n do
  44.         res[j] = i == j and 1 or 0
  45.     end
  46.  
  47.     res.n = n
  48.     return setmetatable(res, _meta.V)
  49. end
  50.  
  51. function vector.length(v)
  52.     local length = 0
  53.     for _, val in ipairs(v) do
  54.         length = length + val^2
  55.     end
  56.  
  57.     return math.sqrt(length)
  58. end
  59. function vector.cross(v1, v2)
  60.     local res = {}
  61.     res[1] = v1[2]*v2[3] - v1[3]*v2[2]
  62.     res[2] = v1[3]*v2[1] - v1[1]*v2[3]
  63.     res[3] = v1[1]*v2[2] - v1[2]*v2[1]
  64.  
  65.     res.n = 3
  66.     return setmetatable(res, _meta.V)
  67. end
Advertisement
Add Comment
Please, Sign In to add comment