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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"matrix3.d.ts","sourceRoot":"","sources":["../../src/classes/matrix3.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,eAAe,CAAC;AAOnC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,aAAK,OAAO;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;CACb;AAID,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IACzC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAEvC;IAED,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,CAEnC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,OAAO,OAAO,CAE5B;gBAEW,KAAK,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC;IAC1C,kBAAkB;gBACN,GAAG,IAAI,EAAE,MAAM,EAAE;IAc7B,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAgBzC,QAAQ,IAAI,IAAI;IAIhB;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,GAAG,IAAI;IAM9C,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAK/C;;OAEG;IAEH,GAAG,CACD,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,IAAI;IAaP;;OAEG;IAEH,WAAW,CACT,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,IAAI;IAeP,WAAW,IAAI,MAAM;IAKrB,SAAS,IAAI,IAAI;IAKjB,+EAA+E;IAC/E,MAAM,IAAI,IAAI;IAMd,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAKnC,aAAa,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAKpC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAKrC,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;IAS1C,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAMlC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAkB9E,kBAAkB;IAClB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAIpF,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAIrF,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;CAGtF"}
1
+ {"version":3,"file":"matrix3.d.ts","sourceRoot":"","sources":["../../src/classes/matrix3.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,eAAe,CAAC;AAOnC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,aAAK,OAAO;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,QAAQ,IAAI;CACb;AAID,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IACzC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAEvC;IAED,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,CAEnC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,OAAO,OAAO,CAE5B;gBAEW,KAAK,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC;IAC1C,kBAAkB;gBACN,GAAG,IAAI,EAAE,MAAM,EAAE;IAc7B,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAgBzC,QAAQ,IAAI,IAAI;IAIhB;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,GAAG,IAAI;IAM9C,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAK/C;;OAEG;IAEH,GAAG,CACD,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,IAAI;IAaP;;OAEG;IAEH,WAAW,CACT,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,IAAI;IAeP,WAAW,IAAI,MAAM;IAKrB,SAAS,IAAI,IAAI;IAKjB,+EAA+E;IAC/E,MAAM,IAAI,IAAI;IAMd,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAKnC,aAAa,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAKpC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAKrC,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;IAS1C,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAMlC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAmB9E,kBAAkB;IAClB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAIpF,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAIrF,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;CAGtF"}
@@ -154,21 +154,22 @@ export default class Matrix3 extends Matrix {
154
154
  }
155
155
  // Transforms
156
156
  transform(vector, result) {
157
+ let out;
157
158
  switch (vector.length) {
158
159
  case 2:
159
- result = vec2.transformMat3(result || [-0, -0], vector, this);
160
+ out = vec2.transformMat3(result || [-0, -0], vector, this);
160
161
  break;
161
162
  case 3:
162
- result = vec3.transformMat3(result || [-0, -0, -0], vector, this);
163
+ out = vec3.transformMat3(result || [-0, -0, -0], vector, this);
163
164
  break;
164
165
  case 4:
165
- result = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
166
+ out = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
166
167
  break;
167
168
  default:
168
169
  throw new Error('Illegal vector');
169
170
  }
170
- checkVector(result, vector.length);
171
- return result;
171
+ checkVector(out, vector.length);
172
+ return out;
172
173
  }
173
174
  /** @deprecated */
174
175
  transformVector(vector, result) {
@@ -74,8 +74,8 @@ export default class Matrix4 extends Matrix {
74
74
  */
75
75
  lookAt(view: {
76
76
  eye: Readonly<NumericArray>;
77
- center: Readonly<NumericArray>;
78
- up: Readonly<NumericArray>;
77
+ center?: Readonly<NumericArray>;
78
+ up?: Readonly<NumericArray>;
79
79
  }): this;
80
80
  /**
81
81
  * Generates a orthogonal projection matrix with the given bounds
@@ -1 +1 @@
1
- {"version":3,"file":"matrix4.d.ts","sourceRoot":"","sources":["../../src/classes/matrix4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matrix4.d.ts","sourceRoot":"","sources":["../../src/classes/matrix4.ts"],"names":[],"mappings":"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"}
@@ -433,18 +433,19 @@ export default class Matrix4 extends Matrix {
433
433
  */
434
434
  transformAsPoint(vector, result) {
435
435
  const { length } = vector;
436
+ let out;
436
437
  switch (length) {
437
438
  case 2:
438
- result = vec2.transformMat4(result || [-0, -0], vector, this);
439
+ out = vec2.transformMat4(result || [-0, -0], vector, this);
439
440
  break;
440
441
  case 3:
441
- result = vec3.transformMat4(result || [-0, -0, -0], vector, this);
442
+ out = vec3.transformMat4(result || [-0, -0, -0], vector, this);
442
443
  break;
443
444
  default:
444
445
  throw new Error('Illegal vector');
445
446
  }
446
- checkVector(result, vector.length);
447
- return result;
447
+ checkVector(out, vector.length);
448
+ return out;
448
449
  }
449
450
  /**
450
451
  * Transforms any 2 or 3 element array as vector (w implicitly 0)
@@ -453,18 +454,19 @@ export default class Matrix4 extends Matrix {
453
454
  * @returns self
454
455
  */
455
456
  transformAsVector(vector, result) {
457
+ let out;
456
458
  switch (vector.length) {
457
459
  case 2:
458
- result = vec2_transformMat4AsVector(result || [-0, -0], vector, this);
460
+ out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);
459
461
  break;
460
462
  case 3:
461
- result = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);
463
+ out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);
462
464
  break;
463
465
  default:
464
466
  throw new Error('Illegal vector');
465
467
  }
466
- checkVector(result, vector.length);
467
- return result;
468
+ checkVector(out, vector.length);
469
+ return out;
468
470
  }
469
471
  /** @deprecated */
470
472
  transformPoint(vector, result) {
@@ -209,25 +209,27 @@ var Matrix3 = function (_Matrix) {
209
209
  }, {
210
210
  key: "transform",
211
211
  value: function transform(vector, result) {
212
+ var out;
213
+
212
214
  switch (vector.length) {
213
215
  case 2:
214
- result = vec2.transformMat3(result || [-0, -0], vector, this);
216
+ out = vec2.transformMat3(result || [-0, -0], vector, this);
215
217
  break;
216
218
 
217
219
  case 3:
218
- result = vec3.transformMat3(result || [-0, -0, -0], vector, this);
220
+ out = vec3.transformMat3(result || [-0, -0, -0], vector, this);
219
221
  break;
220
222
 
221
223
  case 4:
222
- result = (0, _glMatrixExtras.vec4_transformMat3)(result || [-0, -0, -0, -0], vector, this);
224
+ out = (0, _glMatrixExtras.vec4_transformMat3)(result || [-0, -0, -0, -0], vector, this);
223
225
  break;
224
226
 
225
227
  default:
226
228
  throw new Error('Illegal vector');
227
229
  }
228
230
 
229
- (0, _validators.checkVector)(result, vector.length);
230
- return result;
231
+ (0, _validators.checkVector)(out, vector.length);
232
+ return out;
231
233
  }
232
234
  }, {
233
235
  key: "transformVector",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/matrix3.ts"],"names":["INDICES","IDENTITY_MATRIX","Object","freeze","Matrix3","array","args","arguments","length","Array","isArray","copy","identity","check","object","q","mat3","fromQuat","m00","m10","m20","m01","m11","m21","m02","m12","m22","determinant","transpose","invert","a","multiply","radians","rotate","factor","scale","vec","translate","vector","result","vec2","transformMat3","vec3","Error","transform","getIdentityMatrix","getZeroMatrix","Matrix","ZERO_MATRIX3","IDENTITY_MATRIX3"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Matrix from './base/matrix';\nimport {checkVector} from '../lib/validators';\n/* eslint-disable camelcase */\nimport {vec4_transformMat3} from '../lib/gl-matrix-extras';\nimport * as mat3 from 'gl-matrix/mat3';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport {NumericArray} from '@math.gl/types';\n\nenum INDICES {\n COL0ROW0 = 0,\n COL0ROW1 = 1,\n COL0ROW2 = 2,\n COL1ROW0 = 3,\n COL1ROW1 = 4,\n COL1ROW2 = 5,\n COL2ROW0 = 6,\n COL2ROW1 = 7,\n COL2ROW2 = 8\n}\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\nexport default class Matrix3 extends Matrix {\n static get IDENTITY(): Readonly<Matrix3> {\n return getIdentityMatrix();\n }\n\n static get ZERO(): Readonly<Matrix3> {\n return getZeroMatrix();\n }\n\n get ELEMENTS(): number {\n return 9;\n }\n\n get RANK(): number {\n return 3;\n }\n\n get INDICES(): typeof INDICES {\n return INDICES;\n }\n\n constructor(array?: Readonly<NumericArray>);\n /** @deprecated */\n constructor(...args: number[]);\n\n constructor(array?: number | Readonly<NumericArray>, ...args: number[]) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else if (args.length > 0) {\n this.copy([array as number, ...args]);\n } else {\n this.identity();\n }\n }\n\n copy(array: Readonly<NumericArray>): this {\n // Element wise copy for performance\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n return this.check();\n }\n\n // Constructors\n\n identity(): this {\n return this.copy(IDENTITY_MATRIX);\n }\n\n /**\n *\n * @param object\n * @returns self\n */\n fromObject(object: {[key: string]: any}): this {\n return this.check();\n }\n\n // Calculates a 3x3 matrix from the given quaternion\n // q quat Quaternion to create matrix from\n fromQuaternion(q: Readonly<NumericArray>): this {\n mat3.fromQuat(this, q);\n return this.check();\n }\n\n /**\n * accepts column major order, stores in column major order\n */\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 ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m01;\n this[4] = m11;\n this[5] = m21;\n this[6] = m02;\n this[7] = m12;\n this[8] = m22;\n return this.check();\n }\n\n /**\n * accepts row major order, stores as column major\n */\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 ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m01;\n this[4] = m11;\n this[5] = m21;\n this[6] = m02;\n this[7] = m12;\n this[8] = m22;\n return this.check();\n }\n\n // Accessors\n\n determinant(): number {\n return mat3.determinant(this);\n }\n\n // Modifiers\n transpose(): this {\n mat3.transpose(this, this);\n return this.check();\n }\n\n /** Invert a matrix. Note that this can fail if the matrix is not invertible */\n invert(): this {\n mat3.invert(this, this);\n return this.check();\n }\n\n // Operations\n multiplyLeft(a: NumericArray): this {\n mat3.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a: NumericArray): this {\n mat3.multiply(this, this, a);\n return this.check();\n }\n\n rotate(radians: number): NumericArray {\n mat3.rotate(this, this, radians);\n return this.check();\n }\n\n scale(factor: NumericArray | number): this {\n if (Array.isArray(factor)) {\n mat3.scale(this, this, factor);\n } else {\n mat3.scale(this, this, [factor as number, factor as number]);\n }\n return this.check();\n }\n\n translate(vec: NumericArray): this {\n mat3.translate(this, this, vec);\n return this.check();\n }\n\n // Transforms\n transform(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n switch (vector.length) {\n case 2:\n result = vec2.transformMat3(result || [-0, -0], vector, this);\n break;\n case 3:\n result = vec3.transformMat3(result || [-0, -0, -0], vector, this);\n break;\n case 4:\n result = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(result, vector.length);\n return result;\n }\n\n /** @deprecated */\n transformVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n\n /** @deprecated */\n transformVector2(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n\n /** @deprecated */\n transformVector3(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n}\n\nlet ZERO_MATRIX3;\nlet IDENTITY_MATRIX3;\n\nfunction getZeroMatrix(): Readonly<Matrix3> {\n if (!ZERO_MATRIX3) {\n ZERO_MATRIX3 = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO_MATRIX3);\n }\n return ZERO_MATRIX3;\n}\n\nfunction getIdentityMatrix(): Matrix3 {\n if (!IDENTITY_MATRIX3) {\n IDENTITY_MATRIX3 = new Matrix3();\n Object.freeze(IDENTITY_MATRIX3);\n }\n return IDENTITY_MATRIX3;\n}\n"],"file":"matrix3.js"}
1
+ {"version":3,"sources":["../../../src/classes/matrix3.ts"],"names":["INDICES","IDENTITY_MATRIX","Object","freeze","Matrix3","array","args","arguments","length","Array","isArray","copy","identity","check","object","q","mat3","fromQuat","m00","m10","m20","m01","m11","m21","m02","m12","m22","determinant","transpose","invert","a","multiply","radians","rotate","factor","scale","vec","translate","vector","result","out","vec2","transformMat3","vec3","Error","transform","getIdentityMatrix","getZeroMatrix","Matrix","ZERO_MATRIX3","IDENTITY_MATRIX3"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Matrix from './base/matrix';\nimport {checkVector} from '../lib/validators';\n/* eslint-disable camelcase */\nimport {vec4_transformMat3} from '../lib/gl-matrix-extras';\nimport * as mat3 from 'gl-matrix/mat3';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport {NumericArray} from '@math.gl/types';\n\nenum INDICES {\n COL0ROW0 = 0,\n COL0ROW1 = 1,\n COL0ROW2 = 2,\n COL1ROW0 = 3,\n COL1ROW1 = 4,\n COL1ROW2 = 5,\n COL2ROW0 = 6,\n COL2ROW1 = 7,\n COL2ROW2 = 8\n}\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\nexport default class Matrix3 extends Matrix {\n static get IDENTITY(): Readonly<Matrix3> {\n return getIdentityMatrix();\n }\n\n static get ZERO(): Readonly<Matrix3> {\n return getZeroMatrix();\n }\n\n get ELEMENTS(): number {\n return 9;\n }\n\n get RANK(): number {\n return 3;\n }\n\n get INDICES(): typeof INDICES {\n return INDICES;\n }\n\n constructor(array?: Readonly<NumericArray>);\n /** @deprecated */\n constructor(...args: number[]);\n\n constructor(array?: number | Readonly<NumericArray>, ...args: number[]) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else if (args.length > 0) {\n this.copy([array as number, ...args]);\n } else {\n this.identity();\n }\n }\n\n copy(array: Readonly<NumericArray>): this {\n // Element wise copy for performance\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n return this.check();\n }\n\n // Constructors\n\n identity(): this {\n return this.copy(IDENTITY_MATRIX);\n }\n\n /**\n *\n * @param object\n * @returns self\n */\n fromObject(object: {[key: string]: any}): this {\n return this.check();\n }\n\n // Calculates a 3x3 matrix from the given quaternion\n // q quat Quaternion to create matrix from\n fromQuaternion(q: Readonly<NumericArray>): this {\n mat3.fromQuat(this, q);\n return this.check();\n }\n\n /**\n * accepts column major order, stores in column major order\n */\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 ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m01;\n this[4] = m11;\n this[5] = m21;\n this[6] = m02;\n this[7] = m12;\n this[8] = m22;\n return this.check();\n }\n\n /**\n * accepts row major order, stores as column major\n */\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 ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m01;\n this[4] = m11;\n this[5] = m21;\n this[6] = m02;\n this[7] = m12;\n this[8] = m22;\n return this.check();\n }\n\n // Accessors\n\n determinant(): number {\n return mat3.determinant(this);\n }\n\n // Modifiers\n transpose(): this {\n mat3.transpose(this, this);\n return this.check();\n }\n\n /** Invert a matrix. Note that this can fail if the matrix is not invertible */\n invert(): this {\n mat3.invert(this, this);\n return this.check();\n }\n\n // Operations\n multiplyLeft(a: NumericArray): this {\n mat3.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a: NumericArray): this {\n mat3.multiply(this, this, a);\n return this.check();\n }\n\n rotate(radians: number): NumericArray {\n mat3.rotate(this, this, radians);\n return this.check();\n }\n\n scale(factor: NumericArray | number): this {\n if (Array.isArray(factor)) {\n mat3.scale(this, this, factor);\n } else {\n mat3.scale(this, this, [factor as number, factor as number]);\n }\n return this.check();\n }\n\n translate(vec: NumericArray): this {\n mat3.translate(this, this, vec);\n return this.check();\n }\n\n // Transforms\n transform(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n let out: NumericArray;\n switch (vector.length) {\n case 2:\n out = vec2.transformMat3(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3.transformMat3(result || [-0, -0, -0], vector, this);\n break;\n case 4:\n out = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /** @deprecated */\n transformVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n\n /** @deprecated */\n transformVector2(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n\n /** @deprecated */\n transformVector3(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n}\n\nlet ZERO_MATRIX3;\nlet IDENTITY_MATRIX3;\n\nfunction getZeroMatrix(): Readonly<Matrix3> {\n if (!ZERO_MATRIX3) {\n ZERO_MATRIX3 = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO_MATRIX3);\n }\n return ZERO_MATRIX3;\n}\n\nfunction getIdentityMatrix(): Matrix3 {\n if (!IDENTITY_MATRIX3) {\n IDENTITY_MATRIX3 = new Matrix3();\n Object.freeze(IDENTITY_MATRIX3);\n }\n return IDENTITY_MATRIX3;\n}\n"],"file":"matrix3.js"}
@@ -439,41 +439,44 @@ var Matrix4 = function (_Matrix) {
439
439
  key: "transformAsPoint",
440
440
  value: function transformAsPoint(vector, result) {
441
441
  var length = vector.length;
442
+ var out;
442
443
 
443
444
  switch (length) {
444
445
  case 2:
445
- result = vec2.transformMat4(result || [-0, -0], vector, this);
446
+ out = vec2.transformMat4(result || [-0, -0], vector, this);
446
447
  break;
447
448
 
448
449
  case 3:
449
- result = vec3.transformMat4(result || [-0, -0, -0], vector, this);
450
+ out = vec3.transformMat4(result || [-0, -0, -0], vector, this);
450
451
  break;
451
452
 
452
453
  default:
453
454
  throw new Error('Illegal vector');
454
455
  }
455
456
 
456
- (0, _validators.checkVector)(result, vector.length);
457
- return result;
457
+ (0, _validators.checkVector)(out, vector.length);
458
+ return out;
458
459
  }
459
460
  }, {
460
461
  key: "transformAsVector",
461
462
  value: function transformAsVector(vector, result) {
463
+ var out;
464
+
462
465
  switch (vector.length) {
463
466
  case 2:
464
- result = (0, _glMatrixExtras.vec2_transformMat4AsVector)(result || [-0, -0], vector, this);
467
+ out = (0, _glMatrixExtras.vec2_transformMat4AsVector)(result || [-0, -0], vector, this);
465
468
  break;
466
469
 
467
470
  case 3:
468
- result = (0, _glMatrixExtras.vec3_transformMat4AsVector)(result || [-0, -0, -0], vector, this);
471
+ out = (0, _glMatrixExtras.vec3_transformMat4AsVector)(result || [-0, -0, -0], vector, this);
469
472
  break;
470
473
 
471
474
  default:
472
475
  throw new Error('Illegal vector');
473
476
  }
474
477
 
475
- (0, _validators.checkVector)(result, vector.length);
476
- return result;
478
+ (0, _validators.checkVector)(out, vector.length);
479
+ return out;
477
480
  }
478
481
  }, {
479
482
  key: "transformPoint",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/matrix4.ts"],"names":["INDICES","DEFAULT_FOVY","Math","PI","DEFAULT_ASPECT","DEFAULT_NEAR","DEFAULT_FAR","IDENTITY_MATRIX","Object","freeze","Matrix4","array","arguments","length","Array","isArray","copy","identity","check","m00","m10","m20","m30","m01","m11","m21","m31","m02","m12","m22","m32","m03","m13","m23","m33","result","object","quaternion","mat4","fromQuat","view","left","right","bottom","top","near","far","Infinity","computeInfinitePerspectiveOffCenter","frustum","eye","center","up","lookAt","ortho","fovy","aspect","focalDistance","checkRadians","halfY","tan","perspective","determinant","sqrt","scaleResult","scale","getScale","inverseScale0","inverseScale1","inverseScale2","transpose","invert","a","multiply","radians","rotateX","rotateY","rotateZ","angleXYZ","axis","rotate","factor","vector","translate","vec4","transformMat4","transformAsPoint","vec2","vec3","Error","transformAsVector","x","y","z","getIdentityMatrix","getZeroMatrix","Matrix","ZERO","IDENTITY","possiblyDegrees","column0Row0","column1Row1","column2Row0","column2Row1","column2Row2","column2Row3","column3Row2"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Matrix from './base/matrix';\nimport {NumericArray} from '@math.gl/types';\nimport {checkVector} from '../lib/validators';\n\n/* eslint-disable camelcase */\nimport {vec2_transformMat4AsVector, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\n\nenum INDICES {\n COL0ROW0 = 0,\n COL0ROW1 = 1,\n COL0ROW2 = 2,\n COL0ROW3 = 3,\n COL1ROW0 = 4,\n COL1ROW1 = 5,\n COL1ROW2 = 6,\n COL1ROW3 = 7,\n COL2ROW0 = 8,\n COL2ROW1 = 9,\n COL2ROW2 = 10,\n COL2ROW3 = 11,\n COL3ROW0 = 12,\n COL3ROW1 = 13,\n COL3ROW2 = 14,\n COL3ROW3 = 15\n}\n\nconst DEFAULT_FOVY = (45 * Math.PI) / 180;\nconst DEFAULT_ASPECT = 1;\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 500;\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n\n/** 4x4 matrix */\nexport default class Matrix4 extends Matrix {\n static get IDENTITY(): Readonly<Matrix4> {\n return getIdentityMatrix();\n }\n\n static get ZERO(): Readonly<Matrix4> {\n return getZeroMatrix();\n }\n\n get ELEMENTS(): number {\n return 16;\n }\n\n get RANK(): number {\n return 4;\n }\n\n get INDICES(): typeof INDICES {\n return INDICES;\n }\n\n constructor(array?: Readonly<NumericArray>) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else {\n this.identity();\n }\n }\n\n copy(array: Readonly<NumericArray>): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n set(\n m00: number,\n m10: number,\n m20: number,\n m30: number,\n m01: number,\n m11: number,\n m21: number,\n m31: number,\n m02: number,\n m12: number,\n m22: number,\n m32: number,\n m03: number,\n m13: number,\n m23: number,\n m33: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\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 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 ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n toRowMajor(result: NumericArray): NumericArray {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n\n // Constructors\n\n /** Set to identity matrix */\n identity(): this {\n return this.copy(IDENTITY_MATRIX);\n }\n\n /**\n *\n * @param object\n * @returns self\n */\n fromObject(object: {[key: string]: any}): this {\n return this.check();\n }\n\n /**\n * Calculates a 4x4 matrix from the given quaternion\n * @param quaternion Quaternion to create matrix from\n * @returns self\n */\n fromQuaternion(quaternion: Readonly<NumericArray>): this {\n mat4.fromQuat(this, quaternion);\n return this.check();\n }\n\n /**\n * Generates a frustum matrix with the given bounds\n * @param view.left - Left bound of the frustum\n * @param view.right - Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top - Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far - Far bound of the frustum. Can be set to Infinity.\n * @returns self\n */\n frustum(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n if (far === Infinity) {\n computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n } else {\n mat4.frustum(this, left, right, bottom, top, near, far);\n }\n return this.check();\n }\n\n /**\n * Generates a look-at matrix with the given eye position, focal point,\n * and up axis\n * @param view.eye - (vector) Position of the viewer\n * @param view.center - (vector) Point the viewer is looking at\n * @param view.up - (vector) Up axis\n * @returns self\n */\n lookAt(view: {\n eye: Readonly<NumericArray>;\n center: Readonly<NumericArray>;\n up: Readonly<NumericArray>;\n }): this {\n const {eye, center = [0, 0, 0], up = [0, 1, 0]} = view;\n mat4.lookAt(this, eye, center, up);\n return this.check();\n }\n\n /**\n * Generates a orthogonal projection matrix with the given bounds\n * from \"traditional\" view space parameters\n * @param view.left - Left bound of the frustum\n * @param view.right number Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top number Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far number Far bound of the frustum\n * @returns self\n */\n ortho(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near?: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n mat4.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n\n /**\n * Generates an orthogonal projection matrix with the same parameters\n * as a perspective matrix (plus focalDistance)\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. Typically viewport width / viewport height\n * @param view.focalDistance Distance in the view frustum used for extent calculations\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n orthographic(view: {\n fovy?: number;\n aspect?: number;\n focalDistance?: number;\n near?: number;\n far?: number;\n }): this {\n const {\n fovy = DEFAULT_FOVY,\n aspect = DEFAULT_ASPECT,\n focalDistance = 1,\n near = DEFAULT_NEAR,\n far = DEFAULT_FAR\n } = view;\n\n checkRadians(fovy);\n\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY); // focus_plane is the distance from the camera\n const right = top * aspect;\n\n return this.ortho({\n left: -right,\n right,\n bottom: -top,\n top,\n near,\n far\n });\n }\n\n /**\n * Generates a perspective projection matrix with the given bounds\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. typically viewport width/height\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n perspective(view: {fovy: number; aspect?: number; near?: number; far?: number}): this {\n const {fovy = (45 * Math.PI) / 180, aspect = 1, near = 0.1, far = 500} = view;\n checkRadians(fovy);\n mat4.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n\n // Accessors\n\n determinant(): number {\n return mat4.determinant(this);\n }\n\n /**\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 * @param result\n * @returns self\n */\n getScale(result: NumericArray = [-0, -0, -0]): NumericArray {\n // explicit is faster than hypot...\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n // result[0] = Math.hypot(this[0], this[1], this[2]);\n // result[1] = Math.hypot(this[4], this[5], this[6]);\n // result[2] = Math.hypot(this[8], this[9], this[10]);\n return result;\n }\n\n /**\n * Gets the translation portion, assuming the matrix is a affine transformation matrix.\n * @param result\n * @returns self\n */\n getTranslation(result: NumericArray = [-0, -0, -0]): NumericArray {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n\n /**\n * Gets upper left 3x3 pure rotation matrix (non-scaling), assume affine transformation matrix\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotation(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n\n /**\n *\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotationMatrix3(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n\n // Modifiers\n\n transpose(): this {\n mat4.transpose(this, this);\n return this.check();\n }\n\n invert(): this {\n mat4.invert(this, this);\n return this.check();\n }\n\n // Operations\n\n multiplyLeft(a: Readonly<NumericArray>): this {\n mat4.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a: Readonly<NumericArray>): this {\n mat4.multiply(this, this, a);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the X axis\n rotateX(radians: number): this {\n mat4.rotateX(this, this, radians);\n // mat4.rotate(this, this, radians, [1, 0, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Y axis.\n rotateY(radians: number): this {\n mat4.rotateY(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 1, 0]);\n return this.check();\n }\n\n /**\n * Rotates a matrix by the given angle around the Z axis.\n * @param radians\n * @returns self\n */\n rotateZ(radians: number): this {\n mat4.rotateZ(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 0, 1]);\n return this.check();\n }\n\n /**\n *\n * @param param0\n * @returns self\n */\n rotateXYZ(angleXYZ: Readonly<NumericArray>): this {\n return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n }\n\n /**\n *\n * @param radians\n * @param axis\n * @returns self\n */\n rotateAxis(radians: number, axis: Readonly<NumericArray>): this {\n mat4.rotate(this, this, radians, axis);\n return this.check();\n }\n\n /**\n *\n * @param factor\n * @returns self\n */\n scale(factor: number | Readonly<NumericArray>): this {\n mat4.scale(this, this, Array.isArray(factor) ? factor : [factor, factor, factor]);\n return this.check();\n }\n\n /**\n *\n * @param vec\n * @returns self\n */\n translate(vector: Readonly<NumericArray>): this {\n mat4.translate(this, this, vector);\n return this.check();\n }\n\n // Transforms\n\n /**\n * Transforms any 2, 3 or 4 element vector. 2 and 3 elements are treated as points\n * @param vector\n * @param result\n * @returns self\n */\n transform(vector: Readonly<NumericArray>, result: NumericArray): NumericArray {\n if (vector.length === 4) {\n result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n checkVector(result, 4);\n return result;\n }\n return this.transformAsPoint(vector, result);\n }\n\n /**\n * Transforms any 2 or 3 element array as point (w implicitly 1)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsPoint(vector: Readonly<NumericArray>, result?: NumericArray) {\n const {length} = vector;\n switch (length) {\n case 2:\n result = vec2.transformMat4(result || [-0, -0], vector, this);\n break;\n case 3:\n result = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(result, vector.length);\n return result;\n }\n\n /**\n * Transforms any 2 or 3 element array as vector (w implicitly 0)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n switch (vector.length) {\n case 2:\n result = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n break;\n case 3:\n result = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(result, vector.length);\n return result;\n }\n\n /** @deprecated */\n transformPoint(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformDirection(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transformAsVector(vector, result);\n }\n\n // three.js math API compatibility\n\n makeRotationX(radians: number): this {\n return this.identity().rotateX(radians);\n }\n\n makeTranslation(x: number, y: number, z: number): this {\n return this.identity().translate([x, y, z]);\n }\n}\n\n// TODO initializing static members directly is an option, but make sure no tree-shaking issues\nlet ZERO: Matrix4;\nlet IDENTITY: Matrix4;\n\nfunction getZeroMatrix(): Readonly<Matrix4> {\n if (!ZERO) {\n ZERO = new Matrix4([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO);\n }\n return ZERO;\n}\n\nfunction getIdentityMatrix(): Matrix4 {\n if (!IDENTITY) {\n IDENTITY = new Matrix4();\n Object.freeze(IDENTITY);\n }\n return IDENTITY;\n}\n\n// HELPER FUNCTIONS\n\nfunction checkRadians(possiblyDegrees: number) {\n if (possiblyDegrees > Math.PI * 2) {\n throw Error('expected radians');\n }\n}\n\n// eslint-disable-next-line max-params\nfunction computeInfinitePerspectiveOffCenter(\n result: NumericArray,\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number\n): NumericArray {\n const column0Row0 = (2 * near) / (right - left);\n const column1Row1 = (2 * near) / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1;\n const column2Row3 = -1;\n const column3Row2 = -2 * near;\n result[0] = column0Row0;\n result[1] = 0;\n result[2] = 0;\n result[3] = 0;\n result[4] = 0;\n result[5] = column1Row1;\n result[6] = 0;\n result[7] = 0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0;\n result[13] = 0;\n result[14] = column3Row2;\n result[15] = 0;\n return result;\n}\n"],"file":"matrix4.js"}
1
+ {"version":3,"sources":["../../../src/classes/matrix4.ts"],"names":["INDICES","DEFAULT_FOVY","Math","PI","DEFAULT_ASPECT","DEFAULT_NEAR","DEFAULT_FAR","IDENTITY_MATRIX","Object","freeze","Matrix4","array","arguments","length","Array","isArray","copy","identity","check","m00","m10","m20","m30","m01","m11","m21","m31","m02","m12","m22","m32","m03","m13","m23","m33","result","object","quaternion","mat4","fromQuat","view","left","right","bottom","top","near","far","Infinity","computeInfinitePerspectiveOffCenter","frustum","eye","center","up","lookAt","ortho","fovy","aspect","focalDistance","checkRadians","halfY","tan","perspective","determinant","sqrt","scaleResult","scale","getScale","inverseScale0","inverseScale1","inverseScale2","transpose","invert","a","multiply","radians","rotateX","rotateY","rotateZ","angleXYZ","axis","rotate","factor","vector","translate","vec4","transformMat4","transformAsPoint","out","vec2","vec3","Error","transformAsVector","x","y","z","getIdentityMatrix","getZeroMatrix","Matrix","ZERO","IDENTITY","possiblyDegrees","column0Row0","column1Row1","column2Row0","column2Row1","column2Row2","column2Row3","column3Row2"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Matrix from './base/matrix';\nimport {NumericArray} from '@math.gl/types';\nimport {checkVector} from '../lib/validators';\n\n/* eslint-disable camelcase */\nimport {vec2_transformMat4AsVector, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\n\nenum INDICES {\n COL0ROW0 = 0,\n COL0ROW1 = 1,\n COL0ROW2 = 2,\n COL0ROW3 = 3,\n COL1ROW0 = 4,\n COL1ROW1 = 5,\n COL1ROW2 = 6,\n COL1ROW3 = 7,\n COL2ROW0 = 8,\n COL2ROW1 = 9,\n COL2ROW2 = 10,\n COL2ROW3 = 11,\n COL3ROW0 = 12,\n COL3ROW1 = 13,\n COL3ROW2 = 14,\n COL3ROW3 = 15\n}\n\nconst DEFAULT_FOVY = (45 * Math.PI) / 180;\nconst DEFAULT_ASPECT = 1;\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 500;\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n\n/** 4x4 matrix */\nexport default class Matrix4 extends Matrix {\n static get IDENTITY(): Readonly<Matrix4> {\n return getIdentityMatrix();\n }\n\n static get ZERO(): Readonly<Matrix4> {\n return getZeroMatrix();\n }\n\n get ELEMENTS(): number {\n return 16;\n }\n\n get RANK(): number {\n return 4;\n }\n\n get INDICES(): typeof INDICES {\n return INDICES;\n }\n\n constructor(array?: Readonly<NumericArray>) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else {\n this.identity();\n }\n }\n\n copy(array: Readonly<NumericArray>): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n set(\n m00: number,\n m10: number,\n m20: number,\n m30: number,\n m01: number,\n m11: number,\n m21: number,\n m31: number,\n m02: number,\n m12: number,\n m22: number,\n m32: number,\n m03: number,\n m13: number,\n m23: number,\n m33: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\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 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 ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n toRowMajor(result: NumericArray): NumericArray {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n\n // Constructors\n\n /** Set to identity matrix */\n identity(): this {\n return this.copy(IDENTITY_MATRIX);\n }\n\n /**\n *\n * @param object\n * @returns self\n */\n fromObject(object: {[key: string]: any}): this {\n return this.check();\n }\n\n /**\n * Calculates a 4x4 matrix from the given quaternion\n * @param quaternion Quaternion to create matrix from\n * @returns self\n */\n fromQuaternion(quaternion: Readonly<NumericArray>): this {\n mat4.fromQuat(this, quaternion);\n return this.check();\n }\n\n /**\n * Generates a frustum matrix with the given bounds\n * @param view.left - Left bound of the frustum\n * @param view.right - Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top - Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far - Far bound of the frustum. Can be set to Infinity.\n * @returns self\n */\n frustum(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n if (far === Infinity) {\n computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n } else {\n mat4.frustum(this, left, right, bottom, top, near, far);\n }\n return this.check();\n }\n\n /**\n * Generates a look-at matrix with the given eye position, focal point,\n * and up axis\n * @param view.eye - (vector) Position of the viewer\n * @param view.center - (vector) Point the viewer is looking at\n * @param view.up - (vector) Up axis\n * @returns self\n */\n lookAt(view: {\n eye: Readonly<NumericArray>;\n center?: Readonly<NumericArray>;\n up?: Readonly<NumericArray>;\n }): this {\n const {eye, center = [0, 0, 0], up = [0, 1, 0]} = view;\n mat4.lookAt(this, eye, center, up);\n return this.check();\n }\n\n /**\n * Generates a orthogonal projection matrix with the given bounds\n * from \"traditional\" view space parameters\n * @param view.left - Left bound of the frustum\n * @param view.right number Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top number Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far number Far bound of the frustum\n * @returns self\n */\n ortho(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near?: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n mat4.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n\n /**\n * Generates an orthogonal projection matrix with the same parameters\n * as a perspective matrix (plus focalDistance)\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. Typically viewport width / viewport height\n * @param view.focalDistance Distance in the view frustum used for extent calculations\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n orthographic(view: {\n fovy?: number;\n aspect?: number;\n focalDistance?: number;\n near?: number;\n far?: number;\n }): this {\n const {\n fovy = DEFAULT_FOVY,\n aspect = DEFAULT_ASPECT,\n focalDistance = 1,\n near = DEFAULT_NEAR,\n far = DEFAULT_FAR\n } = view;\n\n checkRadians(fovy);\n\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY); // focus_plane is the distance from the camera\n const right = top * aspect;\n\n return this.ortho({\n left: -right,\n right,\n bottom: -top,\n top,\n near,\n far\n });\n }\n\n /**\n * Generates a perspective projection matrix with the given bounds\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. typically viewport width/height\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n perspective(view: {fovy: number; aspect?: number; near?: number; far?: number}): this {\n const {fovy = (45 * Math.PI) / 180, aspect = 1, near = 0.1, far = 500} = view;\n checkRadians(fovy);\n mat4.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n\n // Accessors\n\n determinant(): number {\n return mat4.determinant(this);\n }\n\n /**\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 * @param result\n * @returns self\n */\n getScale(result: NumericArray = [-0, -0, -0]): NumericArray {\n // explicit is faster than hypot...\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n // result[0] = Math.hypot(this[0], this[1], this[2]);\n // result[1] = Math.hypot(this[4], this[5], this[6]);\n // result[2] = Math.hypot(this[8], this[9], this[10]);\n return result;\n }\n\n /**\n * Gets the translation portion, assuming the matrix is a affine transformation matrix.\n * @param result\n * @returns self\n */\n getTranslation(result: NumericArray = [-0, -0, -0]): NumericArray {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n\n /**\n * Gets upper left 3x3 pure rotation matrix (non-scaling), assume affine transformation matrix\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotation(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n\n /**\n *\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotationMatrix3(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n\n // Modifiers\n\n transpose(): this {\n mat4.transpose(this, this);\n return this.check();\n }\n\n invert(): this {\n mat4.invert(this, this);\n return this.check();\n }\n\n // Operations\n\n multiplyLeft(a: Readonly<NumericArray>): this {\n mat4.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a: Readonly<NumericArray>): this {\n mat4.multiply(this, this, a);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the X axis\n rotateX(radians: number): this {\n mat4.rotateX(this, this, radians);\n // mat4.rotate(this, this, radians, [1, 0, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Y axis.\n rotateY(radians: number): this {\n mat4.rotateY(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 1, 0]);\n return this.check();\n }\n\n /**\n * Rotates a matrix by the given angle around the Z axis.\n * @param radians\n * @returns self\n */\n rotateZ(radians: number): this {\n mat4.rotateZ(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 0, 1]);\n return this.check();\n }\n\n /**\n *\n * @param param0\n * @returns self\n */\n rotateXYZ(angleXYZ: Readonly<NumericArray>): this {\n return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n }\n\n /**\n *\n * @param radians\n * @param axis\n * @returns self\n */\n rotateAxis(radians: number, axis: Readonly<NumericArray>): this {\n mat4.rotate(this, this, radians, axis);\n return this.check();\n }\n\n /**\n *\n * @param factor\n * @returns self\n */\n scale(factor: number | Readonly<NumericArray>): this {\n mat4.scale(this, this, Array.isArray(factor) ? factor : [factor, factor, factor]);\n return this.check();\n }\n\n /**\n *\n * @param vec\n * @returns self\n */\n translate(vector: Readonly<NumericArray>): this {\n mat4.translate(this, this, vector);\n return this.check();\n }\n\n // Transforms\n\n /**\n * Transforms any 2, 3 or 4 element vector. 2 and 3 elements are treated as points\n * @param vector\n * @param result\n * @returns self\n */\n transform(vector: Readonly<NumericArray>, result: NumericArray): NumericArray {\n if (vector.length === 4) {\n result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n checkVector(result, 4);\n return result;\n }\n return this.transformAsPoint(vector, result);\n }\n\n /**\n * Transforms any 2 or 3 element array as point (w implicitly 1)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsPoint(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n const {length} = vector;\n let out: NumericArray;\n switch (length) {\n case 2:\n out = vec2.transformMat4(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /**\n * Transforms any 2 or 3 element array as vector (w implicitly 0)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n let out: NumericArray;\n switch (vector.length) {\n case 2:\n out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /** @deprecated */\n transformPoint(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformDirection(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {\n return this.transformAsVector(vector, result);\n }\n\n // three.js math API compatibility\n\n makeRotationX(radians: number): this {\n return this.identity().rotateX(radians);\n }\n\n makeTranslation(x: number, y: number, z: number): this {\n return this.identity().translate([x, y, z]);\n }\n}\n\n// TODO initializing static members directly is an option, but make sure no tree-shaking issues\nlet ZERO: Matrix4;\nlet IDENTITY: Matrix4;\n\nfunction getZeroMatrix(): Readonly<Matrix4> {\n if (!ZERO) {\n ZERO = new Matrix4([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO);\n }\n return ZERO;\n}\n\nfunction getIdentityMatrix(): Matrix4 {\n if (!IDENTITY) {\n IDENTITY = new Matrix4();\n Object.freeze(IDENTITY);\n }\n return IDENTITY;\n}\n\n// HELPER FUNCTIONS\n\nfunction checkRadians(possiblyDegrees: number) {\n if (possiblyDegrees > Math.PI * 2) {\n throw Error('expected radians');\n }\n}\n\n// eslint-disable-next-line max-params\nfunction computeInfinitePerspectiveOffCenter(\n result: NumericArray,\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number\n): NumericArray {\n const column0Row0 = (2 * near) / (right - left);\n const column1Row1 = (2 * near) / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1;\n const column2Row3 = -1;\n const column3Row2 = -2 * near;\n result[0] = column0Row0;\n result[1] = 0;\n result[2] = 0;\n result[3] = 0;\n result[4] = 0;\n result[5] = column1Row1;\n result[6] = 0;\n result[7] = 0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0;\n result[13] = 0;\n result[14] = column3Row2;\n result[15] = 0;\n return result;\n}\n"],"file":"matrix4.js"}
@@ -32,18 +32,17 @@ var _assert = _interopRequireDefault(require("./assert"));
32
32
 
33
33
  var RADIANS_TO_DEGREES = 1 / Math.PI * 180;
34
34
  var DEGREES_TO_RADIANS = 1 / 180 * Math.PI;
35
- var config = {};
35
+ var config = {
36
+ EPSILON: 1e-12,
37
+ debug: false,
38
+ precision: 4,
39
+ printTypes: false,
40
+ printDegrees: false,
41
+ printRowMajor: true
42
+ };
36
43
  exports.config = config;
37
- config.EPSILON = 1e-12;
38
- config.debug = false;
39
- config.precision = 4;
40
- config.printTypes = false;
41
- config.printDegrees = false;
42
- config.printRowMajor = true;
43
-
44
- function configure() {
45
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
46
44
 
45
+ function configure(options) {
47
46
  for (var key in options) {
48
47
  (0, _assert.default)(key in config);
49
48
  config[key] = options[key];
@@ -55,7 +54,7 @@ function configure() {
55
54
  function formatValue(value) {
56
55
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
57
56
  _ref$precision = _ref.precision,
58
- precision = _ref$precision === void 0 ? config.precision || 4 : _ref$precision;
57
+ precision = _ref$precision === void 0 ? config.precision : _ref$precision;
59
58
 
60
59
  value = round(value);
61
60
  return "".concat(parseFloat(value.toPrecision(precision)));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/common.ts"],"names":["RADIANS_TO_DEGREES","Math","PI","DEGREES_TO_RADIANS","config","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","configure","options","key","formatValue","value","round","parseFloat","toPrecision","isArray","Array","ArrayBuffer","isView","DataView","clone","array","slice","toRadians","degrees","radians","toDegrees","result","map","sin","angle","cos","tan","asin","acos","atan","clamp","min","max","lerp","a","b","t","ai","i","equals","epsilon","oldEpsilon","length","abs","exactEquals","constructor","withEpsilon","func","oldPrecision","duplicateArray"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport assert from './assert';\n\nimport type MathArray from '../classes/base/math-array';\n\nexport type ConfigurationOptions = {\n EPSILON?: number;\n debug?: boolean;\n precision?: number;\n printTypes?: boolean;\n printDegrees?: boolean;\n printRowMajor?: boolean;\n _cartographicRadians?: boolean;\n};\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\n/* eslint-disable no-shadow */\nexport const config: ConfigurationOptions = {};\n\nconfig.EPSILON = 1e-12;\nconfig.debug = false;\nconfig.precision = 4;\nconfig.printTypes = false;\nconfig.printDegrees = false;\nconfig.printRowMajor = true;\n\nexport function configure(options: ConfigurationOptions = {}): ConfigurationOptions {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(\n value: number,\n {precision = config.precision || 4}: ConfigurationOptions = {}\n): string {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n *\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n */\nexport function isArray(value: unknown): boolean {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\n\nexport function clone(array: NumericArray | MathArray): NumericArray {\n return 'clone' in array ? array.clone() : array.slice();\n}\n\nexport function toRadians(degrees: number): number;\nexport function toRadians(degrees: NumericArray): NumericArray;\n\nexport function toRadians(degrees: number | NumericArray): number | NumericArray {\n return radians(degrees as NumericArray);\n}\n\nexport function toDegrees(degrees: number): number;\nexport function toDegrees(degrees: NumericArray): NumericArray;\n\nexport function toDegrees(radians: number | NumericArray): number | NumericArray {\n return degrees(radians as NumericArray);\n}\n\n// GLSL math function equivalents - Works on both single values and vectors\n\n/**\n * \"GLSL equivalent\" radians: Works on single values and vectors\n */\nexport function radians(degrees: number): number;\nexport function radians(degrees: NumericArray, result?: NumericArray): NumericArray;\n\nexport function radians(\n degrees: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\n\n/**\n * \"GLSL equivalent\" degrees: Works on single values and vectors\n */\nexport function degrees(radians: number): number;\nexport function degrees(radians: NumericArray, result?: NumericArray): NumericArray;\n\nexport function degrees(\n radians: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.atan(angle), result);\n}\n\n/**\n * GLSL style value clamping: Works on single values and vectors\n */\nexport function clamp(value: number, min: number, max: number): number;\nexport function clamp(value: NumericArray, min: number, max: number): NumericArray;\n\nexport function clamp(\n value: number | NumericArray,\n min: number,\n max: number\n): number | NumericArray {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\n\n/**\n * Interpolate between two numbers or two arrays\n */\nexport function lerp(a: number, b: number, t: number): number;\nexport function lerp(a: NumericArray, b: NumericArray, t: number): NumericArray;\n\nexport function lerp(\n a: number | NumericArray,\n b: number | NumericArray,\n t: number\n): number | NumericArray {\n if (isArray(a)) {\n return (a as NumericArray).map((ai: number, i: number) => lerp(ai, (b as NumericArray)[i], t));\n }\n return t * (b as number) + (1 - t) * (a as number);\n}\n\n/* eslint-disable */\n\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a: any, b: any, epsilon?: number): boolean {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\nexport function exactEquals(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/* eslint-enable */\n\nexport function withEpsilon(epsilon: number, func: () => any): any {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n\n// HELPERS\n\nfunction round(value: number): number {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array: NumericArray): NumericArray {\n // @ts-expect-error We check for math.gl class methods\n return array.clone ? array.clone() : (new Array(array.length) as number[]);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(\n value: number | NumericArray,\n func: (x: number, index?: number, result?: NumericArray) => number,\n result?: NumericArray\n): number | NumericArray {\n if (isArray(value)) {\n const array = value as NumericArray;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value as number);\n}\n"],"file":"common.js"}
1
+ {"version":3,"sources":["../../../src/lib/common.ts"],"names":["RADIANS_TO_DEGREES","Math","PI","DEGREES_TO_RADIANS","config","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","configure","options","key","formatValue","value","round","parseFloat","toPrecision","isArray","Array","ArrayBuffer","isView","DataView","clone","array","slice","toRadians","degrees","radians","toDegrees","result","map","sin","angle","cos","tan","asin","acos","atan","clamp","min","max","lerp","a","b","t","ai","i","equals","epsilon","oldEpsilon","length","abs","exactEquals","constructor","withEpsilon","func","oldPrecision","duplicateArray"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport assert from './assert';\n\nimport type MathArray from '../classes/base/math-array';\n\nexport type ConfigurationOptions = {\n EPSILON: number;\n debug?: boolean;\n precision: number;\n printTypes?: boolean;\n printDegrees?: boolean;\n printRowMajor?: boolean;\n _cartographicRadians?: boolean;\n};\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\nexport const config: ConfigurationOptions = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true\n};\n\nexport function configure(options?: Partial<ConfigurationOptions>): ConfigurationOptions {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(\n value: number,\n {precision = config.precision}: {precision?: number} = {}\n): string {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n *\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n */\nexport function isArray(value: unknown): boolean {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\n\nexport function clone(array: NumericArray | MathArray): NumericArray {\n return 'clone' in array ? array.clone() : array.slice();\n}\n\nexport function toRadians(degrees: number): number;\nexport function toRadians(degrees: NumericArray): NumericArray;\n\nexport function toRadians(degrees: number | NumericArray): number | NumericArray {\n return radians(degrees as NumericArray);\n}\n\nexport function toDegrees(degrees: number): number;\nexport function toDegrees(degrees: NumericArray): NumericArray;\n\nexport function toDegrees(radians: number | NumericArray): number | NumericArray {\n return degrees(radians as NumericArray);\n}\n\n// GLSL math function equivalents - Works on both single values and vectors\n\n/**\n * \"GLSL equivalent\" radians: Works on single values and vectors\n */\nexport function radians(degrees: number): number;\nexport function radians(degrees: NumericArray, result?: NumericArray): NumericArray;\n\nexport function radians(\n degrees: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\n\n/**\n * \"GLSL equivalent\" degrees: Works on single values and vectors\n */\nexport function degrees(radians: number): number;\nexport function degrees(radians: NumericArray, result?: NumericArray): NumericArray;\n\nexport function degrees(\n radians: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.atan(angle), result);\n}\n\n/**\n * GLSL style value clamping: Works on single values and vectors\n */\nexport function clamp(value: number, min: number, max: number): number;\nexport function clamp(value: NumericArray, min: number, max: number): NumericArray;\n\nexport function clamp(\n value: number | NumericArray,\n min: number,\n max: number\n): number | NumericArray {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\n\n/**\n * Interpolate between two numbers or two arrays\n */\nexport function lerp(a: number, b: number, t: number): number;\nexport function lerp(a: NumericArray, b: NumericArray, t: number): NumericArray;\n\nexport function lerp(\n a: number | NumericArray,\n b: number | NumericArray,\n t: number\n): number | NumericArray {\n if (isArray(a)) {\n return (a as NumericArray).map((ai: number, i: number) => lerp(ai, (b as NumericArray)[i], t));\n }\n return t * (b as number) + (1 - t) * (a as number);\n}\n\n/* eslint-disable */\n\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a: any, b: any, epsilon?: number): boolean {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\nexport function exactEquals(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/* eslint-enable */\n\nexport function withEpsilon(epsilon: number, func: () => any): any {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n\n// HELPERS\n\nfunction round(value: number): number {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array: NumericArray): NumericArray {\n // @ts-expect-error We check for math.gl class methods\n return array.clone ? array.clone() : (new Array(array.length) as number[]);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(\n value: number | NumericArray,\n func: (x: number, index?: number, result?: NumericArray) => number,\n result?: NumericArray\n): number | NumericArray {\n if (isArray(value)) {\n const array = value as NumericArray;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value as number);\n}\n"],"file":"common.js"}
@@ -149,25 +149,27 @@ export default class Matrix3 extends Matrix {
149
149
  }
150
150
 
151
151
  transform(vector, result) {
152
+ let out;
153
+
152
154
  switch (vector.length) {
153
155
  case 2:
154
- result = vec2.transformMat3(result || [-0, -0], vector, this);
156
+ out = vec2.transformMat3(result || [-0, -0], vector, this);
155
157
  break;
156
158
 
157
159
  case 3:
158
- result = vec3.transformMat3(result || [-0, -0, -0], vector, this);
160
+ out = vec3.transformMat3(result || [-0, -0, -0], vector, this);
159
161
  break;
160
162
 
161
163
  case 4:
162
- result = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
164
+ out = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
163
165
  break;
164
166
 
165
167
  default:
166
168
  throw new Error('Illegal vector');
167
169
  }
168
170
 
169
- checkVector(result, vector.length);
170
- return result;
171
+ checkVector(out, vector.length);
172
+ return out;
171
173
  }
172
174
 
173
175
  transformVector(vector, result) {