math.lua 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. function math.calcRotateAngle(angle1, angle2)
  2. local d = (angle2 - angle1) % 360
  3. if d > 180 then
  4. d = d - 360
  5. end
  6. return angle1 + d
  7. end
  8. function math.floatEquals(a, b)
  9. return math.abs(a - b) < Mathf.Epsilon
  10. end
  11. function math.sign(a)
  12. if a > 0 then
  13. return 1
  14. elseif a < 0 then
  15. return -1
  16. end
  17. return 0
  18. end
  19. function math.round(a)
  20. return math.floor(a + 0.5)
  21. end
  22. function math.randomFloat(min, max, multiple)
  23. if min > max then
  24. min, max = max, min
  25. end
  26. if multiple == nil then
  27. multiple = 10000
  28. end
  29. local int_min = math.floor(min * multiple)
  30. local int_max = math.ceil(max * multiple)
  31. local random_int = math.random(int_min, int_max)
  32. return random_int / multiple
  33. end
  34. function math.selectRate(probability)
  35. local randomNum = math.random()
  36. return randomNum <= probability
  37. end
  38. function math.shuffleTable(t)
  39. local n = #t
  40. for i = n, 2, -1 do
  41. local j = math.random(i)
  42. t[i], t[j] = t[j], t[i]
  43. end
  44. end