@lakuna/umath 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +41 -1
  2. package/dist/algorithms/combinations.d.ts +2 -0
  3. package/dist/algorithms/combinations.d.ts.map +1 -0
  4. package/dist/algorithms/combinations.js +5 -0
  5. package/dist/algorithms/combinations.js.map +1 -0
  6. package/dist/algorithms/degreesToRadians.d.ts +2 -0
  7. package/dist/algorithms/degreesToRadians.d.ts.map +1 -0
  8. package/dist/algorithms/degreesToRadians.js +4 -0
  9. package/dist/algorithms/degreesToRadians.js.map +1 -0
  10. package/dist/algorithms/factorial.d.ts +2 -0
  11. package/dist/algorithms/factorial.d.ts.map +1 -0
  12. package/dist/algorithms/factorial.js +4 -0
  13. package/dist/algorithms/factorial.js.map +1 -0
  14. package/dist/algorithms/fibonacci.d.ts +2 -0
  15. package/dist/algorithms/fibonacci.d.ts.map +1 -0
  16. package/dist/algorithms/fibonacci.js +9 -0
  17. package/dist/algorithms/fibonacci.js.map +1 -0
  18. package/dist/algorithms/greatestCommonDivisor.d.ts +3 -0
  19. package/dist/algorithms/greatestCommonDivisor.d.ts.map +1 -0
  20. package/dist/algorithms/greatestCommonDivisor.js +13 -0
  21. package/dist/algorithms/greatestCommonDivisor.js.map +1 -0
  22. package/dist/algorithms/isPrime.d.ts +2 -0
  23. package/dist/algorithms/isPrime.d.ts.map +1 -0
  24. package/dist/algorithms/isPrime.js +12 -0
  25. package/dist/algorithms/isPrime.js.map +1 -0
  26. package/dist/algorithms/permutations.d.ts +2 -0
  27. package/dist/algorithms/permutations.d.ts.map +1 -0
  28. package/dist/algorithms/permutations.js +5 -0
  29. package/dist/algorithms/permutations.js.map +1 -0
  30. package/dist/algorithms/primeFactorization.d.ts +2 -0
  31. package/dist/algorithms/primeFactorization.d.ts.map +1 -0
  32. package/dist/algorithms/primeFactorization.js +15 -0
  33. package/dist/algorithms/primeFactorization.js.map +1 -0
  34. package/dist/algorithms/radiansToDegrees.d.ts +2 -0
  35. package/dist/algorithms/radiansToDegrees.d.ts.map +1 -0
  36. package/dist/algorithms/radiansToDegrees.js +4 -0
  37. package/dist/algorithms/radiansToDegrees.js.map +1 -0
  38. package/dist/algorithms/summation.d.ts +2 -0
  39. package/dist/algorithms/summation.d.ts.map +1 -0
  40. package/dist/algorithms/summation.js +7 -0
  41. package/dist/algorithms/summation.js.map +1 -0
  42. package/dist/index.d.ts +28 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +22 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/linear/DualQuaternion.d.ts +89 -0
  47. package/dist/linear/DualQuaternion.d.ts.map +1 -0
  48. package/dist/linear/DualQuaternion.js +530 -0
  49. package/dist/linear/DualQuaternion.js.map +1 -0
  50. package/dist/linear/Matrix.d.ts +18 -0
  51. package/dist/linear/Matrix.d.ts.map +1 -0
  52. package/dist/linear/Matrix.js +2 -0
  53. package/dist/linear/Matrix.js.map +1 -0
  54. package/dist/linear/Matrix2.d.ts +66 -0
  55. package/dist/linear/Matrix2.d.ts.map +1 -0
  56. package/dist/linear/Matrix2.js +240 -0
  57. package/dist/linear/Matrix2.js.map +1 -0
  58. package/dist/linear/Matrix3.d.ts +91 -0
  59. package/dist/linear/Matrix3.d.ts.map +1 -0
  60. package/dist/linear/Matrix3.js +533 -0
  61. package/dist/linear/Matrix3.js.map +1 -0
  62. package/dist/linear/Matrix4.d.ts +140 -0
  63. package/dist/linear/Matrix4.d.ts.map +1 -0
  64. package/dist/linear/Matrix4.js +1363 -0
  65. package/dist/linear/Matrix4.js.map +1 -0
  66. package/dist/linear/Quaternion.d.ts +80 -0
  67. package/dist/linear/Quaternion.d.ts.map +1 -0
  68. package/dist/linear/Quaternion.js +371 -0
  69. package/dist/linear/Quaternion.js.map +1 -0
  70. package/dist/linear/SquareMatrix.d.ts +7 -0
  71. package/dist/linear/SquareMatrix.d.ts.map +1 -0
  72. package/dist/linear/SquareMatrix.js +2 -0
  73. package/dist/linear/SquareMatrix.js.map +1 -0
  74. package/dist/linear/Vector.d.ts +30 -0
  75. package/dist/linear/Vector.d.ts.map +1 -0
  76. package/dist/linear/Vector.js +2 -0
  77. package/dist/linear/Vector.js.map +1 -0
  78. package/dist/linear/Vector2.d.ts +96 -0
  79. package/dist/linear/Vector2.d.ts.map +1 -0
  80. package/dist/linear/Vector2.js +293 -0
  81. package/dist/linear/Vector2.js.map +1 -0
  82. package/dist/linear/Vector3.d.ts +111 -0
  83. package/dist/linear/Vector3.d.ts.map +1 -0
  84. package/dist/linear/Vector3.js +466 -0
  85. package/dist/linear/Vector3.js.map +1 -0
  86. package/dist/linear/Vector4.d.ts +86 -0
  87. package/dist/linear/Vector4.d.ts.map +1 -0
  88. package/dist/linear/Vector4.js +348 -0
  89. package/dist/linear/Vector4.js.map +1 -0
  90. package/dist/types/AxisAngle.d.ts +6 -0
  91. package/dist/types/AxisAngle.d.ts.map +1 -0
  92. package/dist/types/AxisAngle.js +2 -0
  93. package/dist/types/AxisAngle.js.map +1 -0
  94. package/dist/types/FieldOfView.d.ts +7 -0
  95. package/dist/types/FieldOfView.d.ts.map +1 -0
  96. package/dist/types/FieldOfView.js +2 -0
  97. package/dist/types/FieldOfView.js.map +1 -0
  98. package/dist/types/IntegerRepresentation.d.ts +2 -0
  99. package/dist/types/IntegerRepresentation.d.ts.map +1 -0
  100. package/dist/types/IntegerRepresentation.js +2 -0
  101. package/dist/types/IntegerRepresentation.js.map +1 -0
  102. package/dist/utility/BigNumber.d.ts +15 -0
  103. package/dist/utility/BigNumber.d.ts.map +1 -0
  104. package/dist/utility/BigNumber.js +75 -0
  105. package/dist/utility/BigNumber.js.map +1 -0
  106. package/dist/utility/MagnitudeError.d.ts +4 -0
  107. package/dist/utility/MagnitudeError.d.ts.map +1 -0
  108. package/dist/utility/MagnitudeError.js +6 -0
  109. package/dist/utility/MagnitudeError.js.map +1 -0
  110. package/dist/utility/SingularMatrixError.d.ts +4 -0
  111. package/dist/utility/SingularMatrixError.d.ts.map +1 -0
  112. package/dist/utility/SingularMatrixError.js +6 -0
  113. package/dist/utility/SingularMatrixError.js.map +1 -0
  114. package/dist/utility/epsilon.d.ts +3 -0
  115. package/dist/utility/epsilon.d.ts.map +1 -0
  116. package/dist/utility/epsilon.js +2 -0
  117. package/dist/utility/epsilon.js.map +1 -0
  118. package/package.json +17 -9
  119. package/src/algorithms/combinations.ts +12 -0
  120. package/src/algorithms/degreesToRadians.ts +10 -0
  121. package/src/algorithms/factorial.ts +9 -0
  122. package/src/algorithms/fibonacci.ts +14 -0
  123. package/src/algorithms/greatestCommonDivisor.ts +30 -0
  124. package/src/algorithms/isPrime.ts +20 -0
  125. package/src/algorithms/permutations.ts +12 -0
  126. package/src/algorithms/primeFactorization.ts +21 -0
  127. package/src/algorithms/radiansToDegrees.ts +10 -0
  128. package/src/algorithms/summation.ts +23 -0
  129. package/src/index.ts +28 -1
  130. package/src/linear/DualQuaternion.ts +1213 -0
  131. package/src/linear/Matrix.ts +106 -0
  132. package/src/linear/Matrix2.ts +709 -0
  133. package/src/linear/Matrix3.ts +1194 -0
  134. package/src/linear/Matrix4.ts +2569 -0
  135. package/src/linear/Quaternion.ts +967 -0
  136. package/src/linear/SquareMatrix.ts +27 -0
  137. package/src/linear/Vector.ts +178 -0
  138. package/src/linear/Vector2.ts +979 -0
  139. package/src/linear/Vector3.ts +1320 -0
  140. package/src/linear/Vector4.ts +975 -0
  141. package/src/types/AxisAngle.ts +10 -0
  142. package/src/types/FieldOfView.ts +14 -0
  143. package/src/types/IntegerRepresentation.ts +2 -0
  144. package/src/utility/BigNumber.ts +130 -0
  145. package/src/utility/MagnitudeError.ts +10 -0
  146. package/src/utility/SingularMatrixError.ts +13 -0
  147. package/src/utility/epsilon.ts +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matrix4.js","sourceRoot":"","sources":["../../src/linear/Matrix4.ts"],"names":[],"mappings":"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AG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;WACtE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;WACtE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;WACtE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;WACtE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;WACtE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;WACtE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;WACtE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,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AAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CACT,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,GAAG,CAAC,CAAC,CAAC;QACL,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CACT,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,GAAG,CAAC,CAAC,CAAC;QACL,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,CAAC,CAAC;QACL,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC7B,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAC/B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GAAG,EAAE,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACnD,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACV,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACV,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACX,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACX,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACpD,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACX,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACX,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACX,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACX,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACpD,OAAO,GAAG,CAAC;AACZ,CAAC;AAUD,MAAM,UAAU,cAAc,CAAwB,MAAmB,EAAE,MAAc,EAAE,GAAM;IAChG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,OAAO,GAAG,CAAC;AACZ,CAAC;AAYD,MAAM,UAAU,oBAAoB,CAAwB,CAAc,EAAE,CAAc,EAAE,MAAc,EAAE,GAAM;IACjH,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IACjC,OAAO,GAAG,CAAC;AACZ,CAAC;AAUD,MAAM,UAAU,QAAQ,CAAwB,CAAc,EAAE,CAAc,EAAE,GAAM;IACrF,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC;AACZ,CAAC;AASD,MAAM,UAAU,SAAS,CAAwB,MAAmB,EAAE,GAAM;IAC3E,IAAI,GAAG,IAAI,MAAsB,EAAE;QAClC,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACb,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACb,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;KACd;SAAM;QACN,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;KACrB;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC9C,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/B,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAE1C,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9E,CAAC;AASD,MAAM,UAAU,MAAM,CAAwB,MAAmB,EAAE,GAAM;IACxE,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/B,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAE1C,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChF,IAAI,CAAC,GAAG,EAAE;QACT,MAAM,IAAI,mBAAmB,EAAE,CAAC;KAChC;IACD,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAEd,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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,CAAC,GAAG,CAAC,CAAC;IAElC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC5C,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC5C,IAAI,GAAG,IAAI,MAAM,EAAE;QAClB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;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"}
@@ -0,0 +1,80 @@
1
+ import { type AxisAngle } from "@lakuna/umath";
2
+ import { type Matrix3Like } from "@lakuna/umath/Matrix3";
3
+ import type { Vector3Like } from "@lakuna/umath/Vector3";
4
+ export type QuaternionLike = Quaternion | [number, number, number, number];
5
+ export declare function fromMatrix3<T extends QuaternionLike>(matrix: Matrix3Like, out: T): T;
6
+ export declare function fromEuler<T extends QuaternionLike>(x: number, y: number, z: number, out: T): T;
7
+ export declare function fromAxes<T extends QuaternionLike>(view: Vector3Like, right: Vector3Like, up: Vector3Like, out: T): T;
8
+ export declare function identity<T extends QuaternionLike>(out: T): T;
9
+ export declare function getAxisAngle(quaternion: QuaternionLike): AxisAngle;
10
+ export declare function setAxisAngle(quaternion: QuaternionLike, axisAngle: AxisAngle): void;
11
+ export declare function getAngle(a: QuaternionLike, b: QuaternionLike): number;
12
+ export declare function multiply<T extends QuaternionLike>(a: QuaternionLike, b: QuaternionLike, out: T): T;
13
+ export declare function rotateX<T extends QuaternionLike>(quaternion: QuaternionLike, radians: number, out: T): T;
14
+ export declare function rotateY<T extends QuaternionLike>(quaternion: QuaternionLike, radians: number, out: T): T;
15
+ export declare function rotateZ<T extends QuaternionLike>(quaternion: QuaternionLike, radians: number, out: T): T;
16
+ export declare function calculateW<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
17
+ export declare function exp<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
18
+ export declare function ln<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
19
+ export declare function pow<T extends QuaternionLike>(quaternion: QuaternionLike, scalar: number, out: T): T;
20
+ export declare function slerp<T extends QuaternionLike>(a: QuaternionLike, b: QuaternionLike, t: number, out: T): T;
21
+ export declare function random<T extends QuaternionLike>(out: T): T;
22
+ export declare function invert<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
23
+ export declare function conjugate<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
24
+ export declare function sqlerp<T extends QuaternionLike>(a: QuaternionLike, b: QuaternionLike, c: QuaternionLike, d: QuaternionLike, t: number, out: T): T;
25
+ export default class Quaternion extends Float32Array {
26
+ static fromMatrix3(matrix: Matrix3Like): Quaternion;
27
+ static fromMatrix3<T extends QuaternionLike>(matrix: Matrix3Like, out: T): T;
28
+ static fromEuler(x: number, y: number, z: number): Quaternion;
29
+ static fromEuler<T extends QuaternionLike>(x: number, y: number, z: number, out: T): T;
30
+ static fromValues(x: number, y: number, z: number, w: number): Quaternion;
31
+ static fromValues<T extends QuaternionLike>(x: number, y: number, z: number, w: number, out: T): T;
32
+ static fromAxes(view: Vector3Like, right: Vector3Like, up: Vector3Like): Quaternion;
33
+ static fromAxes<T extends QuaternionLike>(view: Vector3Like, right: Vector3Like, up: Vector3Like, out: T): T;
34
+ constructor();
35
+ identity(): this;
36
+ get axisAngle(): AxisAngle;
37
+ set axisAngle(value: AxisAngle);
38
+ getAngle(quaternion: QuaternionLike): number;
39
+ multiply(quaternion: QuaternionLike): Quaternion;
40
+ multiply<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
41
+ rotateX(radians: number): Quaternion;
42
+ rotateX<T extends QuaternionLike>(radians: number, out: T): T;
43
+ rotateY(radians: number): Quaternion;
44
+ rotateY<T extends QuaternionLike>(radians: number, out: T): T;
45
+ rotateZ(radians: number): Quaternion;
46
+ rotateZ<T extends QuaternionLike>(radians: number, out: T): T;
47
+ calculateW(): Quaternion;
48
+ calculateW<T extends QuaternionLike>(out: T): T;
49
+ exp(): Quaternion;
50
+ exp<T extends QuaternionLike>(out: T): T;
51
+ ln(): Quaternion;
52
+ ln<T extends QuaternionLike>(out: T): T;
53
+ pow(scalar: number): Quaternion;
54
+ pow<T extends QuaternionLike>(scalar: number, out: T): T;
55
+ slerp(quaternion: QuaternionLike, t: number): Quaternion;
56
+ slerp<T extends QuaternionLike>(quaternion: QuaternionLike, t: number, out: T): T;
57
+ random(): this;
58
+ invert(): Quaternion;
59
+ invert<T extends QuaternionLike>(out: T): T;
60
+ conjugate(): Quaternion;
61
+ conjugate<T extends QuaternionLike>(out: T): T;
62
+ clone(): Quaternion;
63
+ copy(quaternion: QuaternionLike): this;
64
+ add(quaternion: QuaternionLike): Quaternion;
65
+ add<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
66
+ scale(scalar: number): Quaternion;
67
+ scale<T extends QuaternionLike>(scalar: number, out: T): T;
68
+ dot(quaternion: QuaternionLike): number;
69
+ lerp(quaternion: QuaternionLike, t: number): Quaternion;
70
+ lerp<T extends QuaternionLike>(quaternion: QuaternionLike, t: number, out: T): T;
71
+ get magnitude(): number;
72
+ get squaredMagnitude(): number;
73
+ normalize(): Quaternion;
74
+ normalize<T extends QuaternionLike>(out: T): T;
75
+ equals(quaternion: QuaternionLike): boolean;
76
+ exactEquals(quaternion: QuaternionLike): boolean;
77
+ sqlerp(a: QuaternionLike, b: QuaternionLike, quaternion: QuaternionLike, t: number): Quaternion;
78
+ sqlerp<T extends QuaternionLike>(a: QuaternionLike, b: QuaternionLike, quaternion: QuaternionLike, t: number, out: T): T;
79
+ }
80
+ //# sourceMappingURL=Quaternion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../src/linear/Quaternion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,371 @@
1
+ import { epsilon } from "@lakuna/umath";
2
+ import {} from "@lakuna/umath/Matrix3";
3
+ import Vector4, { fromValues, copy, add, scale, dot, lerp, getMagnitude, getSquaredMagnitude, normalize, equals, exactEquals } from "./Vector4.js";
4
+ export function fromMatrix3(matrix, out) {
5
+ const fTrace = matrix[0] + matrix[4] + matrix[8];
6
+ if (fTrace > 0) {
7
+ let fRoot = Math.sqrt(fTrace + 1);
8
+ out[3] = 0.5 * fRoot;
9
+ fRoot = 0.5 / fRoot;
10
+ out[0] = (matrix[5] - matrix[7]) * fRoot;
11
+ out[1] = (matrix[6] - matrix[2]) * fRoot;
12
+ out[2] = (matrix[1] - matrix[3]) * fRoot;
13
+ return out;
14
+ }
15
+ let i = 0;
16
+ if (matrix[4] > matrix[0]) {
17
+ i = 1;
18
+ }
19
+ if (matrix[8] > matrix[i * 3 + i]) {
20
+ i = 2;
21
+ }
22
+ const j = (i + 1) % 3;
23
+ const k = (i + 2) % 3;
24
+ let fRoot = Math.sqrt(matrix[i * 3 + i] - matrix[j * 3 + j] - matrix[k * 3 + k] + 1);
25
+ out[i] = 0.5 * fRoot;
26
+ fRoot = 0.5 / fRoot;
27
+ out[3] = (matrix[j * 3 + k] - matrix[k * 3 + j]) * fRoot;
28
+ out[j] = (matrix[j * 3 + i] + matrix[i * 3 + j]) * fRoot;
29
+ out[k] = (matrix[k * 3 + i] + matrix[i * 3 + k]) * fRoot;
30
+ return out;
31
+ }
32
+ export function fromEuler(x, y, z, out) {
33
+ const r = (0.5 * Math.PI) / 180;
34
+ const x2 = x * r;
35
+ const y2 = y * r;
36
+ const z2 = z * r;
37
+ const sx = Math.sin(x2);
38
+ const cx = Math.cos(x2);
39
+ const sy = Math.sin(y2);
40
+ const cy = Math.cos(y2);
41
+ const sz = Math.sin(z2);
42
+ const cz = Math.cos(z2);
43
+ out[0] = sx * cy * cz - cx * sy * sz;
44
+ out[1] = cx * sy * cz + sx * cy * sz;
45
+ out[2] = cx * cy * sz - sx * sy * cz;
46
+ out[3] = cx * cy * cz + sx * sy * sz;
47
+ return out;
48
+ }
49
+ const intermediary = new Float32Array(9);
50
+ export function fromAxes(view, right, up, out) {
51
+ intermediary[0] = right[0];
52
+ intermediary[3] = right[1];
53
+ intermediary[6] = right[2];
54
+ intermediary[1] = up[0];
55
+ intermediary[4] = up[1];
56
+ intermediary[7] = up[2];
57
+ intermediary[2] = -view[0];
58
+ intermediary[5] = -view[1];
59
+ intermediary[8] = -view[2];
60
+ return normalize(fromMatrix3(intermediary, out), out);
61
+ }
62
+ export function identity(out) {
63
+ out[0] = 0;
64
+ out[1] = 0;
65
+ out[2] = 0;
66
+ out[3] = 1;
67
+ return out;
68
+ }
69
+ export function getAxisAngle(quaternion) {
70
+ const r = Math.acos(quaternion[3]) * 2;
71
+ const s = Math.sin(r / 2);
72
+ return {
73
+ axis: s > epsilon
74
+ ? [quaternion[0] / s, quaternion[1] / s, quaternion[2] / s]
75
+ : [1, 0, 0],
76
+ angle: r
77
+ };
78
+ }
79
+ export function setAxisAngle(quaternion, axisAngle) {
80
+ const r = axisAngle.angle * 0.5;
81
+ const s = Math.sin(r);
82
+ quaternion[0] = s * axisAngle.axis[0];
83
+ quaternion[1] = s * axisAngle.axis[1];
84
+ quaternion[2] = s * axisAngle.axis[2];
85
+ quaternion[3] = Math.cos(r);
86
+ }
87
+ export function getAngle(a, b) {
88
+ const dp = dot(a, b);
89
+ return Math.acos(2 * dp * dp - 1);
90
+ }
91
+ export function multiply(a, b, out) {
92
+ const ax = a[0];
93
+ const ay = a[1];
94
+ const az = a[2];
95
+ const aw = a[3];
96
+ const bx = b[0];
97
+ const by = b[1];
98
+ const bz = b[2];
99
+ const bw = b[3];
100
+ out[0] = ax * bw + aw * bx + ay * bz - az * by;
101
+ out[1] = ay * bw + aw * by + az * bx - ax * bz;
102
+ out[2] = az * bw + aw * bz + ax * by - ay * bx;
103
+ out[3] = aw * bw - ax * bx - ay * by - az * bz;
104
+ return out;
105
+ }
106
+ export function rotateX(quaternion, radians, out) {
107
+ const r = radians * 0.5;
108
+ const ax = quaternion[0];
109
+ const ay = quaternion[1];
110
+ const az = quaternion[2];
111
+ const aw = quaternion[3];
112
+ const bx = Math.sin(r);
113
+ const bw = Math.cos(r);
114
+ out[0] = ax * bw + aw * bx;
115
+ out[1] = ay * bw + az * bx;
116
+ out[2] = az * bw - ay * bx;
117
+ out[3] = aw * bw - ax * bx;
118
+ return out;
119
+ }
120
+ export function rotateY(quaternion, radians, out) {
121
+ const r = radians * 0.5;
122
+ const ax = quaternion[0];
123
+ const ay = quaternion[1];
124
+ const az = quaternion[2];
125
+ const aw = quaternion[3];
126
+ const by = Math.sin(r);
127
+ const bw = Math.cos(r);
128
+ out[0] = ax * bw - az * by;
129
+ out[1] = ay * bw + aw * by;
130
+ out[2] = az * bw + ax * by;
131
+ out[3] = aw * bw - ay * by;
132
+ return out;
133
+ }
134
+ export function rotateZ(quaternion, radians, out) {
135
+ const r = radians * 0.5;
136
+ const ax = quaternion[0];
137
+ const ay = quaternion[1];
138
+ const az = quaternion[2];
139
+ const aw = quaternion[3];
140
+ const bz = Math.sin(r);
141
+ const bw = Math.cos(r);
142
+ out[0] = ax * bw + ay * bz;
143
+ out[1] = ay * bw - ax * bz;
144
+ out[2] = az * bw + aw * bz;
145
+ out[3] = aw * bw - az * bz;
146
+ return out;
147
+ }
148
+ export function calculateW(quaternion, out) {
149
+ const x = quaternion[0];
150
+ const y = quaternion[1];
151
+ const z = quaternion[2];
152
+ out[0] = x;
153
+ out[1] = y;
154
+ out[2] = z;
155
+ out[3] = Math.sqrt(Math.abs(1 - x * x - y * y - z * z));
156
+ return out;
157
+ }
158
+ export function exp(quaternion, out) {
159
+ const x = quaternion[0];
160
+ const y = quaternion[1];
161
+ const z = quaternion[2];
162
+ const w = quaternion[3];
163
+ const r = Math.sqrt(x * x + y * y + z * z);
164
+ const et = Math.exp(w);
165
+ const s = r > 0 ? (et * Math.sin(r)) / r : 0;
166
+ out[0] = x * s;
167
+ out[1] = y * s;
168
+ out[2] = z * s;
169
+ out[3] = et * Math.cos(r);
170
+ return out;
171
+ }
172
+ export function ln(quaternion, out) {
173
+ const x = quaternion[0];
174
+ const y = quaternion[1];
175
+ const z = quaternion[2];
176
+ const w = quaternion[3];
177
+ const r = Math.sqrt(x * x + y * y + z * z);
178
+ const t = r > 0 ? Math.atan2(r, w) / r : 0;
179
+ out[0] = x * t;
180
+ out[1] = y * t;
181
+ out[2] = z * t;
182
+ out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);
183
+ return out;
184
+ }
185
+ export function pow(quaternion, scalar, out) {
186
+ return exp(scale(ln(quaternion, out), scalar, out), out);
187
+ }
188
+ export function slerp(a, b, t, out) {
189
+ const ax = a[0];
190
+ const ay = a[1];
191
+ const az = a[2];
192
+ const aw = a[3];
193
+ let bx = b[0];
194
+ let by = b[1];
195
+ let bz = b[2];
196
+ let bw = b[3];
197
+ let cosom = ax * bx + ay * by + az * bz + aw * bw;
198
+ if (cosom < 0) {
199
+ cosom = -cosom;
200
+ bx = -bx;
201
+ by = -by;
202
+ bz = -bz;
203
+ bw = -bw;
204
+ }
205
+ let scale0 = 0;
206
+ let scale1 = 0;
207
+ if (1 - cosom > epsilon) {
208
+ const omega = Math.acos(cosom);
209
+ const sinom = Math.sin(omega);
210
+ scale0 = Math.sin((1 - t) * omega) / sinom;
211
+ scale1 = Math.sin(t * omega) / sinom;
212
+ }
213
+ else {
214
+ scale0 = 1 - t;
215
+ scale1 = t;
216
+ }
217
+ out[0] = scale0 * ax + scale1 * bx;
218
+ out[1] = scale0 * ay + scale1 * by;
219
+ out[2] = scale0 * az + scale1 * bz;
220
+ out[3] = scale0 * aw + scale1 * bw;
221
+ return out;
222
+ }
223
+ export function random(out) {
224
+ const u1 = Math.random();
225
+ const u2 = Math.random();
226
+ const u3 = Math.random();
227
+ const sqrt1MinusU1 = Math.sqrt(1 - u1);
228
+ const sqrtU1 = Math.sqrt(u1);
229
+ out[0] = sqrt1MinusU1 * Math.sin(2 * Math.PI * u2);
230
+ out[1] = sqrt1MinusU1 * Math.cos(2 * Math.PI * u2);
231
+ out[2] = sqrtU1 * Math.sin(2 * Math.PI * u3);
232
+ out[3] = sqrtU1 * Math.cos(2 * Math.PI * u3);
233
+ return out;
234
+ }
235
+ export function invert(quaternion, out) {
236
+ const a0 = quaternion[0];
237
+ const a1 = quaternion[1];
238
+ const a2 = quaternion[2];
239
+ const a3 = quaternion[3];
240
+ const dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;
241
+ const invDot = dot ? 1 / dot : 0;
242
+ if (dot == 0) {
243
+ out[0] = 0;
244
+ out[1] = 0;
245
+ out[2] = 0;
246
+ out[3] = 0;
247
+ return out;
248
+ }
249
+ out[0] = -a0 * invDot;
250
+ out[1] = -a1 * invDot;
251
+ out[2] = -a2 * invDot;
252
+ out[3] = a3 * invDot;
253
+ return out;
254
+ }
255
+ export function conjugate(quaternion, out) {
256
+ out[0] = -quaternion[0];
257
+ out[1] = -quaternion[1];
258
+ out[2] = -quaternion[2];
259
+ out[3] = quaternion[3];
260
+ return out;
261
+ }
262
+ const controlPointOne = new Float32Array(4);
263
+ const controlPointTwo = new Float32Array(4);
264
+ export function sqlerp(a, b, c, d, t, out) {
265
+ slerp(a, d, t, controlPointOne);
266
+ slerp(b, c, t, controlPointTwo);
267
+ return slerp(controlPointOne, controlPointTwo, 2 * t * (1 - t), out);
268
+ }
269
+ export default class Quaternion extends Float32Array {
270
+ static fromMatrix3(matrix, out = new Quaternion()) {
271
+ return fromMatrix3(matrix, out);
272
+ }
273
+ static fromEuler(x, y, z, out = new Quaternion()) {
274
+ return fromEuler(x, y, z, out);
275
+ }
276
+ static fromValues(x, y, z, w, out = new Quaternion()) {
277
+ return fromValues(x, y, z, w, out);
278
+ }
279
+ static fromAxes(view, right, up, out = new Quaternion()) {
280
+ return fromAxes(view, right, up, out);
281
+ }
282
+ constructor() {
283
+ super(4);
284
+ this[3] = 1;
285
+ }
286
+ identity() {
287
+ return identity(this);
288
+ }
289
+ get axisAngle() {
290
+ return getAxisAngle(this);
291
+ }
292
+ set axisAngle(value) {
293
+ setAxisAngle(this, value);
294
+ }
295
+ getAngle(quaternion) {
296
+ return getAngle(this, quaternion);
297
+ }
298
+ multiply(quaternion, out = new Quaternion()) {
299
+ return multiply(this, quaternion, out);
300
+ }
301
+ rotateX(radians, out = new Quaternion()) {
302
+ return rotateX(this, radians, out);
303
+ }
304
+ rotateY(radians, out = new Quaternion()) {
305
+ return rotateY(this, radians, out);
306
+ }
307
+ rotateZ(radians, out = new Quaternion()) {
308
+ return rotateZ(this, radians, out);
309
+ }
310
+ calculateW(out = new Quaternion()) {
311
+ return calculateW(this, out);
312
+ }
313
+ exp(out = new Quaternion()) {
314
+ return exp(this, out);
315
+ }
316
+ ln(out = new Quaternion()) {
317
+ return ln(this, out);
318
+ }
319
+ pow(scalar, out = new Quaternion()) {
320
+ return pow(this, scalar, out);
321
+ }
322
+ slerp(quaternion, t, out = new Quaternion()) {
323
+ return slerp(this, quaternion, t, out);
324
+ }
325
+ random() {
326
+ return random(this);
327
+ }
328
+ invert(out = new Quaternion()) {
329
+ return invert(this, out);
330
+ }
331
+ conjugate(out = new Quaternion()) {
332
+ return conjugate(this, out);
333
+ }
334
+ clone() {
335
+ return copy(this, new Quaternion());
336
+ }
337
+ copy(quaternion) {
338
+ return copy(quaternion, this);
339
+ }
340
+ add(quaternion, out = new Quaternion()) {
341
+ return add(this, quaternion, out);
342
+ }
343
+ scale(scalar, out = new Quaternion()) {
344
+ return scale(this, scalar, out);
345
+ }
346
+ dot(quaternion) {
347
+ return dot(this, quaternion);
348
+ }
349
+ lerp(quaternion, t, out = new Quaternion()) {
350
+ return lerp(this, quaternion, t, out);
351
+ }
352
+ get magnitude() {
353
+ return getMagnitude(this);
354
+ }
355
+ get squaredMagnitude() {
356
+ return getSquaredMagnitude(this);
357
+ }
358
+ normalize(out = new Quaternion()) {
359
+ return normalize(this, out);
360
+ }
361
+ equals(quaternion) {
362
+ return equals(this, quaternion);
363
+ }
364
+ exactEquals(quaternion) {
365
+ return exactEquals(this, quaternion);
366
+ }
367
+ sqlerp(a, b, quaternion, t, out = new Quaternion()) {
368
+ return sqlerp(this, a, b, quaternion, t, out);
369
+ }
370
+ }
371
+ //# sourceMappingURL=Quaternion.js.map