compatibility.lua 506 B

123456789101112131415161718192021222324252627282930
  1. --stolen from builtin. LGPLv2.1
  2. if not vector.dot
  3. then
  4. function vector.dot(a, b)
  5. return a.x * b.x + a.y * b.y + a.z * b.z
  6. end
  7. end
  8. if not vector.cross
  9. then
  10. function vector.cross(a, b)
  11. return {
  12. x = a.y * b.z - a.z * b.y,
  13. y = a.z * b.x - a.x * b.z,
  14. z = a.x * b.y - a.y * b.x
  15. }
  16. end
  17. end
  18. if not vector.angle
  19. then
  20. function vector.angle(a, b)
  21. local dotp = vector.dot(a, b)
  22. local cp = vector.cross(a, b)
  23. local crossplen = vector.length(cp)
  24. return math.atan2(crossplen, dotp)
  25. end
  26. end