@math.gl/core 3.5.3 → 3.6.0-alpha.1
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.
- package/dist/classes/base/math-array.d.ts +36 -0
- package/dist/classes/base/math-array.d.ts.map +1 -0
- package/dist/classes/base/math-array.js +214 -0
- package/dist/classes/base/matrix.d.ts +12 -0
- package/dist/classes/base/matrix.d.ts.map +1 -0
- package/dist/classes/base/matrix.js +69 -0
- package/dist/classes/base/vector.d.ts +32 -0
- package/dist/classes/base/vector.d.ts.map +1 -0
- package/dist/classes/base/vector.js +133 -0
- package/dist/classes/euler.d.ts +73 -0
- package/dist/classes/euler.d.ts.map +1 -0
- package/dist/classes/euler.js +505 -0
- package/dist/classes/matrix3.d.ts +43 -0
- package/dist/classes/matrix3.d.ts.map +1 -0
- package/dist/classes/matrix3.js +192 -0
- package/dist/classes/matrix4.d.ts +102 -0
- package/dist/classes/matrix4.d.ts.map +1 -0
- package/dist/classes/matrix4.js +457 -0
- package/dist/classes/pose.d.ts +37 -0
- package/dist/classes/pose.d.ts.map +1 -0
- package/dist/classes/pose.js +126 -0
- package/dist/classes/quaternion.d.ts +42 -0
- package/dist/classes/quaternion.d.ts.map +1 -0
- package/dist/classes/quaternion.js +266 -0
- package/dist/classes/spherical-coordinates.d.ts +40 -0
- package/dist/classes/spherical-coordinates.d.ts.map +1 -0
- package/dist/classes/spherical-coordinates.js +142 -0
- package/dist/classes/vector2.d.ts +19 -0
- package/dist/classes/vector2.d.ts.map +1 -0
- package/dist/classes/vector2.js +105 -0
- package/dist/classes/vector3.d.ts +41 -0
- package/dist/classes/vector3.d.ts.map +1 -0
- package/dist/classes/vector3.js +147 -0
- package/dist/classes/vector4.d.ts +23 -0
- package/dist/classes/vector4.d.ts.map +1 -0
- package/dist/classes/vector4.js +126 -0
- package/dist/es5/classes/base/math-array.d.js +46 -0
- package/dist/es5/classes/base/math-array.d.js.map +1 -0
- package/dist/es5/classes/base/math-array.js +178 -251
- package/dist/es5/classes/base/math-array.js.map +1 -1
- package/dist/es5/classes/base/matrix.d.js +15 -0
- package/dist/es5/classes/base/matrix.d.js.map +1 -0
- package/dist/es5/classes/base/matrix.js +54 -88
- package/dist/es5/classes/base/matrix.js.map +1 -1
- package/dist/es5/classes/base/vector.d.js +24 -0
- package/dist/es5/classes/base/vector.d.js.map +1 -0
- package/dist/es5/classes/base/vector.js +121 -179
- package/dist/es5/classes/base/vector.js.map +1 -1
- package/dist/es5/classes/euler.d.js +45 -0
- package/dist/es5/classes/euler.d.js.map +1 -0
- package/dist/es5/classes/euler.js +468 -549
- package/dist/es5/classes/euler.js.map +1 -1
- package/dist/es5/classes/matrix3.d.js +25 -0
- package/dist/es5/classes/matrix3.d.js.map +1 -0
- package/dist/es5/classes/matrix3.js +157 -206
- package/dist/es5/classes/matrix3.js.map +1 -1
- package/dist/es5/classes/matrix4.d.js +25 -0
- package/dist/es5/classes/matrix4.d.js.map +1 -0
- package/dist/es5/classes/matrix4.js +410 -500
- package/dist/es5/classes/matrix4.js.map +1 -1
- package/dist/es5/classes/pose.d.js +25 -0
- package/dist/es5/classes/pose.d.js.map +1 -0
- package/dist/es5/classes/pose.js +101 -125
- package/dist/es5/classes/pose.js.map +1 -1
- package/dist/es5/classes/quaternion.d.js +27 -0
- package/dist/es5/classes/quaternion.d.js.map +1 -0
- package/dist/es5/classes/quaternion.js +213 -277
- package/dist/es5/classes/quaternion.js.map +1 -1
- package/dist/es5/classes/spherical-coordinates.d.js +27 -0
- package/dist/es5/classes/spherical-coordinates.d.js.map +1 -0
- package/dist/es5/classes/spherical-coordinates.js +125 -166
- package/dist/es5/classes/spherical-coordinates.js.map +1 -1
- package/dist/es5/classes/vector2.d.js +18 -0
- package/dist/es5/classes/vector2.d.js.map +1 -0
- package/dist/es5/classes/vector2.js +76 -118
- package/dist/es5/classes/vector2.js.map +1 -1
- package/dist/es5/classes/vector3.d.js +24 -0
- package/dist/es5/classes/vector3.d.js.map +1 -0
- package/dist/es5/classes/vector3.js +120 -167
- package/dist/es5/classes/vector3.js.map +1 -1
- package/dist/es5/classes/vector4.d.js +25 -0
- package/dist/es5/classes/vector4.d.js.map +1 -0
- package/dist/es5/classes/vector4.js +95 -137
- package/dist/es5/classes/vector4.js.map +1 -1
- package/dist/es5/docs/README.md +0 -0
- package/dist/es5/index.js +105 -123
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/assert.js.map +1 -1
- package/dist/es5/lib/common.js +55 -84
- package/dist/es5/lib/common.js.map +1 -1
- package/dist/es5/lib/gl-matrix-extras.js +14 -14
- package/dist/es5/lib/gl-matrix-extras.js.map +1 -1
- package/dist/es5/lib/math-utils.js.map +1 -1
- package/dist/es5/lib/validators.js +3 -5
- package/dist/es5/lib/validators.js.map +1 -1
- package/dist/esm/classes/base/math-array.d.js +36 -0
- package/dist/esm/classes/base/math-array.d.js.map +1 -0
- package/dist/esm/classes/base/matrix.d.js +3 -0
- package/dist/esm/classes/base/matrix.d.js.map +1 -0
- package/dist/esm/classes/base/vector.d.js +13 -0
- package/dist/esm/classes/base/vector.d.js.map +1 -0
- package/dist/esm/classes/euler.d.js +55 -0
- package/dist/esm/classes/euler.d.js.map +1 -0
- package/dist/esm/classes/euler.js +1 -1
- package/dist/esm/classes/euler.js.map +1 -1
- package/dist/esm/classes/matrix3.d.js +15 -0
- package/dist/esm/classes/matrix3.d.js.map +1 -0
- package/dist/esm/classes/matrix4.d.js +15 -0
- package/dist/esm/classes/matrix4.d.js.map +1 -0
- package/dist/esm/classes/pose.d.js +18 -0
- package/dist/esm/classes/pose.d.js.map +1 -0
- package/dist/esm/classes/quaternion.d.js +19 -0
- package/dist/esm/classes/quaternion.d.js.map +1 -0
- package/dist/esm/classes/spherical-coordinates.d.js +22 -0
- package/dist/esm/classes/spherical-coordinates.d.js.map +1 -0
- package/dist/esm/classes/vector2.d.js +6 -0
- package/dist/esm/classes/vector2.d.js.map +1 -0
- package/dist/esm/classes/vector3.d.js +13 -0
- package/dist/esm/classes/vector3.d.js.map +1 -0
- package/dist/esm/classes/vector4.d.js +15 -0
- package/dist/esm/classes/vector4.d.js.map +1 -0
- package/dist/esm/docs/README.md +0 -0
- package/dist/esm/index.js +2 -13
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/assert.js.map +1 -1
- package/dist/esm/lib/common.js +34 -37
- package/dist/esm/lib/common.js.map +1 -1
- package/dist/esm/lib/gl-matrix-extras.js.map +1 -1
- package/dist/esm/lib/math-utils.js.map +1 -1
- package/dist/esm/lib/validators.js.map +1 -1
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/lib/assert.d.ts +2 -0
- package/dist/lib/assert.d.ts.map +1 -0
- package/dist/lib/assert.js +5 -0
- package/dist/lib/common.d.ts +90 -0
- package/dist/lib/common.d.ts.map +1 -0
- package/dist/lib/common.js +223 -0
- package/dist/lib/gl-matrix-extras.d.ts +6 -0
- package/dist/lib/gl-matrix-extras.d.ts.map +1 -0
- package/dist/lib/gl-matrix-extras.js +50 -0
- package/dist/lib/math-utils.d.ts +28 -0
- package/dist/lib/math-utils.d.ts.map +1 -0
- package/dist/lib/math-utils.js +28 -0
- package/dist/lib/validators.d.ts +5 -0
- package/dist/lib/validators.d.ts.map +1 -0
- package/dist/lib/validators.js +52 -0
- package/package.json +5 -4
- package/src/classes/base/math-array.d.ts +0 -1
- package/src/classes/euler.js +1 -1
- package/src/docs/README.md +0 -0
- package/{dist/esm/index.d.ts → src/index.ts} +32 -34
- package/src/lib/{assert.js → assert.ts} +1 -1
- package/src/lib/common.ts +283 -0
- package/src/lib/{gl-matrix-extras.js → gl-matrix-extras.ts} +0 -0
- package/src/lib/{math-utils.js → math-utils.ts} +0 -0
- package/src/lib/{validators.js → validators.ts} +0 -0
- package/dist/es5/addons/polygon.d.ts +0 -17
- package/dist/es5/classes/base/math-array.d.ts +0 -56
- package/dist/es5/classes/base/matrix.d.ts +0 -15
- package/dist/es5/classes/base/vector.d.ts +0 -45
- package/dist/es5/classes/euler.d.ts +0 -92
- package/dist/es5/classes/matrix3.d.ts +0 -91
- package/dist/es5/classes/matrix4.d.ts +0 -161
- package/dist/es5/classes/pose.d.ts +0 -92
- package/dist/es5/classes/quaternion.d.ts +0 -107
- package/dist/es5/classes/spherical-coordinates.d.ts +0 -87
- package/dist/es5/classes/vector2.d.ts +0 -65
- package/dist/es5/classes/vector3.d.ts +0 -65
- package/dist/es5/classes/vector4.d.ts +0 -34
- package/dist/es5/index.d.ts +0 -54
- package/dist/es5/lib/common.d.ts +0 -80
- package/dist/esm/addons/polygon.d.ts +0 -17
- package/dist/esm/classes/base/math-array.d.ts +0 -56
- package/dist/esm/classes/base/matrix.d.ts +0 -15
- package/dist/esm/classes/base/vector.d.ts +0 -45
- package/dist/esm/classes/euler.d.ts +0 -92
- package/dist/esm/classes/matrix3.d.ts +0 -91
- package/dist/esm/classes/matrix4.d.ts +0 -161
- package/dist/esm/classes/pose.d.ts +0 -92
- package/dist/esm/classes/quaternion.d.ts +0 -107
- package/dist/esm/classes/spherical-coordinates.d.ts +0 -87
- package/dist/esm/classes/vector2.d.ts +0 -65
- package/dist/esm/classes/vector3.d.ts +0 -65
- package/dist/esm/classes/vector4.d.ts +0 -34
- package/dist/esm/lib/common.d.ts +0 -80
- package/src/addons/polygon.d.ts +0 -17
- package/src/index.d.ts +0 -54
- package/src/index.js +0 -86
- package/src/lib/common.d.ts +0 -80
- package/src/lib/common.js +0 -222
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/euler.js"],"names":["MathArray","clamp","checkNumber","Quaternion","ERR_UNKNOWN_ORDER","ALMOST_ONE","validateOrder","value","checkOrder","Error","Euler","ZYX","YXZ","XZY","ZXY","YZX","XYZ","RollPitchYaw","DefaultOrder","RotationOrders","rotationOrder","order","ELEMENTS","constructor","x","y","z","arguments","length","Array","isArray","fromVector3","set","fromQuaternion","quaternion","w","ysqr","t0","t1","t2","t3","t4","roll","Math","atan2","pitch","asin","yaw","copy","array","Number","isFinite","check","validate","toArray","offset","toArray4","toVector3","result","alpha","beta","gamma","phi","theta","psi","v","fromArray","undefined","fromRollPitchYaw","fromRotationMatrix","m","_fromRotationMatrix","getRotationMatrix","_getRotationMatrix","getQuaternion","q","rotateX","rotateY","rotateZ","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","abs","a","cos","c","e","b","sin","d","f","ae","af","be","bf","ce","cf","de","df","ac","ad","bc","bd","toQuaternion","cy","sy","cr","sr","cp","sp"],"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 MathArray from './base/math-array';\nimport {clamp} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport Quaternion from './quaternion';\n\n// Internal constants\nconst ERR_UNKNOWN_ORDER = 'Unknown Euler angle order';\nconst ALMOST_ONE = 0.99999;\n\nfunction validateOrder(value) {\n return value >= 0 && value < 6;\n}\n\nfunction checkOrder(value) {\n if (value < 0 && value >= 6) {\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n return value;\n}\n\nexport default class Euler extends MathArray {\n // static XYZ = 0;\n // static YZX = 1;\n // static ZXY = 2;\n // static XZY = 3;\n // static YXZ = 4;\n // static ZYX = 5;\n // static RollPitchYaw = 0;\n // static DefaultOrder = 0;\n\n // Constants\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n static get ZYX() {\n return 0;\n }\n\n static get YXZ() {\n return 1;\n }\n\n static get XZY() {\n return 2;\n }\n\n static get ZXY() {\n return 3;\n }\n\n static get YZX() {\n return 4;\n }\n\n static get XYZ() {\n return 5;\n }\n\n static get RollPitchYaw() {\n return 0;\n }\n\n static get DefaultOrder() {\n return Euler.ZYX;\n }\n\n static get RotationOrders() {\n return ['ZYX', 'YXZ', 'XZY', 'ZXY', 'YZX', 'XYZ'];\n }\n\n static rotationOrder(order) {\n return Euler.RotationOrders[order];\n }\n\n get ELEMENTS() {\n return 4;\n }\n\n /* eslint-enable no-multi-spaces, brace-style, no-return-assign */\n\n /**\n * @class\n * @param {Number | Number[]} x\n * @param {Number=} [y]\n * @param {Number=} [z]\n * @param {Number=} [order]\n */\n constructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0);\n // eslint-disable-next-line prefer-rest-params\n if (arguments.length > 0 && Array.isArray(arguments[0])) {\n // eslint-disable-next-line prefer-rest-params\n this.fromVector3(...arguments);\n } else {\n // @ts-ignore error TS2345: Argument of type 'number | [number, number, number, number]' not assignable to 'number'\n this.set(x, y, z, order);\n }\n }\n\n fromQuaternion(quaternion) {\n const [x, y, z, w] = quaternion;\n const ysqr = y * y;\n const t0 = -2.0 * (ysqr + z * z) + 1.0;\n const t1 = +2.0 * (x * y + w * z);\n let t2 = -2.0 * (x * z - w * y);\n const t3 = +2.0 * (y * z + w * x);\n const t4 = -2.0 * (x * x + ysqr) + 1.0;\n\n t2 = t2 > 1.0 ? 1.0 : t2;\n t2 = t2 < -1.0 ? -1.0 : t2;\n\n const roll = Math.atan2(t3, t4);\n const pitch = Math.asin(t2);\n const yaw = Math.atan2(t1, t0);\n\n return new Euler(roll, pitch, yaw, Euler.RollPitchYaw);\n }\n\n // fromQuaternion(q, order) {\n // this._fromRotationMat[-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n // return this.check();\n // }\n\n // If copied array does contain fourth element, preserves currently set order\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = Number.isFinite(array[3]) || this.order;\n return this.check();\n }\n\n // Sets the three angles, and optionally sets the rotation order\n // If order is not specified, preserves currently set order\n set(x = 0, y = 0, z = 0, order) {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n this[3] = Number.isFinite(order) ? order : this[3];\n return this.check();\n }\n\n validate() {\n return (\n validateOrder(this[3]) &&\n Number.isFinite(this[0]) &&\n Number.isFinite(this[1]) &&\n Number.isFinite(this[2])\n );\n }\n\n // Does not copy the orientation element\n toArray(array = [], offset = 0) {\n array[offset] = this[0];\n array[offset + 1] = this[1];\n array[offset + 2] = this[2];\n return array;\n }\n\n // Copies the orientation element\n toArray4(array = [], offset = 0) {\n array[offset] = this[0];\n array[offset + 1] = this[1];\n array[offset + 2] = this[2];\n array[offset + 3] = this[3];\n return array;\n }\n\n toVector3(result = [-0, -0, -0]) {\n result[0] = this[0];\n result[1] = this[1];\n result[2] = this[2];\n return result;\n }\n\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n\n // x, y, z angle notation (note: only corresponds to axis in XYZ orientation)\n /** @type {number} */\n get x() {\n return this[0];\n }\n\n set x(value) {\n this[0] = checkNumber(value);\n }\n\n /** @type {number} */\n get y() {\n return this[1];\n }\n\n set y(value) {\n this[1] = checkNumber(value);\n }\n\n /** @type {number} */\n get z() {\n return this[2];\n }\n\n set z(value) {\n this[2] = checkNumber(value);\n }\n\n // alpha, beta, gamma angle notation\n get alpha() {\n return this[0];\n }\n\n set alpha(value) {\n this[0] = checkNumber(value);\n }\n\n get beta() {\n return this[1];\n }\n\n set beta(value) {\n this[1] = checkNumber(value);\n }\n\n get gamma() {\n return this[2];\n }\n\n set gamma(value) {\n this[2] = checkNumber(value);\n }\n\n // phi, theta, psi angle notation\n get phi() {\n return this[0];\n }\n\n set phi(value) {\n this[0] = checkNumber(value);\n }\n\n get theta() {\n return this[1];\n }\n\n set theta(value) {\n this[1] = checkNumber(value);\n }\n\n get psi() {\n return this[2];\n }\n\n set psi(value) {\n this[2] = checkNumber(value);\n }\n\n // roll, pitch, yaw angle notation\n /** @type {number} */\n get roll() {\n return this[0];\n }\n\n set roll(value) {\n this[0] = checkNumber(value);\n }\n\n /** @type {number} */\n get pitch() {\n return this[1];\n }\n\n set pitch(value) {\n this[1] = checkNumber(value);\n }\n\n /** @type {number} */\n get yaw() {\n return this[2];\n }\n\n set yaw(value) {\n this[2] = checkNumber(value);\n }\n\n // rotation order, in all three angle notations\n get order() {\n return this[3];\n }\n\n set order(value) {\n this[3] = checkOrder(value);\n }\n\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n\n // Constructors\n fromVector3(v, order) {\n return this.set(v[0], v[1], v[2], Number.isFinite(order) ? order : this[3]);\n }\n\n // TODO - with and without 4th element\n fromArray(array, offset = 0) {\n this[0] = array[0 + offset];\n this[1] = array[1 + offset];\n this[2] = array[2 + offset];\n if (array[3] !== undefined) {\n this[3] = array[3];\n }\n return this.check();\n }\n\n // Common ZYX rotation order\n fromRollPitchYaw(roll, pitch, yaw) {\n return this.set(roll, pitch, yaw, Euler.ZYX);\n }\n\n fromRotationMatrix(m, order = Euler.DefaultOrder) {\n this._fromRotationMatrix(m, order);\n return this.check();\n }\n\n // ACCESSORS\n\n getRotationMatrix(m) {\n return this._getRotationMatrix(m);\n }\n\n // TODO - move to Quaternion\n getQuaternion() {\n const q = new Quaternion();\n switch (this[4]) {\n case Euler.XYZ:\n return q.rotateX(this[0]).rotateY(this[1]).rotateZ(this[2]);\n case Euler.YXZ:\n return q.rotateY(this[0]).rotateX(this[1]).rotateZ(this[2]);\n case Euler.ZXY:\n return q.rotateZ(this[0]).rotateX(this[1]).rotateY(this[2]);\n case Euler.ZYX:\n return q.rotateZ(this[0]).rotateY(this[1]).rotateX(this[2]);\n case Euler.YZX:\n return q.rotateY(this[0]).rotateZ(this[1]).rotateX(this[2]);\n case Euler.XZY:\n return q.rotateX(this[0]).rotateZ(this[1]).rotateY(this[2]);\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n }\n\n // INTERNAL METHODS\n\n // Concersion from Euler to rotation matrix and from matrix to Euler\n // Adapted from three.js under MIT license\n\n // // WARNING: this discards revolution information -bhouston\n // reorder(newOrder) {\n // const q = new Quaternion().setFromEuler(this);\n // return this.setFromQuaternion(q, newOrder);\n\n /* eslint-disable complexity, max-statements, one-var */\n _fromRotationMatrix(m, order = Euler.DefaultOrder) {\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const te = m.elements;\n const m11 = te[0],\n m12 = te[4],\n m13 = te[8];\n const m21 = te[1],\n m22 = te[5],\n m23 = te[9];\n const m31 = te[2],\n m32 = te[6],\n m33 = te[10];\n\n order = order || this[3];\n\n switch (order) {\n case Euler.XYZ:\n this[1] = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < ALMOST_ONE) {\n this[0] = Math.atan2(-m23, m33);\n this[2] = Math.atan2(-m12, m11);\n } else {\n this[0] = Math.atan2(m32, m22);\n this[2] = 0;\n }\n break;\n\n case Euler.YXZ:\n this[0] = Math.asin(-clamp(m23, -1, 1));\n\n if (Math.abs(m23) < ALMOST_ONE) {\n this[1] = Math.atan2(m13, m33);\n this[2] = Math.atan2(m21, m22);\n } else {\n this[1] = Math.atan2(-m31, m11);\n this[2] = 0;\n }\n break;\n\n case Euler.ZXY:\n this[0] = Math.asin(clamp(m32, -1, 1));\n\n if (Math.abs(m32) < ALMOST_ONE) {\n this[1] = Math.atan2(-m31, m33);\n this[2] = Math.atan2(-m12, m22);\n } else {\n this[1] = 0;\n this[2] = Math.atan2(m21, m11);\n }\n break;\n\n case Euler.ZYX:\n this[1] = Math.asin(-clamp(m31, -1, 1));\n\n if (Math.abs(m31) < ALMOST_ONE) {\n this[0] = Math.atan2(m32, m33);\n this[2] = Math.atan2(m21, m11);\n } else {\n this[0] = 0;\n this[2] = Math.atan2(-m12, m22);\n }\n break;\n\n case Euler.YZX:\n this[2] = Math.asin(clamp(m21, -1, 1));\n\n if (Math.abs(m21) < ALMOST_ONE) {\n this[0] = Math.atan2(-m23, m22);\n this[1] = Math.atan2(-m31, m11);\n } else {\n this[0] = 0;\n this[1] = Math.atan2(m13, m33);\n }\n break;\n\n case Euler.XZY:\n this[2] = Math.asin(-clamp(m12, -1, 1));\n\n if (Math.abs(m12) < ALMOST_ONE) {\n this[0] = Math.atan2(m32, m22);\n this[1] = Math.atan2(m13, m11);\n } else {\n this[0] = Math.atan2(-m23, m33);\n this[1] = 0;\n }\n break;\n\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n\n this[3] = order;\n\n return this;\n }\n\n _getRotationMatrix(result) {\n const te = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n\n const x = this.x,\n y = this.y,\n z = this.z;\n const a = Math.cos(x);\n const c = Math.cos(y);\n const e = Math.cos(z);\n const b = Math.sin(x);\n const d = Math.sin(y);\n const f = Math.sin(z);\n\n switch (this[3]) {\n case Euler.XYZ: {\n const ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n\n te[0] = c * e;\n te[4] = -c * f;\n te[8] = d;\n\n te[1] = af + be * d;\n te[5] = ae - bf * d;\n te[9] = -b * c;\n\n te[2] = bf - ae * d;\n te[6] = be + af * d;\n te[10] = a * c;\n break;\n }\n\n case Euler.YXZ: {\n const ce = c * e,\n cf = c * f,\n de = d * e,\n df = d * f;\n\n te[0] = ce + df * b;\n te[4] = de * b - cf;\n te[8] = a * d;\n\n te[1] = a * f;\n te[5] = a * e;\n te[9] = -b;\n\n te[2] = cf * b - de;\n te[6] = df + ce * b;\n te[10] = a * c;\n break;\n }\n\n case Euler.ZXY: {\n const ce = c * e,\n cf = c * f,\n de = d * e,\n df = d * f;\n\n te[0] = ce - df * b;\n te[4] = -a * f;\n te[8] = de + cf * b;\n\n te[1] = cf + de * b;\n te[5] = a * e;\n te[9] = df - ce * b;\n\n te[2] = -a * d;\n te[6] = b;\n te[10] = a * c;\n break;\n }\n\n case Euler.ZYX: {\n const ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n\n te[0] = c * e;\n te[4] = be * d - af;\n te[8] = ae * d + bf;\n\n te[1] = c * f;\n te[5] = bf * d + ae;\n te[9] = af * d - be;\n\n te[2] = -d;\n te[6] = b * c;\n te[10] = a * c;\n break;\n }\n\n case Euler.YZX: {\n const ac = a * c,\n ad = a * d,\n bc = b * c,\n bd = b * d;\n\n te[0] = c * e;\n te[4] = bd - ac * f;\n te[8] = bc * f + ad;\n\n te[1] = f;\n te[5] = a * e;\n te[9] = -b * e;\n\n te[2] = -d * e;\n te[6] = ad * f + bc;\n te[10] = ac - bd * f;\n break;\n }\n\n case Euler.XZY: {\n const ac = a * c,\n ad = a * d,\n bc = b * c,\n bd = b * d;\n\n te[0] = c * e;\n te[4] = -f;\n te[8] = d * e;\n\n te[1] = ac * f + bd;\n te[5] = a * e;\n te[9] = ad * f - bc;\n\n te[2] = bc * f - ad;\n te[6] = b * e;\n te[10] = bd * f + ac;\n break;\n }\n\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n\n // last column\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n\n // bottom row\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n\n return te;\n }\n\n toQuaternion() {\n // Abbreviations for the various angular functions\n const cy = Math.cos(this.yaw * 0.5);\n const sy = Math.sin(this.yaw * 0.5);\n const cr = Math.cos(this.roll * 0.5);\n const sr = Math.sin(this.roll * 0.5);\n const cp = Math.cos(this.pitch * 0.5);\n const sp = Math.sin(this.pitch * 0.5);\n\n const w = cy * cr * cp + sy * sr * sp;\n const x = cy * sr * cp - sy * cr * sp;\n const y = cy * cr * sp + sy * sr * cp;\n const z = sy * cr * cp - cy * sr * sp;\n\n return new Quaternion(x, y, z, w);\n }\n}\n"],"file":"euler.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/euler.js"],"names":["MathArray","clamp","checkNumber","Quaternion","ERR_UNKNOWN_ORDER","ALMOST_ONE","validateOrder","value","checkOrder","Error","Euler","ZYX","YXZ","XZY","ZXY","YZX","XYZ","RollPitchYaw","DefaultOrder","RotationOrders","rotationOrder","order","ELEMENTS","constructor","x","y","z","arguments","length","Array","isArray","fromVector3","set","fromQuaternion","quaternion","w","ysqr","t0","t1","t2","t3","t4","roll","Math","atan2","pitch","asin","yaw","copy","array","Number","isFinite","check","validate","toArray","offset","toArray4","toVector3","result","alpha","beta","gamma","phi","theta","psi","v","fromArray","undefined","fromRollPitchYaw","fromRotationMatrix","m","_fromRotationMatrix","getRotationMatrix","_getRotationMatrix","getQuaternion","q","rotateX","rotateY","rotateZ","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","abs","a","cos","c","e","b","sin","d","f","ae","af","be","bf","ce","cf","de","df","ac","ad","bc","bd","toQuaternion","cy","sy","cr","sr","cp","sp"],"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 MathArray from './base/math-array';\nimport {clamp} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport Quaternion from './quaternion';\n\n// Internal constants\nconst ERR_UNKNOWN_ORDER = 'Unknown Euler angle order';\nconst ALMOST_ONE = 0.99999;\n\nfunction validateOrder(value) {\n return value >= 0 && value < 6;\n}\n\nfunction checkOrder(value) {\n if (value < 0 && value >= 6) {\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n return value;\n}\n\nexport default class Euler extends MathArray {\n // static XYZ = 0;\n // static YZX = 1;\n // static ZXY = 2;\n // static XZY = 3;\n // static YXZ = 4;\n // static ZYX = 5;\n // static RollPitchYaw = 0;\n // static DefaultOrder = 0;\n\n // Constants\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n static get ZYX() {\n return 0;\n }\n\n static get YXZ() {\n return 1;\n }\n\n static get XZY() {\n return 2;\n }\n\n static get ZXY() {\n return 3;\n }\n\n static get YZX() {\n return 4;\n }\n\n static get XYZ() {\n return 5;\n }\n\n static get RollPitchYaw() {\n return 0;\n }\n\n static get DefaultOrder() {\n return Euler.ZYX;\n }\n\n static get RotationOrders() {\n return ['ZYX', 'YXZ', 'XZY', 'ZXY', 'YZX', 'XYZ'];\n }\n\n static rotationOrder(order) {\n return Euler.RotationOrders[order];\n }\n\n get ELEMENTS() {\n return 4;\n }\n\n /* eslint-enable no-multi-spaces, brace-style, no-return-assign */\n\n /**\n * @class\n * @param {Number | Number[]} x\n * @param {Number=} [y]\n * @param {Number=} [z]\n * @param {Number=} [order]\n */\n constructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0);\n // eslint-disable-next-line prefer-rest-params\n if (arguments.length > 0 && Array.isArray(arguments[0])) {\n // eslint-disable-next-line prefer-rest-params\n this.fromVector3(...arguments);\n } else {\n // @ts-ignore error TS2345: Argument of type 'number | [number, number, number, number]' not assignable to 'number'\n this.set(x, y, z, order);\n }\n }\n\n fromQuaternion(quaternion) {\n const [x, y, z, w] = quaternion;\n const ysqr = y * y;\n const t0 = -2.0 * (ysqr + z * z) + 1.0;\n const t1 = +2.0 * (x * y + w * z);\n let t2 = -2.0 * (x * z - w * y);\n const t3 = +2.0 * (y * z + w * x);\n const t4 = -2.0 * (x * x + ysqr) + 1.0;\n\n t2 = t2 > 1.0 ? 1.0 : t2;\n t2 = t2 < -1.0 ? -1.0 : t2;\n\n const roll = Math.atan2(t3, t4);\n const pitch = Math.asin(t2);\n const yaw = Math.atan2(t1, t0);\n\n return new Euler(roll, pitch, yaw, Euler.RollPitchYaw);\n }\n\n // fromQuaternion(q, order) {\n // this._fromRotationMat[-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n // return this.check();\n // }\n\n // If copied array does contain fourth element, preserves currently set order\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = Number.isFinite(array[3]) || this.order;\n return this.check();\n }\n\n // Sets the three angles, and optionally sets the rotation order\n // If order is not specified, preserves currently set order\n set(x = 0, y = 0, z = 0, order) {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n this[3] = Number.isFinite(order) ? order : this[3];\n return this.check();\n }\n\n validate() {\n return (\n validateOrder(this[3]) &&\n Number.isFinite(this[0]) &&\n Number.isFinite(this[1]) &&\n Number.isFinite(this[2])\n );\n }\n\n // Does not copy the orientation element\n toArray(array = [], offset = 0) {\n array[offset] = this[0];\n array[offset + 1] = this[1];\n array[offset + 2] = this[2];\n return array;\n }\n\n // Copies the orientation element\n toArray4(array = [], offset = 0) {\n array[offset] = this[0];\n array[offset + 1] = this[1];\n array[offset + 2] = this[2];\n array[offset + 3] = this[3];\n return array;\n }\n\n toVector3(result = [-0, -0, -0]) {\n result[0] = this[0];\n result[1] = this[1];\n result[2] = this[2];\n return result;\n }\n\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n\n // x, y, z angle notation (note: only corresponds to axis in XYZ orientation)\n /** @type {number} */\n get x() {\n return this[0];\n }\n\n set x(value) {\n this[0] = checkNumber(value);\n }\n\n /** @type {number} */\n get y() {\n return this[1];\n }\n\n set y(value) {\n this[1] = checkNumber(value);\n }\n\n /** @type {number} */\n get z() {\n return this[2];\n }\n\n set z(value) {\n this[2] = checkNumber(value);\n }\n\n // alpha, beta, gamma angle notation\n get alpha() {\n return this[0];\n }\n\n set alpha(value) {\n this[0] = checkNumber(value);\n }\n\n get beta() {\n return this[1];\n }\n\n set beta(value) {\n this[1] = checkNumber(value);\n }\n\n get gamma() {\n return this[2];\n }\n\n set gamma(value) {\n this[2] = checkNumber(value);\n }\n\n // phi, theta, psi angle notation\n get phi() {\n return this[0];\n }\n\n set phi(value) {\n this[0] = checkNumber(value);\n }\n\n get theta() {\n return this[1];\n }\n\n set theta(value) {\n this[1] = checkNumber(value);\n }\n\n get psi() {\n return this[2];\n }\n\n set psi(value) {\n this[2] = checkNumber(value);\n }\n\n // roll, pitch, yaw angle notation\n /** @type {number} */\n get roll() {\n return this[0];\n }\n\n set roll(value) {\n this[0] = checkNumber(value);\n }\n\n /** @type {number} */\n get pitch() {\n return this[1];\n }\n\n set pitch(value) {\n this[1] = checkNumber(value);\n }\n\n /** @type {number} */\n get yaw() {\n return this[2];\n }\n\n set yaw(value) {\n this[2] = checkNumber(value);\n }\n\n // rotation order, in all three angle notations\n get order() {\n return this[3];\n }\n\n set order(value) {\n this[3] = checkOrder(value);\n }\n\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n\n // Constructors\n fromVector3(v, order) {\n return this.set(v[0], v[1], v[2], Number.isFinite(order) ? order : this[3]);\n }\n\n // TODO - with and without 4th element\n fromArray(array, offset = 0) {\n this[0] = array[0 + offset];\n this[1] = array[1 + offset];\n this[2] = array[2 + offset];\n if (array[3] !== undefined) {\n this[3] = array[3];\n }\n return this.check();\n }\n\n // Common ZYX rotation order\n fromRollPitchYaw(roll, pitch, yaw) {\n return this.set(roll, pitch, yaw, Euler.ZYX);\n }\n\n fromRotationMatrix(m, order = Euler.DefaultOrder) {\n this._fromRotationMatrix(m, order);\n return this.check();\n }\n\n // ACCESSORS\n\n getRotationMatrix(m) {\n return this._getRotationMatrix(m);\n }\n\n // TODO - move to Quaternion\n getQuaternion() {\n const q = new Quaternion();\n switch (this[3]) {\n case Euler.XYZ:\n return q.rotateX(this[0]).rotateY(this[1]).rotateZ(this[2]);\n case Euler.YXZ:\n return q.rotateY(this[0]).rotateX(this[1]).rotateZ(this[2]);\n case Euler.ZXY:\n return q.rotateZ(this[0]).rotateX(this[1]).rotateY(this[2]);\n case Euler.ZYX:\n return q.rotateZ(this[0]).rotateY(this[1]).rotateX(this[2]);\n case Euler.YZX:\n return q.rotateY(this[0]).rotateZ(this[1]).rotateX(this[2]);\n case Euler.XZY:\n return q.rotateX(this[0]).rotateZ(this[1]).rotateY(this[2]);\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n }\n\n // INTERNAL METHODS\n\n // Concersion from Euler to rotation matrix and from matrix to Euler\n // Adapted from three.js under MIT license\n\n // // WARNING: this discards revolution information -bhouston\n // reorder(newOrder) {\n // const q = new Quaternion().setFromEuler(this);\n // return this.setFromQuaternion(q, newOrder);\n\n /* eslint-disable complexity, max-statements, one-var */\n _fromRotationMatrix(m, order = Euler.DefaultOrder) {\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const te = m.elements;\n const m11 = te[0],\n m12 = te[4],\n m13 = te[8];\n const m21 = te[1],\n m22 = te[5],\n m23 = te[9];\n const m31 = te[2],\n m32 = te[6],\n m33 = te[10];\n\n order = order || this[3];\n\n switch (order) {\n case Euler.XYZ:\n this[1] = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < ALMOST_ONE) {\n this[0] = Math.atan2(-m23, m33);\n this[2] = Math.atan2(-m12, m11);\n } else {\n this[0] = Math.atan2(m32, m22);\n this[2] = 0;\n }\n break;\n\n case Euler.YXZ:\n this[0] = Math.asin(-clamp(m23, -1, 1));\n\n if (Math.abs(m23) < ALMOST_ONE) {\n this[1] = Math.atan2(m13, m33);\n this[2] = Math.atan2(m21, m22);\n } else {\n this[1] = Math.atan2(-m31, m11);\n this[2] = 0;\n }\n break;\n\n case Euler.ZXY:\n this[0] = Math.asin(clamp(m32, -1, 1));\n\n if (Math.abs(m32) < ALMOST_ONE) {\n this[1] = Math.atan2(-m31, m33);\n this[2] = Math.atan2(-m12, m22);\n } else {\n this[1] = 0;\n this[2] = Math.atan2(m21, m11);\n }\n break;\n\n case Euler.ZYX:\n this[1] = Math.asin(-clamp(m31, -1, 1));\n\n if (Math.abs(m31) < ALMOST_ONE) {\n this[0] = Math.atan2(m32, m33);\n this[2] = Math.atan2(m21, m11);\n } else {\n this[0] = 0;\n this[2] = Math.atan2(-m12, m22);\n }\n break;\n\n case Euler.YZX:\n this[2] = Math.asin(clamp(m21, -1, 1));\n\n if (Math.abs(m21) < ALMOST_ONE) {\n this[0] = Math.atan2(-m23, m22);\n this[1] = Math.atan2(-m31, m11);\n } else {\n this[0] = 0;\n this[1] = Math.atan2(m13, m33);\n }\n break;\n\n case Euler.XZY:\n this[2] = Math.asin(-clamp(m12, -1, 1));\n\n if (Math.abs(m12) < ALMOST_ONE) {\n this[0] = Math.atan2(m32, m22);\n this[1] = Math.atan2(m13, m11);\n } else {\n this[0] = Math.atan2(-m23, m33);\n this[1] = 0;\n }\n break;\n\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n\n this[3] = order;\n\n return this;\n }\n\n _getRotationMatrix(result) {\n const te = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n\n const x = this.x,\n y = this.y,\n z = this.z;\n const a = Math.cos(x);\n const c = Math.cos(y);\n const e = Math.cos(z);\n const b = Math.sin(x);\n const d = Math.sin(y);\n const f = Math.sin(z);\n\n switch (this[3]) {\n case Euler.XYZ: {\n const ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n\n te[0] = c * e;\n te[4] = -c * f;\n te[8] = d;\n\n te[1] = af + be * d;\n te[5] = ae - bf * d;\n te[9] = -b * c;\n\n te[2] = bf - ae * d;\n te[6] = be + af * d;\n te[10] = a * c;\n break;\n }\n\n case Euler.YXZ: {\n const ce = c * e,\n cf = c * f,\n de = d * e,\n df = d * f;\n\n te[0] = ce + df * b;\n te[4] = de * b - cf;\n te[8] = a * d;\n\n te[1] = a * f;\n te[5] = a * e;\n te[9] = -b;\n\n te[2] = cf * b - de;\n te[6] = df + ce * b;\n te[10] = a * c;\n break;\n }\n\n case Euler.ZXY: {\n const ce = c * e,\n cf = c * f,\n de = d * e,\n df = d * f;\n\n te[0] = ce - df * b;\n te[4] = -a * f;\n te[8] = de + cf * b;\n\n te[1] = cf + de * b;\n te[5] = a * e;\n te[9] = df - ce * b;\n\n te[2] = -a * d;\n te[6] = b;\n te[10] = a * c;\n break;\n }\n\n case Euler.ZYX: {\n const ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n\n te[0] = c * e;\n te[4] = be * d - af;\n te[8] = ae * d + bf;\n\n te[1] = c * f;\n te[5] = bf * d + ae;\n te[9] = af * d - be;\n\n te[2] = -d;\n te[6] = b * c;\n te[10] = a * c;\n break;\n }\n\n case Euler.YZX: {\n const ac = a * c,\n ad = a * d,\n bc = b * c,\n bd = b * d;\n\n te[0] = c * e;\n te[4] = bd - ac * f;\n te[8] = bc * f + ad;\n\n te[1] = f;\n te[5] = a * e;\n te[9] = -b * e;\n\n te[2] = -d * e;\n te[6] = ad * f + bc;\n te[10] = ac - bd * f;\n break;\n }\n\n case Euler.XZY: {\n const ac = a * c,\n ad = a * d,\n bc = b * c,\n bd = b * d;\n\n te[0] = c * e;\n te[4] = -f;\n te[8] = d * e;\n\n te[1] = ac * f + bd;\n te[5] = a * e;\n te[9] = ad * f - bc;\n\n te[2] = bc * f - ad;\n te[6] = b * e;\n te[10] = bd * f + ac;\n break;\n }\n\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n\n // last column\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n\n // bottom row\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n\n return te;\n }\n\n toQuaternion() {\n // Abbreviations for the various angular functions\n const cy = Math.cos(this.yaw * 0.5);\n const sy = Math.sin(this.yaw * 0.5);\n const cr = Math.cos(this.roll * 0.5);\n const sr = Math.sin(this.roll * 0.5);\n const cp = Math.cos(this.pitch * 0.5);\n const sp = Math.sin(this.pitch * 0.5);\n\n const w = cy * cr * cp + sy * sr * sp;\n const x = cy * sr * cp - sy * cr * sp;\n const y = cy * cr * sp + sy * sr * cp;\n const z = sy * cr * cp - cy * sr * sp;\n\n return new Quaternion(x, y, z, w);\n }\n}\n"],"file":"euler.js"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import Matrix from './base/matrix';
|
|
3
|
+
export default class Matrix3 extends Matrix {
|
|
4
|
+
constructor(...args) {
|
|
5
|
+
super(...args);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "INDICES", void 0);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
_defineProperty(Matrix3, "IDENTITY", void 0);
|
|
13
|
+
|
|
14
|
+
_defineProperty(Matrix3, "ZERO", void 0);
|
|
15
|
+
//# sourceMappingURL=matrix3.d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/matrix3.d.ts"],"names":["Matrix","Matrix3"],"mappings":";AAAA,OAAOA,MAAP,MAAmB,eAAnB;AAGA,eAAe,MAAMC,OAAN,SAAsBD,MAAtB,CAAsC;AAAA;AAAA;;AAAA;AAAA;;AAAA;;gBAAhCC,O;;gBAAAA,O","sourcesContent":["import Matrix from './base/matrix';\n// import Quaternion from './quaternion';\n\nexport default class Matrix3 extends Matrix<Matrix3> {\n static IDENTITY: Matrix3;\n static ZERO: Matrix3;\n\n // inherited\n get ELEMENTS(): number;\n get RANK(): number;\n INDICES: number[];\n\n constructor();\n constructor(array: number[]);\n constructor(\n m00: number,\n m10: number,\n m20: number,\n m01: number,\n m11: number,\n m21: number,\n m02: number,\n m12: number,\n m22: number\n );\n\n copy(array): Matrix3;\n\n // accepts column major order, stores in column major order\n // eslint-disable-next-line max-params\n set(\n m00: number,\n m10: number,\n m20: number,\n m01: number,\n m11: number,\n m21: number,\n m02: number,\n m12: number,\n m22: number\n );\n\n // accepts row major order, stores as column major\n // eslint-disable-next-line max-params\n setRowMajor(\n m00: number,\n m01: number,\n m02: number,\n m10: number,\n m11: number,\n m12: number,\n m20: number,\n m21: number,\n m22: number\n );\n setRowMajor(...array: number[]);\n\n // Accessors\n determinant(): number;\n\n // Constructors\n identity(): Matrix3;\n\n // Calculates a 3x3 matrix from the given quaternion\n // q quat Quaternion to create matrix from\n fromQuaternion(q: number[]): Matrix3;\n\n // Modifiers\n transpose(): Matrix3;\n invert(): Matrix3;\n\n // Operations\n multiplyLeft(a: Matrix3): Matrix3;\n multiplyRight(a: Matrix3): Matrix3;\n\n rotate(radians: number): Matrix3;\n\n scale(scale: number): Matrix3;\n scale([scaleX, scaleY, scaleZ]: number[]): Matrix3;\n\n translate(vec): Matrix3;\n\n // Transforms\n\n transform(vector: number[], result?: number[]): number[];\n\n // DEPRECATED IN 3.0\n transformVector(vector, result);\n transformVector2(vector, result);\n transformVector3(vector, result);\n}\n"],"file":"matrix3.d.js"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import Matrix from './base/matrix';
|
|
3
|
+
export default class Matrix4 extends Matrix {
|
|
4
|
+
constructor(...args) {
|
|
5
|
+
super(...args);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "INDICES", void 0);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
_defineProperty(Matrix4, "IDENTITY", void 0);
|
|
13
|
+
|
|
14
|
+
_defineProperty(Matrix4, "ZERO", void 0);
|
|
15
|
+
//# sourceMappingURL=matrix4.d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/matrix4.d.ts"],"names":["Matrix","Matrix4"],"mappings":";AAAA,OAAOA,MAAP,MAAmB,eAAnB;AAMA,eAAe,MAAMC,OAAN,SAAsBD,MAAtB,CAAsC;AAAA;AAAA;;AAAA;AAAA;;AAAA;;gBAAhCC,O;;gBAAAA,O","sourcesContent":["import Matrix from './base/matrix';\n// import Quaternion from './quaternion';\n\ntype Array16 = number[];\n// = [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];\n\nexport default class Matrix4 extends Matrix<Matrix4> {\n static IDENTITY: number[];\n static ZERO: number[];\n\n INDICES: number[];\n get ELEMENTS(): number;\n get RANK(): number;\n\n constructor();\n constructor(array: Array16);\n\n copy(array: Array16);\n\n // eslint-disable-next-line max-params\n set(\n m00: number,\n m01: number,\n m02: number,\n m03: number,\n m10: number,\n m11: number,\n m12: number,\n m13: number,\n m20: number,\n m21: number,\n m22: number,\n m23: number,\n m30: number,\n m31: number,\n m32: number,\n m33: number\n );\n setRowMajor(\n m00: number,\n m01: number,\n m02: number,\n m03: number,\n m10: number,\n m11: number,\n m12: number,\n m13: number,\n m20: number,\n m21: number,\n m22: number,\n m23: number,\n m30: number,\n m31: number,\n m32: number,\n m33: number\n );\n\n toRowMajor(result: Array16);\n\n identity(): Matrix4;\n\n // Calculates a 4x4 matrix from the given quaternion\n fromQuaternion(q: number[]): Matrix4;\n\n // Generates a frustum matrix with the given bounds\n frustum(args: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near: number;\n far: number;\n }): Matrix4;\n\n // Generates a look-at matrix with the given eye position, focal point, and up axis\n lookAt(eye: number[], center?: number[], up?: number[]): Matrix4;\n lookAt(args: {eye: number[]; center?: number[]; up?: number[]}): Matrix4;\n\n // Generates a orthogonal projection matrix with the given bounds\n ortho(args: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near: number;\n far: number;\n }): Matrix4;\n\n // Generates an orthogonal projection matrix with the same parameters\n orthographic(args: {\n fovy: number;\n aspect?: number;\n focalDistance?: number;\n near?: number;\n far?: number;\n }): Matrix4;\n\n // Generates a perspective projection matrix with the given bounds\n perspective(args: {\n fovy?: number;\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n }): Matrix4;\n\n // Accessors\n\n determinant(): Matrix4;\n\n // Decomposition\n // Extracts the non-uniform scale assuming the matrix is an affine transformation.\n // The scales are the \"lengths\" of the column vectors in the upper-left 3x3 matrix.\n getScale(): number[];\n getScale<T extends number[]>(result: T): T;\n // Gets the translation portion, assuming the matrix is a affine transformation matrix.\n getTranslation(): number[];\n getTranslation<T extends number[]>(result: T): T;\n // Gets upper left 3x3 pure rotation matrix (non-scaling), assume affine transformation matrix\n getRotation(): number[];\n getRotation<T extends number[]>(result: T, scaleResult?: number[]): T;\n getRotationMatrix3(): number[];\n getRotationMatrix3<T extends number[]>(result: T, scaleResult?: number[]): T;\n\n // Modifiers\n transpose(): Matrix4;\n invert(): Matrix4;\n\n // Operations\n multiplyLeft(a: number[]): Matrix4;\n multiplyRight(a: number[]): Matrix4;\n\n scale(factor): Matrix4;\n translate(vec): Matrix4;\n rotateX(radians: number): Matrix4;\n rotateY(radians: number): Matrix4;\n rotateZ(radians: number): Matrix4;\n rotateXYZ([rx, ry, rz]: number[]): Matrix4;\n rotateAxis(radians, axis): Matrix4;\n\n // Transforms\n\n // Transforms any 2, 3 or 4 element vector. 2 and 3 elements are treated as points\n transform(vector: number[], result: number[]): number[];\n\n // Transforms any 2 or 3 element array as point (w implicitly 1)\n transformAsPoint(vector: number[], result: number[]): number[];\n transformAsVector(vector: number[], result: number[]): number[];\n\n // three.js math API compatibility\n makeRotationX(radians: number): Matrix4;\n makeTranslation(x: number, y: number, z: number): Matrix4;\n\n // DEPRECATED in 3.0\n /** @deprecated Use Matrix4.transformAsPoint instead. */\n transformPoint(vector: number[], result?: number[]): number[];\n /** @deprecated Use Matrix4.transformAsPoint instead. */\n transformVector(vector: number[], result?: number[]): number[];\n /** @deprecated Use Matrix4.transformAsPoint instead. */\n transformDirection(vector: number[], result?: number[]): number[];\n}\n"],"file":"matrix4.d.js"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
export default class Pose {
|
|
3
|
+
constructor() {
|
|
4
|
+
_defineProperty(this, "x", void 0);
|
|
5
|
+
|
|
6
|
+
_defineProperty(this, "y", void 0);
|
|
7
|
+
|
|
8
|
+
_defineProperty(this, "z", void 0);
|
|
9
|
+
|
|
10
|
+
_defineProperty(this, "roll", void 0);
|
|
11
|
+
|
|
12
|
+
_defineProperty(this, "pitch", void 0);
|
|
13
|
+
|
|
14
|
+
_defineProperty(this, "yaw", void 0);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=pose.d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/pose.d.ts"],"names":["Pose"],"mappings":";AAkCA,eAAe,MAAMA,IAAN,CAAW;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA","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 Matrix4 from './matrix4';\nimport Vector3 from './vector3';\nimport Euler from './euler';\n\ntype PoseOptions = {\n position?: number[];\n orientation?: number[];\n x?: number;\n y?: number;\n z?: number;\n roll?: number;\n pitch?: number;\n yaw?: number;\n};\n\nexport default class Pose {\n /**\n * A pose contains both rotation and rotations.\n * Note that every single pose defines its own coordinate system\n * (with the position of the pose in the origin, and zero rotations).\n * These \"pose relative\" coordinate will be centered on the defining\n * pose's position and with with the defining pose's orientation\n * aligned with axis.\n * @param {Object} options\n * @param {Number[]} [options.position]\n * @param {Number[]} [options.orientation]\n * @param {Number} [options.x]\n * @param {Number} [options.y]\n * @param {Number} [options.z]\n * @param {Number} [options.roll]\n * @param {Number} [options.pitch]\n * @param {Number} [options.yaw]\n */\n constructor(options?: PoseOptions);\n\n x: number;\n y: number;\n z: number;\n roll: number;\n pitch: number;\n yaw: number;\n\n getPosition(): Vector3;\n getOrientation(): Euler;\n\n equals(pose: Pose): boolean;\n exactEquals(pose: Pose): boolean;\n\n /**\n * Returns a 4x4 matrix that transforms a coordinates (in the same\n * coordinate system as this pose) into the \"pose-relative\" coordinate\n * system defined by this pose.\n * The pose relative coordinates with have origin in the position of this\n * pose, and axis will be aligned with the rotation of this pose.\n */\n getTransformationMatrix(): Matrix4;\n\n /**\n * Given a second pose that represent the same object in a second coordinate\n * system, this method returns a 4x4 matrix that transforms coordinates in the\n * second coordinate system into the coordinate system of this pose.\n */\n getTransformationMatrixFromPose(pose: Pose): Matrix4;\n\n /**\n * Given a second pose that represent the same object in a second coordinate\n * system, this method returns a 4x4 matrix that transforms coordinates in the\n * coordinate system of this pose into the coordinate system of the second pose.\n *\n * Note: This method returns the inverse of `this.getTransformationMatrixFromPose(pose)`\n */\n getTransformationMatrixToPose(pose: Pose): Matrix4;\n}\n"],"file":"pose.d.js"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import MathArray from './base/math-array';
|
|
3
|
+
export default class Quaternion extends MathArray {
|
|
4
|
+
constructor(...args) {
|
|
5
|
+
super(...args);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "ELEMENTS", void 0);
|
|
8
|
+
|
|
9
|
+
_defineProperty(this, "x", void 0);
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "y", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "z", void 0);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "w", void 0);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=quaternion.d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/quaternion.d.ts"],"names":["MathArray","Quaternion"],"mappings":";AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AAEA,eAAe,MAAMC,UAAN,SAAyBD,SAAzB,CAA+C;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA","sourcesContent":["import MathArray from './base/math-array';\n\nexport default class Quaternion extends MathArray<Quaternion> {\n // Getters/setters\n ELEMENTS: number;\n\n x: number;\n y: number;\n z: number;\n w: number;\n\n /** Creates a new identity quaternion: `w^2 + x^2 + y^2 + z^2 = 1` */\n constructor();\n constructor(q: Quaternion);\n constructor(q: readonly number[]);\n constructor(x: number, y: number, z: number, w: number);\n\n copy(array: readonly number[]): Quaternion;\n\n set(x: number, y: number, z: number, w: number): Quaternion;\n\n /**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * - The resultant quaternion is not normalized, so you should\n * be sure to renormalize the quaternion yourself where necessary.\n */\n fromMatrix3(m: readonly number[]): Quaternion;\n\n fromAxisRotation(axis, rad): Quaternion;\n\n /** Set a quat to the identity quaternion */\n identity(): Quaternion;\n\n // Set the components of a quaternion to the given values\n // set(i, j, k, l) {\n // quat.set(this, i, j, k, l);\n // return this.check();\n // }\n\n /** Sets a quaternion from the given angle and rotation axis, then returns it. */\n setAxisAngle(axis, rad): Quaternion;\n\n /** Calculates the length of a quaternion */\n len(): number;\n\n /** Calculates the squared length of a quaternion */\n lengthSquared(): number;\n\n /** Calculates the dot product of two quaternions */\n dot(a: readonly number[]): number;\n\n rotationTo(vectorA, vectorB): Quaternion;\n\n /** Adds two quaternions */\n add(a: readonly number[]): Quaternion;\n\n /**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Any existing W component will be ignored.\n */\n calculateW(): Quaternion;\n\n /**\n * Calculates the conjugate of a quat If the quaternion is normalized,\n * this function is faster than quat.inverse and produces the same result.\n */\n conjugate(): Quaternion;\n\n /** Calculates the inverse of this quaternion */\n invert(): Quaternion;\n\n /** Performs a linear interpolation between two quaternions */\n lerp(a, b, t): Quaternion;\n\n /** Multiplies two quaternions */\n multiplyRight(a, b): Quaternion;\n /** Multiplies two quaternions */\n multiplyLeft(a, b): Quaternion;\n\n /** Normalize a quaternion */\n normalize(): Quaternion;\n\n // MODIFIERS\n\n /** Rotates a quaternion by the given angle about the X axis */\n rotateX(radians: number): Quaternion;\n /** Rotates a quaternion by the given angle about the Y axis */\n rotateY(radians: number): Quaternion;\n /** Rotates a quaternion by the given angle about the Z axis */\n rotateZ(radians: number): Quaternion;\n\n /** Scales a quaternion by a scalar number */\n scale(b: number): Quaternion;\n\n /** Performs a spherical linear interpolation between two quaternions */\n slerp(start: readonly number[], target: readonly number[], ratio: number): Quaternion;\n slerp(args: {start: readonly number[]; target: readonly number[]; ratio: number}): Quaternion;\n\n transformVector4(vector, result?);\n\n // THREE.js Math API compatibility\n lengthSq(): Quaternion;\n setFromAxisAngle(axis, rad): Quaternion;\n premultiply(a, b): Quaternion;\n multiply(a, b): Quaternion;\n}\n"],"file":"quaternion.d.js"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
export default class SphericalCoordinates {
|
|
3
|
+
constructor() {
|
|
4
|
+
_defineProperty(this, "bearing", void 0);
|
|
5
|
+
|
|
6
|
+
_defineProperty(this, "pitch", void 0);
|
|
7
|
+
|
|
8
|
+
_defineProperty(this, "altitude", void 0);
|
|
9
|
+
|
|
10
|
+
_defineProperty(this, "longitude", void 0);
|
|
11
|
+
|
|
12
|
+
_defineProperty(this, "latitude", void 0);
|
|
13
|
+
|
|
14
|
+
_defineProperty(this, "lng", void 0);
|
|
15
|
+
|
|
16
|
+
_defineProperty(this, "lat", void 0);
|
|
17
|
+
|
|
18
|
+
_defineProperty(this, "z", void 0);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=spherical-coordinates.d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/spherical-coordinates.d.ts"],"names":["SphericalCoordinates"],"mappings":";AA0CA,eAAe,MAAMA,oBAAN,CAA2B;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA","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\n// Adaptation of THREE.js Spherical class, under MIT license\nimport Vector3 from './vector3';\n\ntype SphericalCoordinatesOptions = {\n phi?: number;\n theta?: number;\n radius?: number;\n bearing?: number;\n pitch?: number;\n altitude?: number;\n radiusScale?: number;\n};\n\ntype FormatOptions = {\n printTypes?: boolean;\n};\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n */\nexport default class SphericalCoordinates {\n // Todo [rho, theta, phi] ?\n\n // Cartographic (bearing 0 north, pitch 0 look from above)\n bearing: number;\n pitch: number;\n altitude: number;\n\n // lnglatZ coordinates\n longitude: number;\n latitude: number;\n lng: number;\n lat: number;\n z: number;\n\n /**\n * @param {Object} options\n * @param {Number} [options.phi] =0 - rotation around X (latitude)\n * @param {Number} [options.theta] =0 - rotation around Y (longitude)\n * @param {Number} [options.radius] =1 - Distance from center\n * @param {Number} [options.bearing]\n * @param {Number} [options.pitch]\n * @param {Number} [options.altitude]\n * @param {Number} [options.radiusScale] =1\n */\n constructor(options?: SphericalCoordinatesOptions);\n\n fromLngLatZ(lngLatZ: number[]): SphericalCoordinates;\n fromVector3(v: number[]): SphericalCoordinates;\n\n clone(): SphericalCoordinates;\n copy(other: SphericalCoordinates): SphericalCoordinates;\n set(radius: number, phi: number, theta: number): SphericalCoordinates;\n\n equals(other: SphericalCoordinates): boolean;\n exactEquals(other: SphericalCoordinates): boolean;\n\n toString(): string;\n formatString(options?: FormatOptions): string;\n toVector3(): Vector3;\n\n // restrict phi to be betwee EPS and PI-EPS\n makeSafe(): SphericalCoordinates;\n check(): SphericalCoordinates;\n}\n"],"file":"spherical-coordinates.d.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/vector2.d.ts"],"names":["Vector","Vector2"],"mappings":";AAoBA,OAAOA,MAAP,MAAmB,eAAnB;AAGA,eAAe,MAAMC,OAAN,SAAsBD,MAAtB,CAAsC;;gBAAhCC,O","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 Vector from './base/vector';\n\n/* Two-element vector class */\nexport default class Vector2 extends Vector<Vector2> {\n static ZERO: number[];\n get ELEMENTS(): number;\n\n constructor();\n constructor(array: readonly number[]);\n constructor(x: number, y: number);\n\n set(x: number, y: number): Vector2;\n\n copy(array: readonly number[]): Vector2;\n\n fromObject(object): Vector2;\n // {\n // if (config.debug) {\n // checkNumber(object.x);\n // checkNumber(object.y);\n // }\n // this[0] = object.x;\n // this[1] = object.y;\n // return this.check();\n // }\n\n toObject(object: object): object;\n\n // x,y inherited from Vector\n\n horizontalAngle(): number;\n\n verticalAngle(): number;\n\n // Transforms\n transform(matrix4: readonly number[]): Vector2;\n // transforms as point (4th component is implicitly 1)\n transformAsPoint(matrix4: readonly number[]): Vector2;\n // transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n transformAsVector(matrix4: readonly number[]): Vector2;\n\n transformByMatrix3(matrix3: readonly number[]): Vector2;\n transformByMatrix2x3(matrix2x3: readonly number[]): Vector2;\n transformByMatrix2(matrix2: readonly number[]): Vector2;\n}\n"],"file":"vector2.d.js"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import Vector from './base/vector';
|
|
3
|
+
export default class Vector3 extends Vector {
|
|
4
|
+
constructor(...args) {
|
|
5
|
+
super(...args);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "z", void 0);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
_defineProperty(Vector3, "ZERO", void 0);
|
|
13
|
+
//# sourceMappingURL=vector3.d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/vector3.d.ts"],"names":["Vector","Vector3"],"mappings":";AAoBA,OAAOA,MAAP,MAAmB,eAAnB;AAGA,eAAe,MAAMC,OAAN,SAAsBD,MAAtB,CAAsC;AAAA;AAAA;;AAAA;AAAA;;AAAA;;gBAAhCC,O","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 Vector from './base/vector';\n\n/** Three-element vector class */\nexport default class Vector3 extends Vector<Vector3> {\n static readonly ZERO: Vector3;\n get ELEMENTS(): number;\n\n constructor();\n constructor(array: readonly number[]);\n constructor(x: number, y: number, z: number);\n\n set(x: number, y: number, z: number);\n\n copy(array: readonly number[]);\n\n fromObject(object);\n toObject(object);\n\n // x,y inherited from Vector\n\n z: number;\n\n // ACCESSORS\n angle(vector: readonly number[]): number;\n\n // MODIFIERS\n cross(vector: readonly number[]): Vector3;\n\n rotateX(args: {radians: number; origin?: readonly number[]}): Vector3;\n rotateY(args: {radians: number; origin?: readonly number[]}): Vector3;\n rotateZ(args: {radians: number; origin?: readonly number[]}): Vector3;\n\n // Transforms\n\n // transforms as point (4th component is implicitly 1)\n transform(matrix4: readonly number[]): Vector3;\n // transforms as point (4th component is implicitly 1)\n transformAsPoint(matrix4: readonly number[]): Vector3;\n // transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n transformAsVector(matrix4: readonly number[]): Vector3;\n\n transformByMatrix3(matrix3: readonly number[]): Vector3;\n transformByMatrix2(matrix2: readonly number[]): Vector3;\n transformByQuaternion(quaternion: readonly number[]): Vector3;\n}\n"],"file":"vector3.d.js"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import Vector from './base/vector';
|
|
3
|
+
export default class Vector4 extends Vector {
|
|
4
|
+
constructor(...args) {
|
|
5
|
+
super(...args);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "z", void 0);
|
|
8
|
+
|
|
9
|
+
_defineProperty(this, "w", void 0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
_defineProperty(Vector4, "ZERO", void 0);
|
|
15
|
+
//# sourceMappingURL=vector4.d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/vector4.d.ts"],"names":["Vector","Vector4"],"mappings":";AAAA,OAAOA,MAAP,MAAmB,eAAnB;AAGA,eAAe,MAAMC,OAAN,SAAsBD,MAAtB,CAAsC;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;gBAAhCC,O","sourcesContent":["import Vector from './base/vector';\n\n/** Four-element vector class */\nexport default class Vector4 extends Vector<Vector4> {\n static ZERO: number[];\n get ELEMENTS(): number;\n\n /** construct a new Vector4 initialize to [0, 0, 0, 0] */\n constructor();\n /** construct a new Vector4 initialize to ...x, y, z, w */\n constructor(x: number, y: number, z: number, w: number);\n /** construct a new Vector4 initialize to array [x, y, z, w] */\n constructor(array: readonly number[]);\n\n set(x, y, z, w);\n\n copy(array);\n\n fromObject(object);\n\n toObject(object);\n\n // x,y inherited from Vector\n z: number;\n w: number;\n\n transform(matrix4: readonly number[]): Vector4;\n transformByMatrix3(matrix3: readonly number[]): Vector4;\n transformByMatrix2(matrix2: readonly number[]): Vector4;\n transformByQuaternion(quaternion: readonly number[]): Vector4;\n\n // three.js compatibility\n applyMatrix4(m: readonly number[]): Vector4;\n}\n"],"file":"vector4.d.js"}
|
|
File without changes
|
package/dist/esm/index.js
CHANGED
|
@@ -1,26 +1,15 @@
|
|
|
1
|
-
import { config } from './lib/common';
|
|
2
1
|
export { default as Vector2 } from './classes/vector2';
|
|
3
2
|
export { default as Vector3 } from './classes/vector3';
|
|
4
3
|
export { default as Vector4 } from './classes/vector4';
|
|
5
4
|
export { default as Matrix3 } from './classes/matrix3';
|
|
6
5
|
export { default as Matrix4 } from './classes/matrix4';
|
|
7
6
|
export { default as Quaternion } from './classes/quaternion';
|
|
8
|
-
export { config, configure, formatValue, isArray, clone, equals, exactEquals, toRadians, toDegrees, radians, degrees, sin, cos, tan, asin, acos, atan, clamp, lerp, withEpsilon } from './lib/common';
|
|
9
|
-
export { checkNumber } from './lib/validators';
|
|
10
|
-
export { default as _MathUtils } from './lib/math-utils';
|
|
11
7
|
export { default as SphericalCoordinates } from './classes/spherical-coordinates';
|
|
12
8
|
export { default as Pose } from './classes/pose';
|
|
13
9
|
export { default as Euler } from './classes/euler';
|
|
10
|
+
export { default as _MathUtils } from './lib/math-utils';
|
|
14
11
|
export { default as assert } from './lib/assert';
|
|
15
|
-
|
|
16
|
-
self: typeof self !== 'undefined' && self,
|
|
17
|
-
window: typeof window !== 'undefined' && window,
|
|
18
|
-
global: typeof global !== 'undefined' && global
|
|
19
|
-
};
|
|
20
|
-
const global_ = globals.global || globals.self || globals.window;
|
|
21
|
-
global_.mathgl = {
|
|
22
|
-
config
|
|
23
|
-
};
|
|
12
|
+
export { config, configure, formatValue, isArray, clone, equals, exactEquals, toRadians, toDegrees, radians, degrees, sin, cos, tan, asin, acos, atan, clamp, lerp, withEpsilon } from './lib/common';
|
|
24
13
|
export { default as _SphericalCoordinates } from './classes/spherical-coordinates';
|
|
25
14
|
export { default as _Pose } from './classes/pose';
|
|
26
15
|
export { default as _Euler } from './classes/euler';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["default","Vector2","Vector3","Vector4","Matrix3","Matrix4","Quaternion","SphericalCoordinates","Pose","Euler","_MathUtils","assert","config","configure","formatValue","isArray","clone","equals","exactEquals","toRadians","toDegrees","radians","degrees","sin","cos","tan","asin","acos","atan","clamp","lerp","withEpsilon","_SphericalCoordinates","_Pose","_Euler"],"mappings":"AAMA,SAAQA,OAAO,IAAIC,OAAnB,QAAiC,mBAAjC;AACA,SAAQD,OAAO,IAAIE,OAAnB,QAAiC,mBAAjC;AACA,SAAQF,OAAO,IAAIG,OAAnB,QAAiC,mBAAjC;AACA,SAAQH,OAAO,IAAII,OAAnB,QAAiC,mBAAjC;AACA,SAAQJ,OAAO,IAAIK,OAAnB,QAAiC,mBAAjC;AACA,SAAQL,OAAO,IAAIM,UAAnB,QAAoC,sBAApC;AAGA,SAAQN,OAAO,IAAIO,oBAAnB,QAA8C,iCAA9C;AACA,SAAQP,OAAO,IAAIQ,IAAnB,QAA8B,gBAA9B;AACA,SAAQR,OAAO,IAAIS,KAAnB,QAA+B,iBAA/B;AAEA,SAAQT,OAAO,IAAIU,UAAnB,QAAoC,kBAApC;AAGA,SAAQV,OAAO,IAAIW,MAAnB,QAAgC,cAAhC;AAEA,SAEEC,MAFF,EAGEC,SAHF,EAIEC,WAJF,EAKEC,OALF,EAMEC,KANF,EAOEC,MAPF,EAQEC,WARF,EASEC,SATF,EAUEC,SAVF,EAYEC,OAZF,EAaEC,OAbF,EAcEC,GAdF,EAeEC,GAfF,EAgBEC,GAhBF,EAiBEC,IAjBF,EAkBEC,IAlBF,EAmBEC,IAnBF,EAoBEC,KApBF,EAqBEC,IArBF,EAsBEC,WAtBF,QAuBO,cAvBP;AA0BA,SAAQ/B,OAAO,IAAIgC,qBAAnB,QAA+C,iCAA/C;AACA,SAAQhC,OAAO,IAAIiC,KAAnB,QAA+B,gBAA/B;AACA,SAAQjC,OAAO,IAAIkC,MAAnB,QAAgC,iBAAhC","sourcesContent":["// luma.gl, MIT license\n\n// types\nexport type {TypedArray, NumericArray} from '@math.gl/types';\n\n// classes\nexport {default as Vector2} from './classes/vector2';\nexport {default as Vector3} from './classes/vector3';\nexport {default as Vector4} from './classes/vector4';\nexport {default as Matrix3} from './classes/matrix3';\nexport {default as Matrix4} from './classes/matrix4';\nexport {default as Quaternion} from './classes/quaternion';\n\n// experimental\nexport {default as SphericalCoordinates} from './classes/spherical-coordinates';\nexport {default as Pose} from './classes/pose';\nexport {default as Euler} from './classes/euler';\n\nexport {default as _MathUtils} from './lib/math-utils';\n\n// lib\nexport {default as assert} from './lib/assert';\n\nexport {\n // math.gl global utility methods\n config,\n configure,\n formatValue,\n isArray,\n clone,\n equals,\n exactEquals,\n toRadians,\n toDegrees,\n // math.gl \"GLSL\"-style functions\n radians,\n degrees,\n sin,\n cos,\n tan,\n asin,\n acos,\n atan,\n clamp,\n lerp,\n withEpsilon\n} from './lib/common';\n\n// DEPRECATED\nexport {default as _SphericalCoordinates} from './classes/spherical-coordinates';\nexport {default as _Pose} from './classes/pose';\nexport {default as _Euler} from './classes/euler';\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/assert.
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/assert.ts"],"names":["assert","condition","message","Error"],"mappings":"AAAA,eAAe,SAASA,MAAT,CAAgBC,SAAhB,EAAoCC,OAApC,EAA4D;AACzE,MAAI,CAACD,SAAL,EAAgB;AACd,UAAM,IAAIE,KAAJ,6BAA+BD,OAA/B,EAAN;AACD;AACF","sourcesContent":["export default function assert(condition: unknown, message?: string): void {\n if (!condition) {\n throw new Error(`math.gl assertion ${message}`);\n }\n}\n"],"file":"assert.js"}
|
package/dist/esm/lib/common.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import assert from './assert';
|
|
2
2
|
const RADIANS_TO_DEGREES = 1 / Math.PI * 180;
|
|
3
3
|
const DEGREES_TO_RADIANS = 1 / 180 * Math.PI;
|
|
4
|
-
const config = {};
|
|
4
|
+
export const config = {};
|
|
5
5
|
config.EPSILON = 1e-12;
|
|
6
6
|
config.debug = false;
|
|
7
7
|
config.precision = 4;
|
|
8
8
|
config.printTypes = false;
|
|
9
9
|
config.printDegrees = false;
|
|
10
10
|
config.printRowMajor = true;
|
|
11
|
-
export { config };
|
|
12
11
|
export function configure(options = {}) {
|
|
13
12
|
for (const key in options) {
|
|
14
13
|
assert(key in config);
|
|
@@ -17,11 +16,6 @@ export function configure(options = {}) {
|
|
|
17
16
|
|
|
18
17
|
return config;
|
|
19
18
|
}
|
|
20
|
-
|
|
21
|
-
function round(value) {
|
|
22
|
-
return Math.round(value / config.EPSILON) * config.EPSILON;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
19
|
export function formatValue(value, {
|
|
26
20
|
precision = config.precision || 4
|
|
27
21
|
} = {}) {
|
|
@@ -31,29 +25,9 @@ export function formatValue(value, {
|
|
|
31
25
|
export function isArray(value) {
|
|
32
26
|
return Array.isArray(value) || ArrayBuffer.isView(value) && !(value instanceof DataView);
|
|
33
27
|
}
|
|
34
|
-
|
|
35
|
-
function duplicateArray(array) {
|
|
36
|
-
return array.clone ? array.clone() : new Array(array.length);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
28
|
export function clone(array) {
|
|
40
|
-
return
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function map(value, func, result) {
|
|
44
|
-
if (isArray(value)) {
|
|
45
|
-
result = result || duplicateArray(value);
|
|
46
|
-
|
|
47
|
-
for (let i = 0; i < result.length && i < value.length; ++i) {
|
|
48
|
-
result[i] = func(value[i], i, result);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return func(value);
|
|
29
|
+
return 'clone' in array ? array.clone() : new Array(...array);
|
|
55
30
|
}
|
|
56
|
-
|
|
57
31
|
export function toRadians(degrees) {
|
|
58
32
|
return radians(degrees);
|
|
59
33
|
}
|
|
@@ -66,13 +40,13 @@ export function radians(degrees, result) {
|
|
|
66
40
|
export function degrees(radians, result) {
|
|
67
41
|
return map(radians, radians => radians * RADIANS_TO_DEGREES, result);
|
|
68
42
|
}
|
|
69
|
-
export function sin(radians) {
|
|
70
|
-
return map(radians, angle => Math.sin(angle));
|
|
43
|
+
export function sin(radians, result) {
|
|
44
|
+
return map(radians, angle => Math.sin(angle), result);
|
|
71
45
|
}
|
|
72
|
-
export function cos(radians) {
|
|
73
|
-
return map(radians, angle => Math.cos(angle));
|
|
46
|
+
export function cos(radians, result) {
|
|
47
|
+
return map(radians, angle => Math.cos(angle), result);
|
|
74
48
|
}
|
|
75
|
-
export function tan(radians) {
|
|
49
|
+
export function tan(radians, result) {
|
|
76
50
|
return map(radians, angle => Math.tan(angle));
|
|
77
51
|
}
|
|
78
52
|
export function asin(radians) {
|
|
@@ -128,8 +102,8 @@ export function equals(a, b, epsilon) {
|
|
|
128
102
|
return b.equals(a);
|
|
129
103
|
}
|
|
130
104
|
|
|
131
|
-
if (
|
|
132
|
-
return Math.abs(a - b) <= config.EPSILON * Math.max(1
|
|
105
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
|
106
|
+
return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));
|
|
133
107
|
}
|
|
134
108
|
|
|
135
109
|
return false;
|
|
@@ -168,9 +142,9 @@ export function exactEquals(a, b) {
|
|
|
168
142
|
|
|
169
143
|
return false;
|
|
170
144
|
}
|
|
171
|
-
export function withEpsilon(
|
|
145
|
+
export function withEpsilon(epsilon, func) {
|
|
172
146
|
const oldPrecision = config.EPSILON;
|
|
173
|
-
config.EPSILON =
|
|
147
|
+
config.EPSILON = epsilon;
|
|
174
148
|
let value;
|
|
175
149
|
|
|
176
150
|
try {
|
|
@@ -181,4 +155,27 @@ export function withEpsilon(EPSILON, func) {
|
|
|
181
155
|
|
|
182
156
|
return value;
|
|
183
157
|
}
|
|
158
|
+
|
|
159
|
+
function round(value) {
|
|
160
|
+
return Math.round(value / config.EPSILON) * config.EPSILON;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function duplicateArray(array) {
|
|
164
|
+
return array.clone ? array.clone() : new Array(array.length);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function map(value, func, result) {
|
|
168
|
+
if (isArray(value)) {
|
|
169
|
+
const array = value;
|
|
170
|
+
result = result || duplicateArray(array);
|
|
171
|
+
|
|
172
|
+
for (let i = 0; i < result.length && i < array.length; ++i) {
|
|
173
|
+
result[i] = func(value[i], i, result);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return func(value);
|
|
180
|
+
}
|
|
184
181
|
//# sourceMappingURL=common.js.map
|