@lakuna/umath 0.0.3 → 0.0.5

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 (136) hide show
  1. package/README.md +33 -0
  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/isPrime.d.ts +2 -0
  19. package/dist/algorithms/isPrime.d.ts.map +1 -0
  20. package/dist/algorithms/isPrime.js +12 -0
  21. package/dist/algorithms/isPrime.js.map +1 -0
  22. package/dist/algorithms/permutations.d.ts +2 -0
  23. package/dist/algorithms/permutations.d.ts.map +1 -0
  24. package/dist/algorithms/permutations.js +5 -0
  25. package/dist/algorithms/permutations.js.map +1 -0
  26. package/dist/algorithms/primeFactorization.d.ts +2 -0
  27. package/dist/algorithms/primeFactorization.d.ts.map +1 -0
  28. package/dist/algorithms/primeFactorization.js +15 -0
  29. package/dist/algorithms/primeFactorization.js.map +1 -0
  30. package/dist/algorithms/radiansToDegrees.d.ts +2 -0
  31. package/dist/algorithms/radiansToDegrees.d.ts.map +1 -0
  32. package/dist/algorithms/radiansToDegrees.js +4 -0
  33. package/dist/algorithms/radiansToDegrees.js.map +1 -0
  34. package/dist/algorithms/summation.d.ts.map +1 -1
  35. package/dist/algorithms/summation.js.map +1 -1
  36. package/dist/index.d.ts +24 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +19 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/linear/DualQuaternion.d.ts +89 -0
  41. package/dist/linear/DualQuaternion.d.ts.map +1 -0
  42. package/dist/linear/DualQuaternion.js +530 -0
  43. package/dist/linear/DualQuaternion.js.map +1 -0
  44. package/dist/linear/Matrix.d.ts +18 -0
  45. package/dist/linear/Matrix.d.ts.map +1 -0
  46. package/dist/linear/Matrix.js +2 -0
  47. package/dist/linear/Matrix.js.map +1 -0
  48. package/dist/linear/Matrix2.d.ts +67 -0
  49. package/dist/linear/Matrix2.d.ts.map +1 -0
  50. package/dist/linear/Matrix2.js +240 -0
  51. package/dist/linear/Matrix2.js.map +1 -0
  52. package/dist/linear/Matrix3.d.ts +92 -0
  53. package/dist/linear/Matrix3.d.ts.map +1 -0
  54. package/dist/linear/Matrix3.js +533 -0
  55. package/dist/linear/Matrix3.js.map +1 -0
  56. package/dist/linear/Matrix4.d.ts +144 -0
  57. package/dist/linear/Matrix4.d.ts.map +1 -0
  58. package/dist/linear/Matrix4.js +1363 -0
  59. package/dist/linear/Matrix4.js.map +1 -0
  60. package/dist/linear/Quaternion.d.ts +82 -0
  61. package/dist/linear/Quaternion.d.ts.map +1 -0
  62. package/dist/linear/Quaternion.js +370 -0
  63. package/dist/linear/Quaternion.js.map +1 -0
  64. package/dist/linear/SquareMatrix.d.ts +7 -0
  65. package/dist/linear/SquareMatrix.d.ts.map +1 -0
  66. package/dist/linear/SquareMatrix.js +2 -0
  67. package/dist/linear/SquareMatrix.js.map +1 -0
  68. package/dist/linear/Vector.d.ts +30 -0
  69. package/dist/linear/Vector.d.ts.map +1 -0
  70. package/dist/linear/Vector.js +2 -0
  71. package/dist/linear/Vector.js.map +1 -0
  72. package/dist/linear/Vector2.d.ts +97 -0
  73. package/dist/linear/Vector2.d.ts.map +1 -0
  74. package/dist/linear/Vector2.js +293 -0
  75. package/dist/linear/Vector2.js.map +1 -0
  76. package/dist/linear/Vector3.d.ts +112 -0
  77. package/dist/linear/Vector3.d.ts.map +1 -0
  78. package/dist/linear/Vector3.js +466 -0
  79. package/dist/linear/Vector3.js.map +1 -0
  80. package/dist/linear/Vector4.d.ts +87 -0
  81. package/dist/linear/Vector4.d.ts.map +1 -0
  82. package/dist/linear/Vector4.js +348 -0
  83. package/dist/linear/Vector4.js.map +1 -0
  84. package/dist/types/AxisAngle.d.ts +6 -0
  85. package/dist/types/AxisAngle.d.ts.map +1 -0
  86. package/dist/types/AxisAngle.js +2 -0
  87. package/dist/types/AxisAngle.js.map +1 -0
  88. package/dist/types/FieldOfView.d.ts +7 -0
  89. package/dist/types/FieldOfView.d.ts.map +1 -0
  90. package/dist/types/FieldOfView.js +2 -0
  91. package/dist/types/FieldOfView.js.map +1 -0
  92. package/dist/utility/BigNumber.d.ts +1 -1
  93. package/dist/utility/BigNumber.d.ts.map +1 -1
  94. package/dist/utility/BigNumber.js +4 -1
  95. package/dist/utility/BigNumber.js.map +1 -1
  96. package/dist/utility/MagnitudeError.d.ts +4 -0
  97. package/dist/utility/MagnitudeError.d.ts.map +1 -0
  98. package/dist/utility/MagnitudeError.js +6 -0
  99. package/dist/utility/MagnitudeError.js.map +1 -0
  100. package/dist/utility/SingularMatrixError.d.ts +4 -0
  101. package/dist/utility/SingularMatrixError.d.ts.map +1 -0
  102. package/dist/utility/SingularMatrixError.js +6 -0
  103. package/dist/utility/SingularMatrixError.js.map +1 -0
  104. package/dist/utility/epsilon.d.ts +3 -0
  105. package/dist/utility/epsilon.d.ts.map +1 -0
  106. package/dist/utility/epsilon.js +2 -0
  107. package/dist/utility/epsilon.js.map +1 -0
  108. package/package.json +29 -18
  109. package/src/algorithms/combinations.ts +12 -0
  110. package/src/algorithms/degreesToRadians.ts +10 -0
  111. package/src/algorithms/factorial.ts +9 -0
  112. package/src/algorithms/fibonacci.ts +14 -0
  113. package/src/algorithms/greatestCommonDivisor.ts +2 -2
  114. package/src/algorithms/isPrime.ts +20 -0
  115. package/src/algorithms/permutations.ts +12 -0
  116. package/src/algorithms/primeFactorization.ts +21 -0
  117. package/src/algorithms/radiansToDegrees.ts +10 -0
  118. package/src/algorithms/summation.ts +4 -1
  119. package/src/index.ts +24 -0
  120. package/src/linear/DualQuaternion.ts +1217 -0
  121. package/src/linear/Matrix.ts +106 -0
  122. package/src/linear/Matrix2.ts +717 -0
  123. package/src/linear/Matrix3.ts +1202 -0
  124. package/src/linear/Matrix4.ts +2607 -0
  125. package/src/linear/Quaternion.ts +989 -0
  126. package/src/linear/SquareMatrix.ts +27 -0
  127. package/src/linear/Vector.ts +178 -0
  128. package/src/linear/Vector2.ts +987 -0
  129. package/src/linear/Vector3.ts +1328 -0
  130. package/src/linear/Vector4.ts +983 -0
  131. package/src/types/AxisAngle.ts +10 -0
  132. package/src/types/FieldOfView.ts +14 -0
  133. package/src/utility/BigNumber.ts +2 -1
  134. package/src/utility/MagnitudeError.ts +10 -0
  135. package/src/utility/SingularMatrixError.ts +13 -0
  136. 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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AE,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,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,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WAC1E,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WAC1E,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WAC1E,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WAC1E,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WAC1E,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AA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AAG,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,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,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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,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,GA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D,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,GAA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,CAAC,GAAG,CAAC,GAAG,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;QACrB,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,EAAE,CAAC,CAAC;KACrB;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAUD,MAAM,UAAU,OAAO,CAAwB,MAAmB,EAAE,OAAe,EAAE,GAAM;IAC1F,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEpC,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;IAE/B,IAAI,GAAG,IAAI,MAAM,EAAE;QAClB,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,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,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;KACrB;IAED,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACZ,CAAC;AAUD,MAAM,UAAU,OAAO,CAAwB,MAAmB,EAAE,OAAe,EAAE,GAAM;IAC1F,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEpC,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;IAE/B,IAAI,GAAG,IAAI,MAAM,EAAE;QAClB,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,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,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;KACrB;IAED,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACZ,CAAC;AAUD,MAAM,UAAU,OAAO,CAAwB,MAAmB,EAAE,OAAe,EAAE,GAAM;IAC1F,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEpC,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;IAE9B,IAAI,GAAG,IAAI,MAAM,EAAE;QAClB,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,EAAE,CAAC,CAAC;QACrB,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,EAAE,CAAC,CAAC;KACrB;IAED,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACZ,CAAC;AASD,MAAM,UAAU,cAAc,CAAwB,MAAmB,EAAE,GAAM;IAChF,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC;AACZ,CAAC;AASD,MAAM,UAAU,UAAU,CAAwB,MAAmB,EAAE,GAAM;IAC5E,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;IAE/B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC;AACZ,CAAC;AASD,MAAM,UAAU,WAAW,CAA2B,MAAmB,EAAE,GAAM;IAChF,MAAM,OAAO,GAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,CAAgB,CAAC,CAAC;IAEpF,MAAM,GAAG,GAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAEtC,MAAM,KAAK,GAAW,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEzC,IAAI,KAAK,GAAG,CAAC,EAAE;QACd,MAAM,CAAC,GAAW,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAClB,OAAO,GAAG,CAAC;KACX;IAED,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE;QAC/B,MAAM,CAAC,GAAW,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;KACX;IAED,IAAI,IAAI,GAAG,IAAI,EAAE;QAChB,MAAM,CAAC,GAAW,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;KACX;IAED,MAAM,CAAC,GAAW,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACZ,CAAC;AAMD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,YAAY;IAkBzC,MAAM,CAAC,eAAe,CAAwB,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QACpG,OAAO,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAmBM,MAAM,CAAC,WAAW,CAAwB,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QAChG,OAAO,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAqBM,MAAM,CAAC,YAAY,CAAwB,OAAe,EAAE,IAAiB,EAAE,MAAS,IAAI,OAAO,EAAO;QAChH,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAmBM,MAAM,CAAC,aAAa,CAAwB,OAAe,EAAE,MAAS,IAAI,OAAO,EAAO;QAC9F,OAAO,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAmBM,MAAM,CAAC,aAAa,CAAwB,OAAe,EAAE,MAAS,IAAI,OAAO,EAAO;QAC9F,OAAO,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAmBM,MAAM,CAAC,aAAa,CAAwB,OAAe,EAAE,MAAS,IAAI,OAAO,EAAO;QAC9F,OAAO,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAuBM,MAAM,CAAC,uBAAuB,CAAwB,QAAwB,EAAE,WAAwB,EAAE,MAAS,IAAI,OAAO,EAAO;QAC3I,OAAO,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAyBM,MAAM,CAAC,4BAA4B,CAAwB,QAAwB,EAAE,WAAwB,EAAE,OAAoB,EAAE,MAAS,IAAI,OAAO,EAAO;QACtK,OAAO,4BAA4B,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1E,CAAC;IA2BM,MAAM,CAAC,kCAAkC,CAAwB,QAAwB,EAAE,WAAwB,EAAE,OAAoB,EAAE,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QACjM,OAAO,kCAAkC,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACxF,CAAC;IAuBM,MAAM,CAAC,kBAAkB,CAAwB,UAA8B,EAAE,MAAS,IAAI,OAAO,EAAO;QAClH,OAAO,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IA+BM,MAAM,CAAC,OAAO,CAAwB,IAAY,EAAE,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,IAAY,EAAE,GAAW,EAAE,MAAS,IAAI,OAAO,EAAO;QAC5J,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IA2BM,MAAM,CAAC,WAAW,CAAwB,GAAW,EAAE,MAAc,EAAE,IAAY,EAAE,GAAW,EAAE,MAAS,IAAI,OAAO,EAAO;QACnI,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IA2BM,MAAM,CAAC,0BAA0B,CAAwB,GAAgB,EAAE,IAAY,EAAE,GAAW,EAAE,MAAS,IAAI,OAAO,EAAO;QACvI,OAAO,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IA+BM,MAAM,CAAC,KAAK,CAAwB,IAAY,EAAE,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,IAAY,EAAE,GAAW,EAAE,MAAS,IAAI,OAAO,EAAO;QAC1J,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAuBM,MAAM,CAAC,MAAM,CAAwB,GAAgB,EAAE,MAAmB,EAAE,KAAkB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAgB,EAAE,MAAS,IAAI,OAAO,EAAO;QAC3K,OAAO,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAuBM,MAAM,CAAC,QAAQ,CAAoB,GAAgB,EAAE,MAAmB,EAAE,KAAkB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAgB,EAAE,MAAS,IAAI,OAAO,EAAO;QACzK,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IA+CM,MAAM,CAAC,UAAU,CAAwB,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,MAAS,IAAI,OAAO,EAAO;QAC1S,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACxH,CAAC;IAMD;QACC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEV,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACjB,CAAC;IAGe,KAAK,CAAI;IAGT,MAAM,CAAI;IAOnB,MAAM,CAAC,MAAmB;QAChC,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAOM,WAAW,CAAC,MAAmB;QACrC,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAmBM,GAAG,CAAwB,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QACjF,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAiBM,OAAO,CAAwB,MAAS,IAAI,OAAO,EAAO;QAChE,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAeS,KAAK,CAAwB,MAAS,IAAI,OAAO,EAAO;QAC3D,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAOG,IAAI,CAAC,MAAmB;QAC9B,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAMD,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAmBM,QAAQ,CAAwB,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QACtF,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAmBM,cAAc,CAAwB,MAAc,EAAE,MAAS,IAAI,OAAO,EAAO;QACvF,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAuBM,oBAAoB,CAAwB,MAAmB,EAAE,MAAc,EAAE,MAAS,IAAI,OAAO,EAAO;QAClH,OAAO,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAmBM,QAAQ,CAAwB,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QACtF,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAiBM,SAAS,CAAwB,MAAS,IAAI,OAAO,EAAO;QAClE,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IAMD,IAAW,WAAW;QACrB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAOM,QAAQ;QACd,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAiBM,MAAM,CAAwB,MAAS,IAAI,OAAO,EAAO;QAC/D,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC;IAmBM,KAAK,CAAwB,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QACnF,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAmBM,SAAS,CAAwB,MAAmB,EAAE,MAAS,IAAI,OAAO,EAAO;QACvF,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAqBM,MAAM,CAAwB,OAAe,EAAE,IAAiB,EAAE,MAAS,IAAI,OAAO,EAAO;QACnG,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAmBM,OAAO,CAAwB,OAAe,EAAE,MAAS,IAAI,OAAO,EAAO;QACjF,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAmBM,OAAO,CAAwB,OAAe,EAAE,MAAS,IAAI,OAAO,EAAO;QACjF,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAmBM,OAAO,CAAwB,OAAe,EAAE,MAAS,IAAI,OAAO,EAAO;QACjF,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAiBM,cAAc,CAAwB,MAAS,IAAI,OAAO,EAAO;QACvE,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAiBM,UAAU,CAAwB,MAAS,IAAI,OAAO,EAAO;QACnE,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAiBM,WAAW,CAA2B,MAAS,IAAI,UAAU,EAAO;QAC1E,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;CACD"}
@@ -0,0 +1,82 @@
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<T extends AxisAngle>(quaternion: QuaternionLike, out: T): T;
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
+ getAxisAngle(): AxisAngle;
37
+ getAxisAngle<T extends AxisAngle>(out: T): T;
38
+ setAxisAngle(axisAngle: AxisAngle): void;
39
+ getAngle(quaternion: QuaternionLike): number;
40
+ multiply(quaternion: QuaternionLike): Quaternion;
41
+ multiply<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
42
+ rotateX(radians: number): Quaternion;
43
+ rotateX<T extends QuaternionLike>(radians: number, out: T): T;
44
+ rotateY(radians: number): Quaternion;
45
+ rotateY<T extends QuaternionLike>(radians: number, out: T): T;
46
+ rotateZ(radians: number): Quaternion;
47
+ rotateZ<T extends QuaternionLike>(radians: number, out: T): T;
48
+ calculateW(): Quaternion;
49
+ calculateW<T extends QuaternionLike>(out: T): T;
50
+ exp(): Quaternion;
51
+ exp<T extends QuaternionLike>(out: T): T;
52
+ ln(): Quaternion;
53
+ ln<T extends QuaternionLike>(out: T): T;
54
+ pow(scalar: number): Quaternion;
55
+ pow<T extends QuaternionLike>(scalar: number, out: T): T;
56
+ slerp(quaternion: QuaternionLike, t: number): Quaternion;
57
+ slerp<T extends QuaternionLike>(quaternion: QuaternionLike, t: number, out: T): T;
58
+ random(): this;
59
+ invert(): Quaternion;
60
+ invert<T extends QuaternionLike>(out: T): T;
61
+ conjugate(): Quaternion;
62
+ conjugate<T extends QuaternionLike>(out: T): T;
63
+ clone(): Quaternion;
64
+ clone<T extends QuaternionLike>(out: T): T;
65
+ copy(quaternion: QuaternionLike): this;
66
+ add(quaternion: QuaternionLike): Quaternion;
67
+ add<T extends QuaternionLike>(quaternion: QuaternionLike, out: T): T;
68
+ scale(scalar: number): Quaternion;
69
+ scale<T extends QuaternionLike>(scalar: number, out: T): T;
70
+ dot(quaternion: QuaternionLike): number;
71
+ lerp(quaternion: QuaternionLike, t: number): Quaternion;
72
+ lerp<T extends QuaternionLike>(quaternion: QuaternionLike, t: number, out: T): T;
73
+ get magnitude(): number;
74
+ get squaredMagnitude(): number;
75
+ normalize(): Quaternion;
76
+ normalize<T extends QuaternionLike>(out: T): T;
77
+ equals(quaternion: QuaternionLike): boolean;
78
+ exactEquals(quaternion: QuaternionLike): boolean;
79
+ sqlerp(a: QuaternionLike, b: QuaternionLike, quaternion: QuaternionLike, t: number): Quaternion;
80
+ sqlerp<T extends QuaternionLike>(a: QuaternionLike, b: QuaternionLike, quaternion: QuaternionLike, t: number, out: T): T;
81
+ }
82
+ //# 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,370 @@
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, out) {
70
+ const r = Math.acos(quaternion[3]) * 2;
71
+ const s = Math.sin(r / 2);
72
+ out.axis = s > epsilon
73
+ ? [quaternion[0] / s, quaternion[1] / s, quaternion[2] / s]
74
+ : [1, 0, 0];
75
+ out.angle = r;
76
+ return out;
77
+ }
78
+ export function setAxisAngle(quaternion, axisAngle) {
79
+ const r = axisAngle.angle * 0.5;
80
+ const s = Math.sin(r);
81
+ quaternion[0] = s * axisAngle.axis[0];
82
+ quaternion[1] = s * axisAngle.axis[1];
83
+ quaternion[2] = s * axisAngle.axis[2];
84
+ quaternion[3] = Math.cos(r);
85
+ }
86
+ export function getAngle(a, b) {
87
+ const dp = dot(a, b);
88
+ return Math.acos(2 * dp * dp - 1);
89
+ }
90
+ export function multiply(a, b, out) {
91
+ const ax = a[0];
92
+ const ay = a[1];
93
+ const az = a[2];
94
+ const aw = a[3];
95
+ const bx = b[0];
96
+ const by = b[1];
97
+ const bz = b[2];
98
+ const bw = b[3];
99
+ out[0] = ax * bw + aw * bx + ay * bz - az * by;
100
+ out[1] = ay * bw + aw * by + az * bx - ax * bz;
101
+ out[2] = az * bw + aw * bz + ax * by - ay * bx;
102
+ out[3] = aw * bw - ax * bx - ay * by - az * bz;
103
+ return out;
104
+ }
105
+ export function rotateX(quaternion, radians, out) {
106
+ const r = radians * 0.5;
107
+ const ax = quaternion[0];
108
+ const ay = quaternion[1];
109
+ const az = quaternion[2];
110
+ const aw = quaternion[3];
111
+ const bx = Math.sin(r);
112
+ const bw = Math.cos(r);
113
+ out[0] = ax * bw + aw * bx;
114
+ out[1] = ay * bw + az * bx;
115
+ out[2] = az * bw - ay * bx;
116
+ out[3] = aw * bw - ax * bx;
117
+ return out;
118
+ }
119
+ export function rotateY(quaternion, radians, out) {
120
+ const r = radians * 0.5;
121
+ const ax = quaternion[0];
122
+ const ay = quaternion[1];
123
+ const az = quaternion[2];
124
+ const aw = quaternion[3];
125
+ const by = Math.sin(r);
126
+ const bw = Math.cos(r);
127
+ out[0] = ax * bw - az * by;
128
+ out[1] = ay * bw + aw * by;
129
+ out[2] = az * bw + ax * by;
130
+ out[3] = aw * bw - ay * by;
131
+ return out;
132
+ }
133
+ export function rotateZ(quaternion, radians, out) {
134
+ const r = radians * 0.5;
135
+ const ax = quaternion[0];
136
+ const ay = quaternion[1];
137
+ const az = quaternion[2];
138
+ const aw = quaternion[3];
139
+ const bz = Math.sin(r);
140
+ const bw = Math.cos(r);
141
+ out[0] = ax * bw + ay * bz;
142
+ out[1] = ay * bw - ax * bz;
143
+ out[2] = az * bw + aw * bz;
144
+ out[3] = aw * bw - az * bz;
145
+ return out;
146
+ }
147
+ export function calculateW(quaternion, out) {
148
+ const x = quaternion[0];
149
+ const y = quaternion[1];
150
+ const z = quaternion[2];
151
+ out[0] = x;
152
+ out[1] = y;
153
+ out[2] = z;
154
+ out[3] = Math.sqrt(Math.abs(1 - x * x - y * y - z * z));
155
+ return out;
156
+ }
157
+ export function exp(quaternion, out) {
158
+ const x = quaternion[0];
159
+ const y = quaternion[1];
160
+ const z = quaternion[2];
161
+ const w = quaternion[3];
162
+ const r = Math.sqrt(x * x + y * y + z * z);
163
+ const et = Math.exp(w);
164
+ const s = r > 0 ? (et * Math.sin(r)) / r : 0;
165
+ out[0] = x * s;
166
+ out[1] = y * s;
167
+ out[2] = z * s;
168
+ out[3] = et * Math.cos(r);
169
+ return out;
170
+ }
171
+ export function ln(quaternion, out) {
172
+ const x = quaternion[0];
173
+ const y = quaternion[1];
174
+ const z = quaternion[2];
175
+ const w = quaternion[3];
176
+ const r = Math.sqrt(x * x + y * y + z * z);
177
+ const t = r > 0 ? Math.atan2(r, w) / r : 0;
178
+ out[0] = x * t;
179
+ out[1] = y * t;
180
+ out[2] = z * t;
181
+ out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);
182
+ return out;
183
+ }
184
+ export function pow(quaternion, scalar, out) {
185
+ return exp(scale(ln(quaternion, out), scalar, out), out);
186
+ }
187
+ export function slerp(a, b, t, out) {
188
+ const ax = a[0];
189
+ const ay = a[1];
190
+ const az = a[2];
191
+ const aw = a[3];
192
+ let bx = b[0];
193
+ let by = b[1];
194
+ let bz = b[2];
195
+ let bw = b[3];
196
+ let cosom = ax * bx + ay * by + az * bz + aw * bw;
197
+ if (cosom < 0) {
198
+ cosom = -cosom;
199
+ bx = -bx;
200
+ by = -by;
201
+ bz = -bz;
202
+ bw = -bw;
203
+ }
204
+ let scale0 = 0;
205
+ let scale1 = 0;
206
+ if (1 - cosom > epsilon) {
207
+ const omega = Math.acos(cosom);
208
+ const sinom = Math.sin(omega);
209
+ scale0 = Math.sin((1 - t) * omega) / sinom;
210
+ scale1 = Math.sin(t * omega) / sinom;
211
+ }
212
+ else {
213
+ scale0 = 1 - t;
214
+ scale1 = t;
215
+ }
216
+ out[0] = scale0 * ax + scale1 * bx;
217
+ out[1] = scale0 * ay + scale1 * by;
218
+ out[2] = scale0 * az + scale1 * bz;
219
+ out[3] = scale0 * aw + scale1 * bw;
220
+ return out;
221
+ }
222
+ export function random(out) {
223
+ const u1 = Math.random();
224
+ const u2 = Math.random();
225
+ const u3 = Math.random();
226
+ const sqrt1MinusU1 = Math.sqrt(1 - u1);
227
+ const sqrtU1 = Math.sqrt(u1);
228
+ out[0] = sqrt1MinusU1 * Math.sin(2 * Math.PI * u2);
229
+ out[1] = sqrt1MinusU1 * Math.cos(2 * Math.PI * u2);
230
+ out[2] = sqrtU1 * Math.sin(2 * Math.PI * u3);
231
+ out[3] = sqrtU1 * Math.cos(2 * Math.PI * u3);
232
+ return out;
233
+ }
234
+ export function invert(quaternion, out) {
235
+ const a0 = quaternion[0];
236
+ const a1 = quaternion[1];
237
+ const a2 = quaternion[2];
238
+ const a3 = quaternion[3];
239
+ const dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;
240
+ const invDot = dot ? 1 / dot : 0;
241
+ if (dot == 0) {
242
+ out[0] = 0;
243
+ out[1] = 0;
244
+ out[2] = 0;
245
+ out[3] = 0;
246
+ return out;
247
+ }
248
+ out[0] = -a0 * invDot;
249
+ out[1] = -a1 * invDot;
250
+ out[2] = -a2 * invDot;
251
+ out[3] = a3 * invDot;
252
+ return out;
253
+ }
254
+ export function conjugate(quaternion, out) {
255
+ out[0] = -quaternion[0];
256
+ out[1] = -quaternion[1];
257
+ out[2] = -quaternion[2];
258
+ out[3] = quaternion[3];
259
+ return out;
260
+ }
261
+ const controlPointOne = new Float32Array(4);
262
+ const controlPointTwo = new Float32Array(4);
263
+ export function sqlerp(a, b, c, d, t, out) {
264
+ slerp(a, d, t, controlPointOne);
265
+ slerp(b, c, t, controlPointTwo);
266
+ return slerp(controlPointOne, controlPointTwo, 2 * t * (1 - t), out);
267
+ }
268
+ export default class Quaternion extends Float32Array {
269
+ static fromMatrix3(matrix, out = new Quaternion()) {
270
+ return fromMatrix3(matrix, out);
271
+ }
272
+ static fromEuler(x, y, z, out = new Quaternion()) {
273
+ return fromEuler(x, y, z, out);
274
+ }
275
+ static fromValues(x, y, z, w, out = new Quaternion()) {
276
+ return fromValues(x, y, z, w, out);
277
+ }
278
+ static fromAxes(view, right, up, out = new Quaternion()) {
279
+ return fromAxes(view, right, up, out);
280
+ }
281
+ constructor() {
282
+ super(4);
283
+ this[3] = 1;
284
+ }
285
+ identity() {
286
+ return identity(this);
287
+ }
288
+ getAxisAngle(out = {}) {
289
+ return getAxisAngle(this, out);
290
+ }
291
+ setAxisAngle(axisAngle) {
292
+ setAxisAngle(this, axisAngle);
293
+ }
294
+ getAngle(quaternion) {
295
+ return getAngle(this, quaternion);
296
+ }
297
+ multiply(quaternion, out = new Quaternion()) {
298
+ return multiply(this, quaternion, out);
299
+ }
300
+ rotateX(radians, out = new Quaternion()) {
301
+ return rotateX(this, radians, out);
302
+ }
303
+ rotateY(radians, out = new Quaternion()) {
304
+ return rotateY(this, radians, out);
305
+ }
306
+ rotateZ(radians, out = new Quaternion()) {
307
+ return rotateZ(this, radians, out);
308
+ }
309
+ calculateW(out = new Quaternion()) {
310
+ return calculateW(this, out);
311
+ }
312
+ exp(out = new Quaternion()) {
313
+ return exp(this, out);
314
+ }
315
+ ln(out = new Quaternion()) {
316
+ return ln(this, out);
317
+ }
318
+ pow(scalar, out = new Quaternion()) {
319
+ return pow(this, scalar, out);
320
+ }
321
+ slerp(quaternion, t, out = new Quaternion()) {
322
+ return slerp(this, quaternion, t, out);
323
+ }
324
+ random() {
325
+ return random(this);
326
+ }
327
+ invert(out = new Quaternion()) {
328
+ return invert(this, out);
329
+ }
330
+ conjugate(out = new Quaternion()) {
331
+ return conjugate(this, out);
332
+ }
333
+ clone(out = new Quaternion()) {
334
+ return copy(this, out);
335
+ }
336
+ copy(quaternion) {
337
+ return copy(quaternion, this);
338
+ }
339
+ add(quaternion, out = new Quaternion()) {
340
+ return add(this, quaternion, out);
341
+ }
342
+ scale(scalar, out = new Quaternion()) {
343
+ return scale(this, scalar, out);
344
+ }
345
+ dot(quaternion) {
346
+ return dot(this, quaternion);
347
+ }
348
+ lerp(quaternion, t, out = new Quaternion()) {
349
+ return lerp(this, quaternion, t, out);
350
+ }
351
+ get magnitude() {
352
+ return getMagnitude(this);
353
+ }
354
+ get squaredMagnitude() {
355
+ return getSquaredMagnitude(this);
356
+ }
357
+ normalize(out = new Quaternion()) {
358
+ return normalize(this, out);
359
+ }
360
+ equals(quaternion) {
361
+ return equals(this, quaternion);
362
+ }
363
+ exactEquals(quaternion) {
364
+ return exactEquals(this, quaternion);
365
+ }
366
+ sqlerp(a, b, quaternion, t, out = new Quaternion()) {
367
+ return sqlerp(this, a, b, quaternion, t, out);
368
+ }
369
+ }
370
+ //# sourceMappingURL=Quaternion.js.map