PHOBOSS

utilities.lua

Apr 4th, 2022 (edited)
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. local swarm_utilities = {}
  2.  
  3. local floor, sqrt, abs = math.floor, math.sqrt, math.abs
  4.  
  5. function swarm_utilities.round(v, m) return {x = floor((v.x+(m*0.5))/m)*m, y = floor((v.y+(m*0.5))/m)*m, z = floor((v.z+(m*0.5))/m)*m} end
  6. function swarm_utilities.cross(v, b) return {x = v.y*b.z-v.z*b.y, y = v.z*b.x-v.x*b.z, z = v.x*b.y-v.y*b.x} end
  7. function swarm_utilities.len(v) return sqrt(v.x^2+v.y^2+v.z^2) end
  8. function swarm_utilities.dot(v, b) return v.x*b.x+v.y*b.y+v.z*b.z end
  9. function swarm_utilities.add(v, b) return {x=v.x+b.x, y=v.y+b.y, z=v.z+b.z} end
  10. function swarm_utilities.sub(v, b) return {x=v.x-b.x, y=v.y-b.y, z=v.z-b.z} end
  11. function swarm_utilities.mul(v, m) return {x=v.x*m, y=v.y*m, z=v.z*m} end
  12. function swarm_utilities.norm(v) return swarm_utilities.mul(v, 1/swarm_utilities.len(v)) end
  13. function swarm_utilities.trunc(v) local t = math.modf(v) return t end
  14. function swarm_utilities.vec_trunc(A)
  15. if A then
  16. return {x=swarm_utilities.trunc(A.x),y=swarm_utilities.trunc(A.y),z=swarm_utilities.trunc(A.z)}
  17. end
  18. return nil
  19. end
  20. function swarm_utilities.arr_length(a)
  21. local c = 0
  22. for k,_ in pairs(a) do c=c+1 end
  23. return c
  24. end
  25. function swarm_utilities.isEqual(a,b)
  26. return (a.x==b.x and a.y==b.y and a.z==b.z)
  27. end
  28. return swarm_utilities
Add Comment
Please, Sign In to add comment