quat.lua 801 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. require("vec3")
  2. local ffi = require("ffi")
  3. ffi.cdef
  4. [[
  5. typedef struct
  6. {
  7. Vec3 v;
  8. float w;
  9. } Quat;
  10. Quat& quat(float angle, const Vec3& v);
  11. void quat_negate(Quat& self);
  12. void quat_load_identity(Quat& self);
  13. float quat_length(Quat& self);
  14. void quat_conjugate(Quat& self);
  15. Quat& quat_inverse(Quat& self);
  16. Quat& quat_cross(Quat& self, const Quat& b);
  17. Quat& quat_multiply(Quat& self, const float& k);
  18. Quat& quat_power(Quat& self, float exp);
  19. ]]
  20. Quat = {}
  21. Quat.quat = lib.quat
  22. Quat.negate = lib.quat_negate
  23. Quat.load_identity = lib.quat_load_identity
  24. Quat.length = lib.quat_length
  25. Quat.conjugate = lib.quat_conjugate
  26. Quat.inverse = lib.quat_inverse
  27. Quat.cross = lib.quat_cross
  28. Quat.multiply = lib.quat_multiply
  29. Quat.power = lib.quat_power