@math.gl/core 3.5.6 → 3.6.0-alpha.2

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 (193) hide show
  1. package/dist/classes/base/math-array.d.ts +66 -0
  2. package/dist/classes/base/math-array.d.ts.map +1 -0
  3. package/dist/classes/base/math-array.js +216 -0
  4. package/dist/classes/base/matrix.d.ts +14 -0
  5. package/dist/classes/base/matrix.d.ts.map +1 -0
  6. package/dist/classes/base/matrix.js +61 -0
  7. package/dist/classes/base/vector.d.ts +44 -0
  8. package/dist/classes/base/vector.d.ts.map +1 -0
  9. package/dist/classes/base/vector.js +126 -0
  10. package/dist/classes/euler.d.ts +77 -0
  11. package/dist/classes/euler.d.ts.map +1 -0
  12. package/dist/classes/euler.js +485 -0
  13. package/dist/classes/matrix3.d.ts +60 -0
  14. package/dist/classes/matrix3.d.ts.map +1 -0
  15. package/dist/classes/matrix3.js +201 -0
  16. package/dist/classes/matrix4.d.ts +226 -0
  17. package/dist/classes/matrix4.d.ts.map +1 -0
  18. package/dist/classes/matrix4.js +538 -0
  19. package/dist/classes/pose.d.ts +40 -0
  20. package/dist/classes/pose.d.ts.map +1 -0
  21. package/dist/classes/pose.js +109 -0
  22. package/dist/classes/quaternion.d.ts +63 -0
  23. package/dist/classes/quaternion.d.ts.map +1 -0
  24. package/dist/classes/quaternion.js +262 -0
  25. package/dist/classes/spherical-coordinates.d.ts +60 -0
  26. package/dist/classes/spherical-coordinates.d.ts.map +1 -0
  27. package/dist/classes/spherical-coordinates.js +148 -0
  28. package/dist/classes/vector2.d.ts +55 -0
  29. package/dist/classes/vector2.d.ts.map +1 -0
  30. package/dist/classes/vector2.js +111 -0
  31. package/dist/classes/vector3.d.ts +56 -0
  32. package/dist/classes/vector3.d.ts.map +1 -0
  33. package/dist/classes/vector3.js +133 -0
  34. package/dist/classes/vector4.d.ts +41 -0
  35. package/dist/classes/vector4.d.ts.map +1 -0
  36. package/dist/classes/vector4.js +114 -0
  37. package/dist/es5/classes/base/math-array.js +57 -61
  38. package/dist/es5/classes/base/math-array.js.map +1 -1
  39. package/dist/es5/classes/base/matrix.js +0 -14
  40. package/dist/es5/classes/base/matrix.js.map +1 -1
  41. package/dist/es5/classes/base/vector.js +0 -12
  42. package/dist/es5/classes/base/vector.js.map +1 -1
  43. package/dist/es5/classes/euler.js +63 -49
  44. package/dist/es5/classes/euler.js.map +1 -1
  45. package/dist/es5/classes/matrix3.js +60 -33
  46. package/dist/es5/classes/matrix3.js.map +1 -1
  47. package/dist/es5/classes/matrix4.js +167 -164
  48. package/dist/es5/classes/matrix4.js.map +1 -1
  49. package/dist/es5/classes/pose.js +7 -6
  50. package/dist/es5/classes/pose.js.map +1 -1
  51. package/dist/es5/classes/quaternion.js +44 -36
  52. package/dist/es5/classes/quaternion.js.map +1 -1
  53. package/dist/es5/classes/spherical-coordinates.js +12 -8
  54. package/dist/es5/classes/spherical-coordinates.js.map +1 -1
  55. package/dist/es5/classes/vector2.js.map +1 -1
  56. package/dist/es5/classes/vector3.js +7 -2
  57. package/dist/es5/classes/vector3.js.map +1 -1
  58. package/dist/es5/classes/vector4.js +7 -2
  59. package/dist/es5/classes/vector4.js.map +1 -1
  60. package/dist/es5/docs/README.md +0 -0
  61. package/dist/es5/index.js +71 -89
  62. package/dist/es5/index.js.map +1 -1
  63. package/dist/es5/lib/assert.js.map +1 -1
  64. package/dist/es5/lib/common.js +40 -43
  65. package/dist/es5/lib/common.js.map +1 -1
  66. package/dist/es5/lib/gl-matrix-extras.js.map +1 -1
  67. package/dist/es5/lib/gl-matrix.d.js +2 -0
  68. package/dist/es5/lib/gl-matrix.d.js.map +1 -0
  69. package/dist/es5/lib/math-utils.js.map +1 -1
  70. package/dist/es5/lib/validators.js.map +1 -1
  71. package/dist/esm/classes/base/math-array.js +45 -47
  72. package/dist/esm/classes/base/math-array.js.map +1 -1
  73. package/dist/esm/classes/base/matrix.js +0 -11
  74. package/dist/esm/classes/base/matrix.js.map +1 -1
  75. package/dist/esm/classes/base/vector.js +0 -10
  76. package/dist/esm/classes/base/vector.js.map +1 -1
  77. package/dist/esm/classes/euler.js +61 -48
  78. package/dist/esm/classes/euler.js.map +1 -1
  79. package/dist/esm/classes/matrix3.js +55 -33
  80. package/dist/esm/classes/matrix3.js.map +1 -1
  81. package/dist/esm/classes/matrix4.js +156 -136
  82. package/dist/esm/classes/matrix4.js.map +1 -1
  83. package/dist/esm/classes/pose.js +8 -4
  84. package/dist/esm/classes/pose.js.map +1 -1
  85. package/dist/esm/classes/quaternion.js +37 -27
  86. package/dist/esm/classes/quaternion.js.map +1 -1
  87. package/dist/esm/classes/spherical-coordinates.js +15 -5
  88. package/dist/esm/classes/spherical-coordinates.js.map +1 -1
  89. package/dist/esm/classes/vector2.js.map +1 -1
  90. package/dist/esm/classes/vector3.js +7 -2
  91. package/dist/esm/classes/vector3.js.map +1 -1
  92. package/dist/esm/classes/vector4.js +7 -2
  93. package/dist/esm/classes/vector4.js.map +1 -1
  94. package/dist/esm/docs/README.md +0 -0
  95. package/dist/esm/index.js +2 -13
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/lib/assert.js.map +1 -1
  98. package/dist/esm/lib/common.js +41 -44
  99. package/dist/esm/lib/common.js.map +1 -1
  100. package/dist/esm/lib/gl-matrix-extras.js.map +1 -1
  101. package/dist/esm/lib/gl-matrix.d.js +2 -0
  102. package/dist/esm/lib/gl-matrix.d.js.map +1 -0
  103. package/dist/esm/lib/math-utils.js.map +1 -1
  104. package/dist/esm/lib/validators.js.map +1 -1
  105. package/dist/index.d.ts +17 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +24 -0
  108. package/dist/lib/assert.d.ts +2 -0
  109. package/dist/lib/assert.d.ts.map +1 -0
  110. package/dist/lib/assert.js +5 -0
  111. package/dist/lib/common.d.ts +93 -0
  112. package/dist/lib/common.d.ts.map +1 -0
  113. package/dist/lib/common.js +210 -0
  114. package/dist/lib/gl-matrix-extras.d.ts +7 -0
  115. package/dist/lib/gl-matrix-extras.d.ts.map +1 -0
  116. package/dist/lib/gl-matrix-extras.js +49 -0
  117. package/dist/lib/math-utils.d.ts +28 -0
  118. package/dist/lib/math-utils.d.ts.map +1 -0
  119. package/dist/lib/math-utils.js +28 -0
  120. package/dist/lib/validators.d.ts +6 -0
  121. package/dist/lib/validators.d.ts.map +1 -0
  122. package/dist/lib/validators.js +33 -0
  123. package/package.json +5 -4
  124. package/src/classes/base/math-array.ts +265 -0
  125. package/src/classes/base/{matrix.js → matrix.ts} +15 -19
  126. package/src/classes/base/{vector.js → vector.ts} +47 -54
  127. package/src/classes/{euler.js → euler.ts} +121 -221
  128. package/src/classes/matrix3.ts +253 -0
  129. package/src/classes/matrix4.ts +668 -0
  130. package/src/classes/{pose.js → pose.ts} +52 -49
  131. package/src/classes/{quaternion.js → quaternion.ts} +107 -95
  132. package/src/classes/{spherical-coordinates.js → spherical-coordinates.ts} +84 -54
  133. package/src/classes/vector2.ts +127 -0
  134. package/src/classes/{vector3.js → vector3.ts} +43 -55
  135. package/src/classes/{vector4.js → vector4.ts} +44 -48
  136. package/src/docs/README.md +0 -0
  137. package/{dist/esm/index.d.ts → src/index.ts} +32 -34
  138. package/src/lib/{assert.js → assert.ts} +1 -1
  139. package/src/lib/common.ts +304 -0
  140. package/src/lib/{gl-matrix-extras.js → gl-matrix-extras.ts} +26 -5
  141. package/src/lib/gl-matrix.d.ts +266 -0
  142. package/src/lib/{math-utils.js → math-utils.ts} +0 -0
  143. package/src/lib/{validators.js → validators.ts} +10 -6
  144. package/dist/es5/addons/polygon.d.ts +0 -17
  145. package/dist/es5/classes/base/math-array.d.ts +0 -56
  146. package/dist/es5/classes/base/matrix.d.ts +0 -15
  147. package/dist/es5/classes/base/vector.d.ts +0 -45
  148. package/dist/es5/classes/euler.d.ts +0 -92
  149. package/dist/es5/classes/matrix3.d.ts +0 -91
  150. package/dist/es5/classes/matrix4.d.ts +0 -161
  151. package/dist/es5/classes/pose.d.ts +0 -92
  152. package/dist/es5/classes/quaternion.d.ts +0 -107
  153. package/dist/es5/classes/spherical-coordinates.d.ts +0 -87
  154. package/dist/es5/classes/vector2.d.ts +0 -65
  155. package/dist/es5/classes/vector3.d.ts +0 -65
  156. package/dist/es5/classes/vector4.d.ts +0 -34
  157. package/dist/es5/index.d.ts +0 -54
  158. package/dist/es5/lib/common.d.ts +0 -80
  159. package/dist/esm/addons/polygon.d.ts +0 -17
  160. package/dist/esm/classes/base/math-array.d.ts +0 -56
  161. package/dist/esm/classes/base/matrix.d.ts +0 -15
  162. package/dist/esm/classes/base/vector.d.ts +0 -45
  163. package/dist/esm/classes/euler.d.ts +0 -92
  164. package/dist/esm/classes/matrix3.d.ts +0 -91
  165. package/dist/esm/classes/matrix4.d.ts +0 -161
  166. package/dist/esm/classes/pose.d.ts +0 -92
  167. package/dist/esm/classes/quaternion.d.ts +0 -107
  168. package/dist/esm/classes/spherical-coordinates.d.ts +0 -87
  169. package/dist/esm/classes/vector2.d.ts +0 -65
  170. package/dist/esm/classes/vector3.d.ts +0 -65
  171. package/dist/esm/classes/vector4.d.ts +0 -34
  172. package/dist/esm/lib/common.d.ts +0 -80
  173. package/src/addons/polygon.d.ts +0 -17
  174. package/src/classes/base/math-array.d.ts +0 -56
  175. package/src/classes/base/math-array.js +0 -250
  176. package/src/classes/base/matrix.d.ts +0 -15
  177. package/src/classes/base/vector.d.ts +0 -45
  178. package/src/classes/euler.d.ts +0 -92
  179. package/src/classes/matrix3.d.ts +0 -91
  180. package/src/classes/matrix3.js +0 -225
  181. package/src/classes/matrix4.d.ts +0 -161
  182. package/src/classes/matrix4.js +0 -530
  183. package/src/classes/pose.d.ts +0 -92
  184. package/src/classes/quaternion.d.ts +0 -107
  185. package/src/classes/spherical-coordinates.d.ts +0 -87
  186. package/src/classes/vector2.d.ts +0 -65
  187. package/src/classes/vector2.js +0 -122
  188. package/src/classes/vector3.d.ts +0 -65
  189. package/src/classes/vector4.d.ts +0 -34
  190. package/src/index.d.ts +0 -54
  191. package/src/index.js +0 -86
  192. package/src/lib/common.d.ts +0 -80
  193. package/src/lib/common.js +0 -222
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/math-utils.js"],"names":["EPSILON1","EPSILON2","EPSILON3","EPSILON4","EPSILON5","EPSILON6","EPSILON7","EPSILON8","EPSILON9","EPSILON10","EPSILON11","EPSILON12","EPSILON13","EPSILON14","EPSILON15","EPSILON16","EPSILON17","EPSILON18","EPSILON19","EPSILON20","PI_OVER_TWO","Math","PI","PI_OVER_FOUR","PI_OVER_SIX","TWO_PI"],"mappings":";;;;;;eAEe;AACbA,EAAAA,QAAQ,EAAE,IADG;AAEbC,EAAAA,QAAQ,EAAE,IAFG;AAGbC,EAAAA,QAAQ,EAAE,IAHG;AAIbC,EAAAA,QAAQ,EAAE,IAJG;AAKbC,EAAAA,QAAQ,EAAE,IALG;AAMbC,EAAAA,QAAQ,EAAE,IANG;AAObC,EAAAA,QAAQ,EAAE,IAPG;AAQbC,EAAAA,QAAQ,EAAE,IARG;AASbC,EAAAA,QAAQ,EAAE,IATG;AAUbC,EAAAA,SAAS,EAAE,KAVE;AAWbC,EAAAA,SAAS,EAAE,KAXE;AAYbC,EAAAA,SAAS,EAAE,KAZE;AAabC,EAAAA,SAAS,EAAE,KAbE;AAcbC,EAAAA,SAAS,EAAE,KAdE;AAebC,EAAAA,SAAS,EAAE,KAfE;AAgBbC,EAAAA,SAAS,EAAE,KAhBE;AAiBbC,EAAAA,SAAS,EAAE,KAjBE;AAkBbC,EAAAA,SAAS,EAAE,KAlBE;AAmBbC,EAAAA,SAAS,EAAE,KAnBE;AAoBbC,EAAAA,SAAS,EAAE,KApBE;AAsBbC,EAAAA,WAAW,EAAEC,IAAI,CAACC,EAAL,GAAU,CAtBV;AAuBbC,EAAAA,YAAY,EAAEF,IAAI,CAACC,EAAL,GAAU,CAvBX;AAwBbE,EAAAA,WAAW,EAAEH,IAAI,CAACC,EAAL,GAAU,CAxBV;AA0BbG,EAAAA,MAAM,EAAEJ,IAAI,CAACC,EAAL,GAAU;AA1BL,C","sourcesContent":["// NOTE: Added to make Cesium-derived test cases work\n// TODO: Determine if/how to keep\nexport default {\n EPSILON1: 1e-1,\n EPSILON2: 1e-2,\n EPSILON3: 1e-3,\n EPSILON4: 1e-4,\n EPSILON5: 1e-5,\n EPSILON6: 1e-6,\n EPSILON7: 1e-7,\n EPSILON8: 1e-8,\n EPSILON9: 1e-9,\n EPSILON10: 1e-10,\n EPSILON11: 1e-11,\n EPSILON12: 1e-12,\n EPSILON13: 1e-13,\n EPSILON14: 1e-14,\n EPSILON15: 1e-15,\n EPSILON16: 1e-16,\n EPSILON17: 1e-17,\n EPSILON18: 1e-18,\n EPSILON19: 1e-19,\n EPSILON20: 1e-20,\n\n PI_OVER_TWO: Math.PI / 2,\n PI_OVER_FOUR: Math.PI / 4,\n PI_OVER_SIX: Math.PI / 6,\n\n TWO_PI: Math.PI * 2\n};\n"],"file":"math-utils.js"}
1
+ {"version":3,"sources":["../../../src/lib/math-utils.ts"],"names":["EPSILON1","EPSILON2","EPSILON3","EPSILON4","EPSILON5","EPSILON6","EPSILON7","EPSILON8","EPSILON9","EPSILON10","EPSILON11","EPSILON12","EPSILON13","EPSILON14","EPSILON15","EPSILON16","EPSILON17","EPSILON18","EPSILON19","EPSILON20","PI_OVER_TWO","Math","PI","PI_OVER_FOUR","PI_OVER_SIX","TWO_PI"],"mappings":";;;;;;eAEe;AACbA,EAAAA,QAAQ,EAAE,IADG;AAEbC,EAAAA,QAAQ,EAAE,IAFG;AAGbC,EAAAA,QAAQ,EAAE,IAHG;AAIbC,EAAAA,QAAQ,EAAE,IAJG;AAKbC,EAAAA,QAAQ,EAAE,IALG;AAMbC,EAAAA,QAAQ,EAAE,IANG;AAObC,EAAAA,QAAQ,EAAE,IAPG;AAQbC,EAAAA,QAAQ,EAAE,IARG;AASbC,EAAAA,QAAQ,EAAE,IATG;AAUbC,EAAAA,SAAS,EAAE,KAVE;AAWbC,EAAAA,SAAS,EAAE,KAXE;AAYbC,EAAAA,SAAS,EAAE,KAZE;AAabC,EAAAA,SAAS,EAAE,KAbE;AAcbC,EAAAA,SAAS,EAAE,KAdE;AAebC,EAAAA,SAAS,EAAE,KAfE;AAgBbC,EAAAA,SAAS,EAAE,KAhBE;AAiBbC,EAAAA,SAAS,EAAE,KAjBE;AAkBbC,EAAAA,SAAS,EAAE,KAlBE;AAmBbC,EAAAA,SAAS,EAAE,KAnBE;AAoBbC,EAAAA,SAAS,EAAE,KApBE;AAsBbC,EAAAA,WAAW,EAAEC,IAAI,CAACC,EAAL,GAAU,CAtBV;AAuBbC,EAAAA,YAAY,EAAEF,IAAI,CAACC,EAAL,GAAU,CAvBX;AAwBbE,EAAAA,WAAW,EAAEH,IAAI,CAACC,EAAL,GAAU,CAxBV;AA0BbG,EAAAA,MAAM,EAAEJ,IAAI,CAACC,EAAL,GAAU;AA1BL,C","sourcesContent":["// NOTE: Added to make Cesium-derived test cases work\n// TODO: Determine if/how to keep\nexport default {\n EPSILON1: 1e-1,\n EPSILON2: 1e-2,\n EPSILON3: 1e-3,\n EPSILON4: 1e-4,\n EPSILON5: 1e-5,\n EPSILON6: 1e-6,\n EPSILON7: 1e-7,\n EPSILON8: 1e-8,\n EPSILON9: 1e-9,\n EPSILON10: 1e-10,\n EPSILON11: 1e-11,\n EPSILON12: 1e-12,\n EPSILON13: 1e-13,\n EPSILON14: 1e-14,\n EPSILON15: 1e-15,\n EPSILON16: 1e-16,\n EPSILON17: 1e-17,\n EPSILON18: 1e-18,\n EPSILON19: 1e-19,\n EPSILON20: 1e-20,\n\n PI_OVER_TWO: Math.PI / 2,\n PI_OVER_FOUR: Math.PI / 4,\n PI_OVER_SIX: Math.PI / 6,\n\n TWO_PI: Math.PI * 2\n};\n"],"file":"math-utils.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/validators.js"],"names":["validateVector","v","length","i","Number","isFinite","checkNumber","value","Error","checkVector","callerName","config","debug","map","deprecated","method","version","console","warn"],"mappings":";;;;;;;;;;AAoBA;;AAEO,SAASA,cAAT,CAAwBC,CAAxB,EAA2BC,MAA3B,EAAmC;AACxC,MAAID,CAAC,CAACC,MAAF,KAAaA,MAAjB,EAAyB;AACvB,WAAO,KAAP;AACD;;AAED,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,CAAC,CAACC,MAAtB,EAA8B,EAAEC,CAAhC,EAAmC;AACjC,QAAI,CAACC,MAAM,CAACC,QAAP,CAAgBJ,CAAC,CAACE,CAAD,CAAjB,CAAL,EAA4B;AAC1B,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AAEM,SAASG,WAAT,CAAqBC,KAArB,EAA4B;AACjC,MAAI,CAACH,MAAM,CAACC,QAAP,CAAgBE,KAAhB,CAAL,EAA6B;AAC3B,UAAM,IAAIC,KAAJ,0BAA4BD,KAA5B,EAAN;AACD;;AACD,SAAOA,KAAP;AACD;;AAEM,SAASE,WAAT,CAAqBR,CAArB,EAAwBC,MAAxB,EAAiD;AAAA,MAAjBQ,UAAiB,uEAAJ,EAAI;;AACtD,MAAIC,eAAOC,KAAP,IAAgB,CAACZ,cAAc,CAACC,CAAD,EAAIC,MAAJ,CAAnC,EAAgD;AAC9C,UAAM,IAAIM,KAAJ,oBAAsBE,UAAtB,0CAAN;AACD;;AACD,SAAOT,CAAP;AACD;;AAED,IAAMY,GAAG,GAAG,EAAZ;;AAEO,SAASC,UAAT,CAAoBC,MAApB,EAA4BC,OAA5B,EAAqC;AAC1C,MAAI,CAACH,GAAG,CAACE,MAAD,CAAR,EAAkB;AAChBF,IAAAA,GAAG,CAACE,MAAD,CAAH,GAAc,IAAd;AAEAE,IAAAA,OAAO,CAACC,IAAR,WACKH,MADL,0CAC2CC,OAD3C;AAGD;AACF","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {config} from './common';\n\nexport function validateVector(v, length) {\n if (v.length !== length) {\n return false;\n }\n // Could be arguments \"array\" (v.every not availasble)\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function checkNumber(value) {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number ${value}`);\n }\n return value;\n}\n\nexport function checkVector(v, length, callerName = '') {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(`math.gl: ${callerName} some fields set to invalid numbers'`);\n }\n return v;\n}\n\nconst map = {};\n\nexport function deprecated(method, version) {\n if (!map[method]) {\n map[method] = true;\n // eslint-disable-next-line\n console.warn(\n `${method} has been removed in version ${version}, see upgrade guide for more information`\n );\n }\n}\n"],"file":"validators.js"}
1
+ {"version":3,"sources":["../../../src/lib/validators.ts"],"names":["validateVector","v","length","i","Number","isFinite","checkNumber","value","Error","checkVector","callerName","config","debug","map","deprecated","method","version","console","warn"],"mappings":";;;;;;;;;;AAoBA;;AAEO,SAASA,cAAT,CAAwBC,CAAxB,EAAwCC,MAAxC,EAAiE;AACtE,MAAID,CAAC,CAACC,MAAF,KAAaA,MAAjB,EAAyB;AACvB,WAAO,KAAP;AACD;;AAED,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,CAAC,CAACC,MAAtB,EAA8B,EAAEC,CAAhC,EAAmC;AACjC,QAAI,CAACC,MAAM,CAACC,QAAP,CAAgBJ,CAAC,CAACE,CAAD,CAAjB,CAAL,EAA4B;AAC1B,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AAEM,SAASG,WAAT,CAAqBC,KAArB,EAAyC;AAC9C,MAAI,CAACH,MAAM,CAACC,QAAP,CAAgBE,KAAhB,CAAL,EAA6B;AAC3B,UAAM,IAAIC,KAAJ,0BAA4BD,KAA5B,EAAN;AACD;;AACD,SAAOA,KAAP;AACD;;AAEM,SAASE,WAAT,CACLR,CADK,EAELC,MAFK,EAIF;AAAA,MADHQ,UACG,uEADkB,EAClB;;AACH,MAAIC,eAAOC,KAAP,IAAgB,CAACZ,cAAc,CAACC,CAAD,EAAIC,MAAJ,CAAnC,EAAgD;AAC9C,UAAM,IAAIM,KAAJ,oBAAsBE,UAAtB,0CAAN;AACD;;AACD,SAAOT,CAAP;AACD;;AAED,IAAMY,GAAG,GAAG,EAAZ;;AAEO,SAASC,UAAT,CAAoBC,MAApB,EAAoCC,OAApC,EAA2D;AAChE,MAAI,CAACH,GAAG,CAACE,MAAD,CAAR,EAAkB;AAChBF,IAAAA,GAAG,CAACE,MAAD,CAAH,GAAc,IAAd;AAEAE,IAAAA,OAAO,CAACC,IAAR,WACKH,MADL,0CAC2CC,OAD3C;AAGD;AACF","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {NumberArray} from '@math.gl/types';\nimport {config} from './common';\n\nexport function validateVector(v: NumberArray, length: number): boolean {\n if (v.length !== length) {\n return false;\n }\n // Could be arguments \"array\" (v.every not availasble)\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function checkNumber(value: any): number {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number ${value}`);\n }\n return value as number;\n}\n\nexport function checkVector<T extends NumberArray>(\n v: T,\n length: number,\n callerName: string = ''\n): T {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(`math.gl: ${callerName} some fields set to invalid numbers'`);\n }\n return v;\n}\n\nconst map = {};\n\nexport function deprecated(method: string, version: string): void {\n if (!map[method]) {\n map[method] = true;\n // eslint-disable-next-line\n console.warn(\n `${method} has been removed in version ${version}, see upgrade guide for more information`\n );\n }\n}\n"],"file":"validators.js"}
@@ -24,21 +24,11 @@ function _extendableBuiltin(cls) {
24
24
  }
25
25
 
26
26
  import { config, formatValue, equals, isArray } from '../../lib/common';
27
- import assert from '../../lib/assert';
28
27
  export default class MathArray extends _extendableBuiltin(Array) {
29
- get ELEMENTS() {
30
- assert(false);
31
- return 0;
32
- }
33
-
34
28
  clone() {
35
29
  return new this.constructor().copy(this);
36
30
  }
37
31
 
38
- from(arrayOrObject) {
39
- return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
40
- }
41
-
42
32
  fromArray(array, offset = 0) {
43
33
  for (let i = 0; i < this.ELEMENTS; ++i) {
44
34
  this[i] = array[i + offset];
@@ -47,6 +37,18 @@ export default class MathArray extends _extendableBuiltin(Array) {
47
37
  return this.check();
48
38
  }
49
39
 
40
+ toArray(targetArray = [], offset = 0) {
41
+ for (let i = 0; i < this.ELEMENTS; ++i) {
42
+ targetArray[offset + i] = this[i];
43
+ }
44
+
45
+ return targetArray;
46
+ }
47
+
48
+ from(arrayOrObject) {
49
+ return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
50
+ }
51
+
50
52
  to(arrayOrObject) {
51
53
  if (arrayOrObject === this) {
52
54
  return this;
@@ -59,14 +61,6 @@ export default class MathArray extends _extendableBuiltin(Array) {
59
61
  return target ? this.to(target) : this;
60
62
  }
61
63
 
62
- toArray(array = [], offset = 0) {
63
- for (let i = 0; i < this.ELEMENTS; ++i) {
64
- array[offset + i] = this[i];
65
- }
66
-
67
- return array;
68
- }
69
-
70
64
  toFloat32Array() {
71
65
  return new Float32Array(this);
72
66
  }
@@ -123,9 +117,7 @@ export default class MathArray extends _extendableBuiltin(Array) {
123
117
 
124
118
  lerp(a, b, t) {
125
119
  if (t === undefined) {
126
- t = b;
127
- b = a;
128
- a = this;
120
+ return this.lerp(this, a, b);
129
121
  }
130
122
 
131
123
  for (let i = 0; i < this.ELEMENTS; ++i) {
@@ -181,17 +173,45 @@ export default class MathArray extends _extendableBuiltin(Array) {
181
173
  }
182
174
 
183
175
  scale(scale) {
184
- if (Array.isArray(scale)) {
185
- return this.multiply(scale);
176
+ if (typeof scale === 'number') {
177
+ for (let i = 0; i < this.ELEMENTS; ++i) {
178
+ this[i] *= scale;
179
+ }
180
+ } else {
181
+ for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {
182
+ this[i] *= scale[i];
183
+ }
186
184
  }
187
185
 
186
+ return this.check();
187
+ }
188
+
189
+ multiplyByScalar(scalar) {
188
190
  for (let i = 0; i < this.ELEMENTS; ++i) {
189
- this[i] *= scale;
191
+ this[i] *= scalar;
190
192
  }
191
193
 
192
194
  return this.check();
193
195
  }
194
196
 
197
+ check() {
198
+ if (config.debug && !this.validate()) {
199
+ throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
200
+ }
201
+
202
+ return this;
203
+ }
204
+
205
+ validate() {
206
+ let valid = this.length === this.ELEMENTS;
207
+
208
+ for (let i = 0; i < this.ELEMENTS; ++i) {
209
+ valid = valid && Number.isFinite(this[i]);
210
+ }
211
+
212
+ return valid;
213
+ }
214
+
195
215
  sub(a) {
196
216
  return this.subtract(a);
197
217
  }
@@ -225,7 +245,7 @@ export default class MathArray extends _extendableBuiltin(Array) {
225
245
  }
226
246
 
227
247
  divideScalar(a) {
228
- return this.scale(1 / a);
248
+ return this.multiplyByScalar(1 / a);
229
249
  }
230
250
 
231
251
  clampScalar(min, max) {
@@ -236,31 +256,9 @@ export default class MathArray extends _extendableBuiltin(Array) {
236
256
  return this.check();
237
257
  }
238
258
 
239
- multiplyByScalar(scalar) {
240
- return this.scale(scalar);
241
- }
242
-
243
259
  get elements() {
244
260
  return this;
245
261
  }
246
262
 
247
- check() {
248
- if (config.debug && !this.validate()) {
249
- throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
250
- }
251
-
252
- return this;
253
- }
254
-
255
- validate() {
256
- let valid = this.length === this.ELEMENTS;
257
-
258
- for (let i = 0; i < this.ELEMENTS; ++i) {
259
- valid = valid && Number.isFinite(this[i]);
260
- }
261
-
262
- return valid;
263
- }
264
-
265
263
  }
266
264
  //# sourceMappingURL=math-array.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/classes/base/math-array.js"],"names":["config","formatValue","equals","isArray","assert","MathArray","Array","ELEMENTS","clone","constructor","copy","from","arrayOrObject","fromObject","fromArray","array","offset","i","check","to","toArray","toObject","toTarget","target","toFloat32Array","Float32Array","toString","formatString","opts","string","printTypes","name","length","exactEquals","negate","lerp","a","b","t","undefined","ai","min","vector","Math","max","clamp","minVector","maxVector","add","vectors","subtract","scale","multiply","sub","setScalar","addScalar","subScalar","multiplyScalar","scalar","divideScalar","clampScalar","multiplyByScalar","elements","debug","validate","Error","valid","Number","isFinite"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {config, formatValue, equals, isArray} from '../../lib/common';\nimport assert from '../../lib/assert';\n\nexport default class MathArray extends Array {\n // Defined by derived class\n get ELEMENTS() {\n assert(false);\n return 0;\n }\n\n clone() {\n // @ts-ignore error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return new this.constructor().copy(this);\n }\n\n from(arrayOrObject) {\n // @ts-ignore error TS2339: Property 'copy' does not exist on type 'MathArray'.\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n fromArray(array, offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n to(arrayOrObject) {\n if (arrayOrObject === this) {\n return this;\n }\n // @ts-ignore error TS2339: Property 'toObject' does not exist on type 'MathArray'.\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target) {\n return target ? this.to(target) : this;\n }\n\n toArray(array = [], offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n array[offset + i] = this[i];\n }\n return array;\n }\n\n toFloat32Array() {\n return new Float32Array(this);\n }\n\n toString() {\n return this.formatString(config);\n }\n\n formatString(opts) {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n negate() {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n lerp(a, b, t) {\n if (t === undefined) {\n t = b;\n b = a;\n a = this; // eslint-disable-line\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n min(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n max(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector, maxVector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale) {\n if (Array.isArray(scale)) {\n // @ts-ignore error TS2339: Property 'multiply' does not exist on type 'MathArray'.\n return this.multiply(scale);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n return this.check();\n }\n\n // three.js compatibility\n\n sub(a) {\n return this.subtract(a);\n }\n\n setScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n addScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n subScalar(a) {\n return this.addScalar(-a);\n }\n\n multiplyScalar(scalar) {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n divideScalar(a) {\n return this.scale(1 / a);\n }\n\n clampScalar(min, max) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n // Cesium compatibility\n\n multiplyByScalar(scalar) {\n return this.scale(scalar);\n }\n\n // THREE.js compatibility\n get elements() {\n return this;\n }\n\n // Debug checks\n\n check() {\n if (config.debug && !this.validate()) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n validate() {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n}\n"],"file":"math-array.js"}
1
+ {"version":3,"sources":["../../../../src/classes/base/math-array.ts"],"names":["config","formatValue","equals","isArray","MathArray","Array","clone","constructor","copy","fromArray","array","offset","i","ELEMENTS","check","toArray","targetArray","from","arrayOrObject","fromObject","to","toObject","toTarget","target","toFloat32Array","Float32Array","toString","formatString","opts","string","printTypes","name","length","exactEquals","negate","lerp","a","b","t","undefined","ai","min","vector","Math","max","clamp","minVector","maxVector","add","vectors","subtract","scale","multiplyByScalar","scalar","debug","validate","Error","valid","Number","isFinite","sub","setScalar","addScalar","subScalar","multiplyScalar","divideScalar","clampScalar","elements"],"mappings":"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","sourcesContent":["// math.gl, MIT License\nimport {NumericArray} from '@math.gl/types';\nimport {ConfigurationOptions, config, formatValue, equals, isArray} from '../../lib/common';\n\n/** Base class for vectors and matrices */\nexport default abstract class MathArray extends Array<number> {\n /** Number of elements (values) in this array */\n abstract get ELEMENTS(): number;\n\n abstract copy(vector: Readonly<NumericArray>): this;\n\n abstract fromObject(object: object): this;\n\n // Common methods\n\n /**\n * Clone the current object\n * @returns a new copy of this object\n */\n clone(): this {\n // @ts-expect-error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return new this.constructor().copy(this); // eslint-disable-line\n }\n\n fromArray(array: Readonly<NumericArray>, offset: number = 0): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n toArray<TypedArray>(targetArray: TypedArray, offset?: number): TypedArray;\n toArray(targetArray?: number[], offset?: number): NumericArray;\n\n toArray(targetArray: NumericArray = [], offset: number = 0): NumericArray {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n targetArray[offset + i] = this[i];\n }\n return targetArray;\n }\n\n from(arrayOrObject: Readonly<NumericArray> | object): this {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n to<T extends NumericArray | object>(arrayOrObject: T): T {\n // @ts-ignore\n if (arrayOrObject === this) {\n return this;\n }\n // @ts-expect-error TS2339: Property 'toObject' does not exist on type 'MathArray'.\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target: any): any {\n return target ? this.to(target) : this;\n }\n\n /** @deprecated */\n toFloat32Array(): Float32Array {\n return new Float32Array(this);\n }\n\n toString(): string {\n return this.formatString(config);\n }\n\n /** Formats string according to options */\n formatString(opts: ConfigurationOptions): string {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array: Readonly<NumericArray>): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array: Readonly<NumericArray>): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n /** Negates all values in this object */\n negate(): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n /** Linearly interpolates between two values */\n lerp(a: Readonly<NumericArray>, t: number): this;\n lerp(a: Readonly<NumericArray>, b: Readonly<NumericArray>, t: number): this;\n\n lerp(a: Readonly<NumericArray>, b: Readonly<NumericArray> | number, t?: number): this {\n if (t === undefined) {\n return this.lerp(this, a, b as number);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n /** Minimal */\n min(vector: Readonly<NumericArray>): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n /** Maximal */\n max(vector: Readonly<NumericArray>): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector: Readonly<NumericArray>, maxVector: Readonly<NumericArray>): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors: Readonly<NumericArray>[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors: Readonly<NumericArray>[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale: number | Readonly<NumericArray>): this {\n if (typeof scale === 'number') {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n } else {\n for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {\n this[i] *= scale[i];\n }\n }\n return this.check();\n }\n\n /**\n * Multiplies all elements by `scale`\n * Note: `Matrix4.multiplyByScalar` only scales its 3x3 \"minor\"\n */\n multiplyByScalar(scalar: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n // Debug checks\n\n /** Throws an error if array length is incorrect or contains illegal values */\n check(): this {\n if (config.debug && !this.validate()) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n /** Returns false if the array length is incorrect or contains illegal values */\n validate(): boolean {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n\n // three.js compatibility\n\n /** @deprecated */\n sub(a: Readonly<NumericArray>): this {\n return this.subtract(a);\n }\n\n /** @deprecated */\n setScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n /** @deprecated */\n addScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n /** @deprecated */\n subScalar(a: number): this {\n return this.addScalar(-a);\n }\n\n /** @deprecated */\n multiplyScalar(scalar: number): this {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n /** @deprecated */\n divideScalar(a: number): this {\n return this.multiplyByScalar(1 / a);\n }\n\n /** @deprecated */\n clampScalar(min: number, max: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n /** @deprecated */\n get elements(): NumericArray {\n return this;\n }\n}\n"],"file":"math-array.js"}
@@ -1,18 +1,7 @@
1
1
  import MathArray from './math-array';
2
2
  import { checkNumber } from '../../lib/validators';
3
3
  import { config } from '../../lib/common';
4
- import assert from '../../lib/assert';
5
4
  export default class Matrix extends MathArray {
6
- get ELEMENTS() {
7
- assert(false);
8
- return 0;
9
- }
10
-
11
- get RANK() {
12
- assert(false);
13
- return 0;
14
- }
15
-
16
5
  toString() {
17
6
  let string = '[';
18
7
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/classes/base/matrix.js"],"names":["MathArray","checkNumber","config","assert","Matrix","ELEMENTS","RANK","toString","string","printRowMajor","row","col","i","getElementIndex","getElement","setElement","value","getColumn","columnIndex","result","Array","fill","firstIndex","setColumn","columnVector"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,cAAtB;AACA,SAAQC,WAAR,QAA0B,sBAA1B;AACA,SAAQC,MAAR,QAAqB,kBAArB;AACA,OAAOC,MAAP,MAAmB,kBAAnB;AAEA,eAAe,MAAMC,MAAN,SAAqBJ,SAArB,CAA+B;AAEhC,MAARK,QAAQ,GAAG;AACbF,IAAAA,MAAM,CAAC,KAAD,CAAN;AACA,WAAO,CAAP;AACD;;AAEO,MAAJG,IAAI,GAAG;AACTH,IAAAA,MAAM,CAAC,KAAD,CAAN;AACA,WAAO,CAAP;AACD;;AAaDI,EAAAA,QAAQ,GAAG;AACT,QAAIC,MAAM,GAAG,GAAb;;AACA,QAAIN,MAAM,CAACO,aAAX,EAA0B;AACxBD,MAAAA,MAAM,IAAI,YAAV;;AACA,WAAK,IAAIE,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,KAAKJ,IAA7B,EAAmC,EAAEI,GAArC,EAA0C;AACxC,aAAK,IAAIC,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,KAAKL,IAA7B,EAAmC,EAAEK,GAArC,EAA0C;AACxCH,UAAAA,MAAM,eAAQ,KAAKG,GAAG,GAAG,KAAKL,IAAX,GAAkBI,GAAvB,CAAR,CAAN;AACD;AACF;AACF,KAPD,MAOO;AACLF,MAAAA,MAAM,IAAI,eAAV;;AACA,WAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKP,QAAzB,EAAmC,EAAEO,CAArC,EAAwC;AACtCJ,QAAAA,MAAM,eAAQ,KAAKI,CAAL,CAAR,CAAN;AACD;AACF;;AACDJ,IAAAA,MAAM,IAAI,GAAV;AACA,WAAOA,MAAP;AACD;;AAEDK,EAAAA,eAAe,CAACH,GAAD,EAAMC,GAAN,EAAW;AACxB,WAAOA,GAAG,GAAG,KAAKL,IAAX,GAAkBI,GAAzB;AACD;;AAGDI,EAAAA,UAAU,CAACJ,GAAD,EAAMC,GAAN,EAAW;AACnB,WAAO,KAAKA,GAAG,GAAG,KAAKL,IAAX,GAAkBI,GAAvB,CAAP;AACD;;AAGDK,EAAAA,UAAU,CAACL,GAAD,EAAMC,GAAN,EAAWK,KAAX,EAAkB;AAC1B,SAAKL,GAAG,GAAG,KAAKL,IAAX,GAAkBI,GAAvB,IAA8BT,WAAW,CAACe,KAAD,CAAzC;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,SAAS,CAACC,WAAD,EAAcC,MAAM,GAAG,IAAIC,KAAJ,CAAU,KAAKd,IAAf,EAAqBe,IAArB,CAA0B,CAAC,CAA3B,CAAvB,EAAsD;AAC7D,UAAMC,UAAU,GAAGJ,WAAW,GAAG,KAAKZ,IAAtC;;AACA,SAAK,IAAIM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKN,IAAzB,EAA+B,EAAEM,CAAjC,EAAoC;AAClCO,MAAAA,MAAM,CAACP,CAAD,CAAN,GAAY,KAAKU,UAAU,GAAGV,CAAlB,CAAZ;AACD;;AACD,WAAOO,MAAP;AACD;;AAEDI,EAAAA,SAAS,CAACL,WAAD,EAAcM,YAAd,EAA4B;AACnC,UAAMF,UAAU,GAAGJ,WAAW,GAAG,KAAKZ,IAAtC;;AACA,SAAK,IAAIM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKN,IAAzB,EAA+B,EAAEM,CAAjC,EAAoC;AAClC,WAAKU,UAAU,GAAGV,CAAlB,IAAuBY,YAAY,CAACZ,CAAD,CAAnC;AACD;;AACD,WAAO,IAAP;AACD;;AAvE2C","sourcesContent":["import MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport {config} from '../../lib/common';\nimport assert from '../../lib/assert';\n\nexport default class Matrix extends MathArray {\n // Defined by derived class\n get ELEMENTS() {\n assert(false);\n return 0;\n }\n\n get RANK() {\n assert(false);\n return 0;\n }\n\n // fromObject(object) {\n // const array = object.elements;\n // return this.fromRowMajor(array);\n // }\n\n // toObject(object) {\n // const array = object.elements;\n // this.toRowMajor(array);\n // return object;\n // }\n\n toString() {\n let string = '[';\n if (config.printRowMajor) {\n string += 'row-major:';\n for (let row = 0; row < this.RANK; ++row) {\n for (let col = 0; col < this.RANK; ++col) {\n string += ` ${this[col * this.RANK + row]}`;\n }\n }\n } else {\n string += 'column-major:';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += ` ${this[i]}`;\n }\n }\n string += ']';\n return string;\n }\n\n getElementIndex(row, col) {\n return col * this.RANK + row;\n }\n\n // By default assumes row major indices\n getElement(row, col) {\n return this[col * this.RANK + row];\n }\n\n // By default assumes row major indices\n setElement(row, col, value) {\n this[col * this.RANK + row] = checkNumber(value);\n return this;\n }\n\n getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n result[i] = this[firstIndex + i];\n }\n return result;\n }\n\n setColumn(columnIndex, columnVector) {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n this[firstIndex + i] = columnVector[i];\n }\n return this;\n }\n}\n"],"file":"matrix.js"}
1
+ {"version":3,"sources":["../../../../src/classes/base/matrix.ts"],"names":["MathArray","checkNumber","config","Matrix","toString","string","printRowMajor","row","RANK","col","i","ELEMENTS","getElementIndex","getElement","setElement","value","getColumn","columnIndex","result","Array","fill","firstIndex","setColumn","columnVector"],"mappings":"AAGA,OAAOA,SAAP,MAAsB,cAAtB;AACA,SAAQC,WAAR,QAA0B,sBAA1B;AACA,SAAQC,MAAR,QAAqB,kBAArB;AAGA,eAAe,MAAeC,MAAf,SAA8BH,SAA9B,CAAwC;AAcrDI,EAAAA,QAAQ,GAAW;AACjB,QAAIC,MAAM,GAAG,GAAb;;AACA,QAAIH,MAAM,CAACI,aAAX,EAA0B;AACxBD,MAAAA,MAAM,IAAI,YAAV;;AACA,WAAK,IAAIE,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,KAAKC,IAA7B,EAAmC,EAAED,GAArC,EAA0C;AACxC,aAAK,IAAIE,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,KAAKD,IAA7B,EAAmC,EAAEC,GAArC,EAA0C;AACxCJ,UAAAA,MAAM,eAAQ,KAAKI,GAAG,GAAG,KAAKD,IAAX,GAAkBD,GAAvB,CAAR,CAAN;AACD;AACF;AACF,KAPD,MAOO;AACLF,MAAAA,MAAM,IAAI,eAAV;;AACA,WAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKC,QAAzB,EAAmC,EAAED,CAArC,EAAwC;AACtCL,QAAAA,MAAM,eAAQ,KAAKK,CAAL,CAAR,CAAN;AACD;AACF;;AACDL,IAAAA,MAAM,IAAI,GAAV;AACA,WAAOA,MAAP;AACD;;AAEDO,EAAAA,eAAe,CAACL,GAAD,EAAcE,GAAd,EAAmC;AAChD,WAAOA,GAAG,GAAG,KAAKD,IAAX,GAAkBD,GAAzB;AACD;;AAGDM,EAAAA,UAAU,CAACN,GAAD,EAAcE,GAAd,EAAmC;AAC3C,WAAO,KAAKA,GAAG,GAAG,KAAKD,IAAX,GAAkBD,GAAvB,CAAP;AACD;;AAGDO,EAAAA,UAAU,CAACP,GAAD,EAAcE,GAAd,EAA2BM,KAA3B,EAAgD;AACxD,SAAKN,GAAG,GAAG,KAAKD,IAAX,GAAkBD,GAAvB,IAA8BN,WAAW,CAACc,KAAD,CAAzC;AACA,WAAO,IAAP;AACD;;AAIDC,EAAAA,SAAS,CAACC,WAAD,EAAsBC,MAAgB,GAAG,IAAIC,KAAJ,CAAU,KAAKX,IAAf,EAAqBY,IAArB,CAA0B,CAAC,CAA3B,CAAzC,EAAkF;AACzF,UAAMC,UAAU,GAAGJ,WAAW,GAAG,KAAKT,IAAtC;;AACA,SAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKF,IAAzB,EAA+B,EAAEE,CAAjC,EAAoC;AAClCQ,MAAAA,MAAM,CAACR,CAAD,CAAN,GAAY,KAAKW,UAAU,GAAGX,CAAlB,CAAZ;AACD;;AACD,WAAOQ,MAAP;AACD;;AAEDI,EAAAA,SAAS,CAACL,WAAD,EAAsBM,YAAtB,EAAkE;AACzE,UAAMF,UAAU,GAAGJ,WAAW,GAAG,KAAKT,IAAtC;;AACA,SAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKF,IAAzB,EAA+B,EAAEE,CAAjC,EAAoC;AAClC,WAAKW,UAAU,GAAGX,CAAlB,IAAuBa,YAAY,CAACb,CAAD,CAAnC;AACD;;AACD,WAAO,IAAP;AACD;;AAhEoD","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport {config} from '../../lib/common';\n\n/** Base class for matrices */\nexport default abstract class Matrix extends MathArray {\n abstract get RANK(): number;\n\n // fromObject(object) {\n // const array = object.elements;\n // return this.fromRowMajor(array);\n // }\n // toObject(object) {\n // const array = object.elements;\n // this.toRowMajor(array);\n // return object;\n // }\n\n // TODO better override formatString?\n toString(): string {\n let string = '[';\n if (config.printRowMajor) {\n string += 'row-major:';\n for (let row = 0; row < this.RANK; ++row) {\n for (let col = 0; col < this.RANK; ++col) {\n string += ` ${this[col * this.RANK + row]}`;\n }\n }\n } else {\n string += 'column-major:';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += ` ${this[i]}`;\n }\n }\n string += ']';\n return string;\n }\n\n getElementIndex(row: number, col: number): number {\n return col * this.RANK + row;\n }\n\n // By default assumes row major indices\n getElement(row: number, col: number): number {\n return this[col * this.RANK + row];\n }\n\n // By default assumes row major indices\n setElement(row: number, col: number, value: number): this {\n this[col * this.RANK + row] = checkNumber(value);\n return this;\n }\n getColumn<NumArrayT>(columnIndex: number, result: NumArrayT): NumArrayT;\n getColumn(columnIndex: number): number[];\n\n getColumn(columnIndex: number, result: number[] = new Array(this.RANK).fill(-0)): number[] {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n result[i] = this[firstIndex + i];\n }\n return result;\n }\n\n setColumn(columnIndex: number, columnVector: Readonly<NumericArray>): this {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n this[firstIndex + i] = columnVector[i];\n }\n return this;\n }\n}\n"],"file":"matrix.js"}
@@ -2,16 +2,6 @@ import MathArray from './math-array';
2
2
  import { checkNumber } from '../../lib/validators';
3
3
  import assert from '../../lib/assert';
4
4
  export default class Vector extends MathArray {
5
- get ELEMENTS() {
6
- assert(false);
7
- return 0;
8
- }
9
-
10
- copy(vector) {
11
- assert(false);
12
- return this;
13
- }
14
-
15
5
  get x() {
16
6
  return this[0];
17
7
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/classes/base/vector.js"],"names":["MathArray","checkNumber","assert","Vector","ELEMENTS","copy","vector","x","value","y","len","Math","sqrt","lengthSquared","magnitude","length","i","magnitudeSquared","distance","mathArray","distanceSquared","dist","dot","product","normalize","check","multiply","vectors","divide","lengthSq","distanceTo","distanceToSquared","getComponent","setComponent","addVectors","a","b","add","subVectors","subtract","multiplyVectors","addScaledVector","constructor","multiplyScalar"],"mappings":"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","sourcesContent":["import MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport assert from '../../lib/assert';\n\nexport default class Vector extends MathArray {\n get ELEMENTS() {\n assert(false);\n return 0;\n }\n\n // VIRTUAL METHODS\n copy(vector) {\n assert(false);\n return this;\n }\n\n // ACCESSORS\n\n get x() {\n return this[0];\n }\n set x(value) {\n this[0] = checkNumber(value);\n }\n\n get y() {\n return this[1];\n }\n set y(value) {\n this[1] = checkNumber(value);\n }\n\n // NOTE: `length` is a reserved word for Arrays, so we can't use `v.length()`\n // Offer `len` and `magnitude`\n len() {\n return Math.sqrt(this.lengthSquared());\n }\n\n magnitude() {\n return this.len();\n }\n\n lengthSquared() {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n return length;\n }\n\n magnitudeSquared() {\n return this.lengthSquared();\n }\n\n distance(mathArray) {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n\n distanceSquared(mathArray) {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n return checkNumber(length);\n }\n\n dot(mathArray) {\n let product = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n return checkNumber(product);\n }\n\n // MODIFIERS\n\n normalize() {\n const length = this.magnitude();\n if (length !== 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n return this.check();\n }\n\n // negate() {\n // for (let i = 0; i < this.ELEMENTS; ++i) {\n // this[i] = -this[i];\n // }\n // return this.check();\n // }\n\n // inverse() {\n // for (let i = 0; i < this.ELEMENTS; ++i) {\n // this[i] = 1 / this[i];\n // }\n // return this.check();\n // }\n\n multiply(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n return this.check();\n }\n\n divide(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n return this.check();\n }\n\n // THREE.js compatibility\n lengthSq() {\n return this.lengthSquared();\n }\n\n distanceTo(vector) {\n return this.distance(vector);\n }\n\n distanceToSquared(vector) {\n return this.distanceSquared(vector);\n }\n\n getComponent(i) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n\n setComponent(i, value) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n\n addVectors(a, b) {\n return this.copy(a).add(b);\n }\n\n subVectors(a, b) {\n return this.copy(a).subtract(b);\n }\n\n multiplyVectors(a, b) {\n return this.copy(a).multiply(b);\n }\n\n addScaledVector(a, b) {\n // @ts-ignore error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n}\n"],"file":"vector.js"}
1
+ {"version":3,"sources":["../../../../src/classes/base/vector.ts"],"names":["MathArray","checkNumber","assert","Vector","x","value","y","len","Math","sqrt","lengthSquared","magnitude","length","i","ELEMENTS","magnitudeSquared","distance","mathArray","distanceSquared","dist","dot","product","normalize","check","multiply","vectors","vector","divide","lengthSq","distanceTo","distanceToSquared","getComponent","setComponent","addVectors","a","b","copy","add","subVectors","subtract","multiplyVectors","addScaledVector","constructor","multiplyScalar"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport assert from '../../lib/assert';\n\n/** Base class for vectors with at least 2 elements */\nexport default abstract class Vector extends MathArray {\n // ACCESSORS\n\n get x(): number {\n return this[0];\n }\n\n set x(value: number) {\n this[0] = checkNumber(value);\n }\n\n get y(): number {\n return this[1];\n }\n\n set y(value: number) {\n this[1] = checkNumber(value);\n }\n\n /**\n * Returns the length of the vector from the origin to the point described by this vector\n *\n * @note `length` is a reserved word for Arrays, so `v.length()` will return number of elements\n * Instead we provide `len` and `magnitude`\n */\n len(): number {\n return Math.sqrt(this.lengthSquared());\n }\n\n /**\n * Returns the length of the vector from the origin to the point described by this vector\n */\n magnitude(): number {\n return this.len();\n }\n\n /**\n * Returns the squared length of the vector from the origin to the point described by this vector\n */\n lengthSquared(): number {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n return length;\n }\n\n /**\n * Returns the squared length of the vector from the origin to the point described by this vector\n */\n magnitudeSquared(): number {\n return this.lengthSquared();\n }\n\n distance(mathArray: Readonly<NumericArray>): number {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n\n distanceSquared(mathArray: Readonly<NumericArray>): number {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n return checkNumber(length);\n }\n\n dot(mathArray: Readonly<NumericArray>): number {\n let product = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n return checkNumber(product);\n }\n\n // MODIFIERS\n\n normalize(): this {\n const length = this.magnitude();\n if (length !== 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n return this.check();\n }\n\n multiply(...vectors: Readonly<NumericArray>[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n return this.check();\n }\n\n divide(...vectors: Readonly<NumericArray>[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n return this.check();\n }\n\n // THREE.js compatibility\n\n lengthSq(): number {\n return this.lengthSquared();\n }\n distanceTo(vector: Readonly<NumericArray>): number {\n return this.distance(vector);\n }\n distanceToSquared(vector: Readonly<NumericArray>): number {\n return this.distanceSquared(vector);\n }\n\n getComponent(i: number): number {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n\n setComponent(i: number, value: number): this {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n\n addVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this {\n return this.copy(a).add(b);\n }\n\n subVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this {\n return this.copy(a).subtract(b);\n }\n\n multiplyVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this {\n return this.copy(a).multiply(b);\n }\n\n addScaledVector(a: Readonly<NumericArray>, b: number): this {\n // @ts-expect-error error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n}\n"],"file":"vector.js"}
@@ -1,61 +1,59 @@
1
1
  import MathArray from './base/math-array';
2
+ import Quaternion from './quaternion';
2
3
  import { clamp } from '../lib/common';
3
4
  import { checkNumber } from '../lib/validators';
4
- import Quaternion from './quaternion';
5
5
  const ERR_UNKNOWN_ORDER = 'Unknown Euler angle order';
6
6
  const ALMOST_ONE = 0.99999;
7
+ var RotationOrder;
7
8
 
8
- function validateOrder(value) {
9
- return value >= 0 && value < 6;
10
- }
11
-
12
- function checkOrder(value) {
13
- if (value < 0 && value >= 6) {
14
- throw new Error(ERR_UNKNOWN_ORDER);
15
- }
16
-
17
- return value;
18
- }
9
+ (function (RotationOrder) {
10
+ RotationOrder[RotationOrder["ZYX"] = 0] = "ZYX";
11
+ RotationOrder[RotationOrder["YXZ"] = 1] = "YXZ";
12
+ RotationOrder[RotationOrder["XZY"] = 2] = "XZY";
13
+ RotationOrder[RotationOrder["ZXY"] = 3] = "ZXY";
14
+ RotationOrder[RotationOrder["YZX"] = 4] = "YZX";
15
+ RotationOrder[RotationOrder["XYZ"] = 5] = "XYZ";
16
+ })(RotationOrder || (RotationOrder = {}));
19
17
 
20
18
  export default class Euler extends MathArray {
21
19
  static get ZYX() {
22
- return 0;
20
+ return RotationOrder.ZYX;
23
21
  }
24
22
 
25
23
  static get YXZ() {
26
- return 1;
24
+ return RotationOrder.YXZ;
27
25
  }
28
26
 
29
27
  static get XZY() {
30
- return 2;
28
+ return RotationOrder.XZY;
31
29
  }
32
30
 
33
31
  static get ZXY() {
34
- return 3;
32
+ return RotationOrder.ZXY;
35
33
  }
36
34
 
37
35
  static get YZX() {
38
- return 4;
36
+ return RotationOrder.YZX;
39
37
  }
40
38
 
41
39
  static get XYZ() {
42
- return 5;
40
+ return RotationOrder.XYZ;
43
41
  }
44
42
 
45
43
  static get RollPitchYaw() {
46
- return 0;
44
+ return RotationOrder.ZYX;
47
45
  }
48
46
 
49
47
  static get DefaultOrder() {
50
- return Euler.ZYX;
48
+ return RotationOrder.ZYX;
51
49
  }
52
50
 
53
51
  static get RotationOrders() {
54
- return ['ZYX', 'YXZ', 'XZY', 'ZXY', 'YZX', 'XYZ'];
52
+ return RotationOrder;
55
53
  }
56
54
 
57
55
  static rotationOrder(order) {
58
- return Euler.RotationOrders[order];
56
+ return RotationOrder[order];
59
57
  }
60
58
 
61
59
  get ELEMENTS() {
@@ -75,17 +73,21 @@ export default class Euler extends MathArray {
75
73
  fromQuaternion(quaternion) {
76
74
  const [x, y, z, w] = quaternion;
77
75
  const ysqr = y * y;
78
- const t0 = -2.0 * (ysqr + z * z) + 1.0;
79
- const t1 = +2.0 * (x * y + w * z);
80
- let t2 = -2.0 * (x * z - w * y);
81
- const t3 = +2.0 * (y * z + w * x);
82
- const t4 = -2.0 * (x * x + ysqr) + 1.0;
83
- t2 = t2 > 1.0 ? 1.0 : t2;
84
- t2 = t2 < -1.0 ? -1.0 : t2;
76
+ const t0 = -2 * (ysqr + z * z) + 1;
77
+ const t1 = +2 * (x * y + w * z);
78
+ let t2 = -2 * (x * z - w * y);
79
+ const t3 = +2 * (y * z + w * x);
80
+ const t4 = -2 * (x * x + ysqr) + 1;
81
+ t2 = t2 > 1 ? 1 : t2;
82
+ t2 = t2 < -1 ? -1 : t2;
85
83
  const roll = Math.atan2(t3, t4);
86
84
  const pitch = Math.asin(t2);
87
85
  const yaw = Math.atan2(t1, t0);
88
- return new Euler(roll, pitch, yaw, Euler.RollPitchYaw);
86
+ return this.set(roll, pitch, yaw, Euler.RollPitchYaw);
87
+ }
88
+
89
+ fromObject(object) {
90
+ throw new Error('not implemented');
89
91
  }
90
92
 
91
93
  copy(array) {
@@ -251,7 +253,7 @@ export default class Euler extends MathArray {
251
253
  }
252
254
 
253
255
  fromRollPitchYaw(roll, pitch, yaw) {
254
- return this.set(roll, pitch, yaw, Euler.ZYX);
256
+ return this.set(roll, pitch, yaw, RotationOrder.ZYX);
255
257
  }
256
258
 
257
259
  fromRotationMatrix(m, order = Euler.DefaultOrder) {
@@ -267,23 +269,23 @@ export default class Euler extends MathArray {
267
269
  getQuaternion() {
268
270
  const q = new Quaternion();
269
271
 
270
- switch (this[3]) {
271
- case Euler.XYZ:
272
+ switch (this[4]) {
273
+ case RotationOrder.XYZ:
272
274
  return q.rotateX(this[0]).rotateY(this[1]).rotateZ(this[2]);
273
275
 
274
- case Euler.YXZ:
276
+ case RotationOrder.YXZ:
275
277
  return q.rotateY(this[0]).rotateX(this[1]).rotateZ(this[2]);
276
278
 
277
- case Euler.ZXY:
279
+ case RotationOrder.ZXY:
278
280
  return q.rotateZ(this[0]).rotateX(this[1]).rotateY(this[2]);
279
281
 
280
- case Euler.ZYX:
282
+ case RotationOrder.ZYX:
281
283
  return q.rotateZ(this[0]).rotateY(this[1]).rotateX(this[2]);
282
284
 
283
- case Euler.YZX:
285
+ case RotationOrder.YZX:
284
286
  return q.rotateY(this[0]).rotateZ(this[1]).rotateX(this[2]);
285
287
 
286
- case Euler.XZY:
288
+ case RotationOrder.XZY:
287
289
  return q.rotateX(this[0]).rotateZ(this[1]).rotateY(this[2]);
288
290
 
289
291
  default:
@@ -292,16 +294,15 @@ export default class Euler extends MathArray {
292
294
  }
293
295
 
294
296
  _fromRotationMatrix(m, order = Euler.DefaultOrder) {
295
- const te = m.elements;
296
- const m11 = te[0],
297
- m12 = te[4],
298
- m13 = te[8];
299
- const m21 = te[1],
300
- m22 = te[5],
301
- m23 = te[9];
302
- const m31 = te[2],
303
- m32 = te[6],
304
- m33 = te[10];
297
+ const m11 = m[0],
298
+ m12 = m[4],
299
+ m13 = m[8];
300
+ const m21 = m[1],
301
+ m22 = m[5],
302
+ m23 = m[9];
303
+ const m31 = m[2],
304
+ m32 = m[6],
305
+ m33 = m[10];
305
306
  order = order || this[3];
306
307
 
307
308
  switch (order) {
@@ -541,4 +542,16 @@ export default class Euler extends MathArray {
541
542
  }
542
543
 
543
544
  }
545
+
546
+ function validateOrder(value) {
547
+ return value >= 0 && value < 6;
548
+ }
549
+
550
+ function checkOrder(value) {
551
+ if (value < 0 && value >= 6) {
552
+ throw new Error(ERR_UNKNOWN_ORDER);
553
+ }
554
+
555
+ return value;
556
+ }
544
557
  //# sourceMappingURL=euler.js.map