@math.gl/core 3.6.0-alpha.4 → 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,"sources":["../../../src/classes/matrix3.ts"],"names":["Matrix","checkVector","vec4_transformMat3","mat3","vec2","vec3","INDICES","IDENTITY_MATRIX","Object","freeze","Matrix3","IDENTITY","getIdentityMatrix","ZERO","getZeroMatrix","ELEMENTS","RANK","constructor","array","args","arguments","length","Array","isArray","copy","identity","check","fromObject","object","fromQuaternion","q","fromQuat","set","m00","m10","m20","m01","m11","m21","m02","m12","m22","setRowMajor","determinant","transpose","invert","multiplyLeft","a","multiply","multiplyRight","rotate","radians","scale","factor","translate","vec","transform","vector","result","transformMat3","Error","transformVector","transformVector2","transformVector3","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":["Matrix","checkVector","vec4_transformMat3","mat3","vec2","vec3","INDICES","IDENTITY_MATRIX","Object","freeze","Matrix3","IDENTITY","getIdentityMatrix","ZERO","getZeroMatrix","ELEMENTS","RANK","constructor","array","args","arguments","length","Array","isArray","copy","identity","check","fromObject","object","fromQuaternion","q","fromQuat","set","m00","m10","m20","m01","m11","m21","m02","m12","m22","setRowMajor","determinant","transpose","invert","multiplyLeft","a","multiply","multiplyRight","rotate","radians","scale","factor","translate","vec","transform","vector","result","out","transformMat3","Error","transformVector","transformVector2","transformVector3","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"}
@@ -362,40 +362,43 @@ export default class Matrix4 extends Matrix {
362
362
  const {
363
363
  length
364
364
  } = vector;
365
+ let out;
365
366
 
366
367
  switch (length) {
367
368
  case 2:
368
- result = vec2.transformMat4(result || [-0, -0], vector, this);
369
+ out = vec2.transformMat4(result || [-0, -0], vector, this);
369
370
  break;
370
371
 
371
372
  case 3:
372
- result = vec3.transformMat4(result || [-0, -0, -0], vector, this);
373
+ out = vec3.transformMat4(result || [-0, -0, -0], vector, this);
373
374
  break;
374
375
 
375
376
  default:
376
377
  throw new Error('Illegal vector');
377
378
  }
378
379
 
379
- checkVector(result, vector.length);
380
- return result;
380
+ checkVector(out, vector.length);
381
+ return out;
381
382
  }
382
383
 
383
384
  transformAsVector(vector, result) {
385
+ let out;
386
+
384
387
  switch (vector.length) {
385
388
  case 2:
386
- result = vec2_transformMat4AsVector(result || [-0, -0], vector, this);
389
+ out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);
387
390
  break;
388
391
 
389
392
  case 3:
390
- result = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);
393
+ out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);
391
394
  break;
392
395
 
393
396
  default:
394
397
  throw new Error('Illegal vector');
395
398
  }
396
399
 
397
- checkVector(result, vector.length);
398
- return result;
400
+ checkVector(out, vector.length);
401
+ return out;
399
402
  }
400
403
 
401
404
  transformPoint(vector, result) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/matrix4.ts"],"names":["Matrix","checkVector","vec2_transformMat4AsVector","vec3_transformMat4AsVector","mat4","vec2","vec3","vec4","INDICES","DEFAULT_FOVY","Math","PI","DEFAULT_ASPECT","DEFAULT_NEAR","DEFAULT_FAR","IDENTITY_MATRIX","Object","freeze","Matrix4","IDENTITY","getIdentityMatrix","ZERO","getZeroMatrix","ELEMENTS","RANK","constructor","array","arguments","length","Array","isArray","copy","identity","check","set","m00","m10","m20","m30","m01","m11","m21","m31","m02","m12","m22","m32","m03","m13","m23","m33","setRowMajor","toRowMajor","result","fromObject","object","fromQuaternion","quaternion","fromQuat","frustum","view","left","right","bottom","top","near","far","Infinity","computeInfinitePerspectiveOffCenter","lookAt","eye","center","up","ortho","orthographic","fovy","aspect","focalDistance","checkRadians","halfY","tan","perspective","determinant","getScale","sqrt","getTranslation","getRotation","scaleResult","scale","inverseScale0","inverseScale1","inverseScale2","getRotationMatrix3","transpose","invert","multiplyLeft","a","multiply","multiplyRight","rotateX","radians","rotateY","rotateZ","rotateXYZ","angleXYZ","rotateAxis","axis","rotate","factor","translate","vector","transform","transformMat4","transformAsPoint","Error","transformAsVector","transformPoint","transformVector","transformDirection","makeRotationX","makeTranslation","x","y","z","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":["Matrix","checkVector","vec2_transformMat4AsVector","vec3_transformMat4AsVector","mat4","vec2","vec3","vec4","INDICES","DEFAULT_FOVY","Math","PI","DEFAULT_ASPECT","DEFAULT_NEAR","DEFAULT_FAR","IDENTITY_MATRIX","Object","freeze","Matrix4","IDENTITY","getIdentityMatrix","ZERO","getZeroMatrix","ELEMENTS","RANK","constructor","array","arguments","length","Array","isArray","copy","identity","check","set","m00","m10","m20","m30","m01","m11","m21","m31","m02","m12","m22","m32","m03","m13","m23","m33","setRowMajor","toRowMajor","result","fromObject","object","fromQuaternion","quaternion","fromQuat","frustum","view","left","right","bottom","top","near","far","Infinity","computeInfinitePerspectiveOffCenter","lookAt","eye","center","up","ortho","orthographic","fovy","aspect","focalDistance","checkRadians","halfY","tan","perspective","determinant","getScale","sqrt","getTranslation","getRotation","scaleResult","scale","inverseScale0","inverseScale1","inverseScale2","getRotationMatrix3","transpose","invert","multiplyLeft","a","multiply","multiplyRight","rotateX","radians","rotateY","rotateZ","rotateXYZ","angleXYZ","rotateAxis","axis","rotate","factor","translate","vector","transform","transformMat4","transformAsPoint","out","Error","transformAsVector","transformPoint","transformVector","transformDirection","makeRotationX","makeTranslation","x","y","z","possiblyDegrees","column0Row0","column1Row1","column2Row0","column2Row1","column2Row2","column2Row3","column3Row2"],"mappings":"AAEA,OAAOA,MAAP,MAAmB,eAAnB;AAEA,SAAQC,WAAR,QAA0B,mBAA1B;AAGA,SAAQC,0BAAR,EAAoCC,0BAApC,QAAqE,yBAArE;AACA,OAAO,KAAKC,IAAZ,MAAsB,gBAAtB;AACA,OAAO,KAAKC,IAAZ,MAAsB,gBAAtB;AACA,OAAO,KAAKC,IAAZ,MAAsB,gBAAtB;AACA,OAAO,KAAKC,IAAZ,MAAsB,gBAAtB;IAEKC,O;;WAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;AAAAA,EAAAA,O,CAAAA,O;GAAAA,O,KAAAA,O;;AAmBL,MAAMC,YAAY,GAAI,KAAKC,IAAI,CAACC,EAAX,GAAiB,GAAtC;AACA,MAAMC,cAAc,GAAG,CAAvB;AACA,MAAMC,YAAY,GAAG,GAArB;AACA,MAAMC,WAAW,GAAG,GAApB;AAEA,MAAMC,eAAe,GAAGC,MAAM,CAACC,MAAP,CAAc,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,EAAwC,CAAxC,EAA2C,CAA3C,EAA8C,CAA9C,CAAd,CAAxB;AAGA,eAAe,MAAMC,OAAN,SAAsBlB,MAAtB,CAA6B;AACvB,aAARmB,QAAQ,GAAsB;AACvC,WAAOC,iBAAiB,EAAxB;AACD;;AAEc,aAAJC,IAAI,GAAsB;AACnC,WAAOC,aAAa,EAApB;AACD;;AAEW,MAARC,QAAQ,GAAW;AACrB,WAAO,EAAP;AACD;;AAEO,MAAJC,IAAI,GAAW;AACjB,WAAO,CAAP;AACD;;AAEU,MAAPhB,OAAO,GAAmB;AAC5B,WAAOA,OAAP;AACD;;AAEDiB,EAAAA,WAAW,CAACC,KAAD,EAAiC;AAE1C,UAAM,CAAC,CAAP,EAAU,CAAC,CAAX,EAAc,CAAC,CAAf,EAAkB,CAAC,CAAnB,EAAsB,CAAC,CAAvB,EAA0B,CAAC,CAA3B,EAA8B,CAAC,CAA/B,EAAkC,CAAC,CAAnC,EAAsC,CAAC,CAAvC,EAA0C,CAAC,CAA3C,EAA8C,CAAC,CAA/C,EAAkD,CAAC,CAAnD,EAAsD,CAAC,CAAvD,EAA0D,CAAC,CAA3D,EAA8D,CAAC,CAA/D,EAAkE,CAAC,CAAnE;;AACA,QAAIC,SAAS,CAACC,MAAV,KAAqB,CAArB,IAA0BC,KAAK,CAACC,OAAN,CAAcJ,KAAd,CAA9B,EAAoD;AAClD,WAAKK,IAAL,CAAUL,KAAV;AACD,KAFD,MAEO;AACL,WAAKM,QAAL;AACD;AACF;;AAEDD,EAAAA,IAAI,CAACL,KAAD,EAAsC;AACxC,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,EAAL,IAAWA,KAAK,CAAC,EAAD,CAAhB;AACA,SAAK,EAAL,IAAWA,KAAK,CAAC,EAAD,CAAhB;AACA,SAAK,EAAL,IAAWA,KAAK,CAAC,EAAD,CAAhB;AACA,SAAK,EAAL,IAAWA,KAAK,CAAC,EAAD,CAAhB;AACA,SAAK,EAAL,IAAWA,KAAK,CAAC,EAAD,CAAhB;AACA,SAAK,EAAL,IAAWA,KAAK,CAAC,EAAD,CAAhB;AACA,WAAO,KAAKO,KAAL,EAAP;AACD;;AAGDC,EAAAA,GAAG,CACDC,GADC,EAEDC,GAFC,EAGDC,GAHC,EAIDC,GAJC,EAKDC,GALC,EAMDC,GANC,EAODC,GAPC,EAQDC,GARC,EASDC,GATC,EAUDC,GAVC,EAWDC,GAXC,EAYDC,GAZC,EAaDC,GAbC,EAcDC,GAdC,EAeDC,GAfC,EAgBDC,GAhBC,EAiBK;AACN,SAAK,CAAL,IAAUf,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,WAAO,KAAKjB,KAAL,EAAP;AACD;;AAIDkB,EAAAA,WAAW,CACThB,GADS,EAETI,GAFS,EAGTI,GAHS,EAITI,GAJS,EAKTX,GALS,EAMTI,GANS,EAOTI,GAPS,EAQTI,GARS,EASTX,GATS,EAUTI,GAVS,EAWTI,GAXS,EAYTI,GAZS,EAaTX,GAbS,EAcTI,GAdS,EAeTI,GAfS,EAgBTI,GAhBS,EAiBH;AACN,SAAK,CAAL,IAAUf,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,CAAL,IAAUC,GAAV;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,SAAK,EAAL,IAAWC,GAAX;AACA,WAAO,KAAKjB,KAAL,EAAP;AACD;;AAEDmB,EAAAA,UAAU,CAACC,MAAD,EAAqC;AAC7CA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,EAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,EAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,KAAK,EAAL,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,KAAK,EAAL,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,KAAK,CAAL,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,KAAK,CAAL,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,KAAK,EAAL,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,KAAK,EAAL,CAAb;AACA,WAAOA,MAAP;AACD;;AAKDrB,EAAAA,QAAQ,GAAS;AACf,WAAO,KAAKD,IAAL,CAAUhB,eAAV,CAAP;AACD;;AAODuC,EAAAA,UAAU,CAACC,MAAD,EAAqC;AAC7C,WAAO,KAAKtB,KAAL,EAAP;AACD;;AAODuB,EAAAA,cAAc,CAACC,UAAD,EAA2C;AACvDrD,IAAAA,IAAI,CAACsD,QAAL,CAAc,IAAd,EAAoBD,UAApB;AACA,WAAO,KAAKxB,KAAL,EAAP;AACD;;AAYD0B,EAAAA,OAAO,CAACC,IAAD,EAOE;AACP,UAAM;AAACC,MAAAA,IAAD;AAAOC,MAAAA,KAAP;AAAcC,MAAAA,MAAd;AAAsBC,MAAAA,GAAtB;AAA2BC,MAAAA,IAAI,GAAGpD,YAAlC;AAAgDqD,MAAAA,GAAG,GAAGpD;AAAtD,QAAqE8C,IAA3E;;AACA,QAAIM,GAAG,KAAKC,QAAZ,EAAsB;AACpBC,MAAAA,mCAAmC,CAAC,IAAD,EAAOP,IAAP,EAAaC,KAAb,EAAoBC,MAApB,EAA4BC,GAA5B,EAAiCC,IAAjC,CAAnC;AACD,KAFD,MAEO;AACL7D,MAAAA,IAAI,CAACuD,OAAL,CAAa,IAAb,EAAmBE,IAAnB,EAAyBC,KAAzB,EAAgCC,MAAhC,EAAwCC,GAAxC,EAA6CC,IAA7C,EAAmDC,GAAnD;AACD;;AACD,WAAO,KAAKjC,KAAL,EAAP;AACD;;AAUDoC,EAAAA,MAAM,CAACT,IAAD,EAIG;AACP,UAAM;AAACU,MAAAA,GAAD;AAAMC,MAAAA,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf;AAA0BC,MAAAA,EAAE,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAA/B,QAA4CZ,IAAlD;AACAxD,IAAAA,IAAI,CAACiE,MAAL,CAAY,IAAZ,EAAkBC,GAAlB,EAAuBC,MAAvB,EAA+BC,EAA/B;AACA,WAAO,KAAKvC,KAAL,EAAP;AACD;;AAaDwC,EAAAA,KAAK,CAACb,IAAD,EAOI;AACP,UAAM;AAACC,MAAAA,IAAD;AAAOC,MAAAA,KAAP;AAAcC,MAAAA,MAAd;AAAsBC,MAAAA,GAAtB;AAA2BC,MAAAA,IAAI,GAAGpD,YAAlC;AAAgDqD,MAAAA,GAAG,GAAGpD;AAAtD,QAAqE8C,IAA3E;AACAxD,IAAAA,IAAI,CAACqE,KAAL,CAAW,IAAX,EAAiBZ,IAAjB,EAAuBC,KAAvB,EAA8BC,MAA9B,EAAsCC,GAAtC,EAA2CC,IAA3C,EAAiDC,GAAjD;AACA,WAAO,KAAKjC,KAAL,EAAP;AACD;;AAYDyC,EAAAA,YAAY,CAACd,IAAD,EAMH;AACP,UAAM;AACJe,MAAAA,IAAI,GAAGlE,YADH;AAEJmE,MAAAA,MAAM,GAAGhE,cAFL;AAGJiE,MAAAA,aAAa,GAAG,CAHZ;AAIJZ,MAAAA,IAAI,GAAGpD,YAJH;AAKJqD,MAAAA,GAAG,GAAGpD;AALF,QAMF8C,IANJ;AAQAkB,IAAAA,YAAY,CAACH,IAAD,CAAZ;AAEA,UAAMI,KAAK,GAAGJ,IAAI,GAAG,CAArB;AACA,UAAMX,GAAG,GAAGa,aAAa,GAAGnE,IAAI,CAACsE,GAAL,CAASD,KAAT,CAA5B;AACA,UAAMjB,KAAK,GAAGE,GAAG,GAAGY,MAApB;AAEA,WAAO,KAAKH,KAAL,CAAW;AAChBZ,MAAAA,IAAI,EAAE,CAACC,KADS;AAEhBA,MAAAA,KAFgB;AAGhBC,MAAAA,MAAM,EAAE,CAACC,GAHO;AAIhBA,MAAAA,GAJgB;AAKhBC,MAAAA,IALgB;AAMhBC,MAAAA;AANgB,KAAX,CAAP;AAQD;;AAUDe,EAAAA,WAAW,CAACrB,IAAD,EAA2E;AACpF,UAAM;AAACe,MAAAA,IAAI,GAAI,KAAKjE,IAAI,CAACC,EAAX,GAAiB,GAAzB;AAA8BiE,MAAAA,MAAM,GAAG,CAAvC;AAA0CX,MAAAA,IAAI,GAAG,GAAjD;AAAsDC,MAAAA,GAAG,GAAG;AAA5D,QAAmEN,IAAzE;AACAkB,IAAAA,YAAY,CAACH,IAAD,CAAZ;AACAvE,IAAAA,IAAI,CAAC6E,WAAL,CAAiB,IAAjB,EAAuBN,IAAvB,EAA6BC,MAA7B,EAAqCX,IAArC,EAA2CC,GAA3C;AACA,WAAO,KAAKjC,KAAL,EAAP;AACD;;AAIDiD,EAAAA,WAAW,GAAW;AACpB,WAAO9E,IAAI,CAAC8E,WAAL,CAAiB,IAAjB,CAAP;AACD;;AAQDC,EAAAA,QAAQ,CAAC9B,MAAoB,GAAG,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,CAAxB,EAAoD;AAE1DA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY3C,IAAI,CAAC0E,IAAL,CAAU,KAAK,CAAL,IAAU,KAAK,CAAL,CAAV,GAAoB,KAAK,CAAL,IAAU,KAAK,CAAL,CAA9B,GAAwC,KAAK,CAAL,IAAU,KAAK,CAAL,CAA5D,CAAZ;AACA/B,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY3C,IAAI,CAAC0E,IAAL,CAAU,KAAK,CAAL,IAAU,KAAK,CAAL,CAAV,GAAoB,KAAK,CAAL,IAAU,KAAK,CAAL,CAA9B,GAAwC,KAAK,CAAL,IAAU,KAAK,CAAL,CAA5D,CAAZ;AACA/B,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY3C,IAAI,CAAC0E,IAAL,CAAU,KAAK,CAAL,IAAU,KAAK,CAAL,CAAV,GAAoB,KAAK,CAAL,IAAU,KAAK,CAAL,CAA9B,GAAwC,KAAK,EAAL,IAAW,KAAK,EAAL,CAA7D,CAAZ;AAIA,WAAO/B,MAAP;AACD;;AAODgC,EAAAA,cAAc,CAAChC,MAAoB,GAAG,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,CAAxB,EAAoD;AAChEA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,EAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,EAAL,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,EAAL,CAAZ;AACA,WAAOA,MAAP;AACD;;AAQDiC,EAAAA,WAAW,CAACjC,MAAD,EAAwBkC,WAAxB,EAAkE;AAC3ElC,IAAAA,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,EAAa,CAAC,CAAd,EAAiB,CAAC,CAAlB,EAAqB,CAAC,CAAtB,EAAyB,CAAC,CAA1B,EAA6B,CAAC,CAA9B,EAAiC,CAAC,CAAlC,EAAqC,CAAC,CAAtC,EAAyC,CAAC,CAA1C,EAA6C,CAAC,CAA9C,EAAiD,CAAC,CAAlD,EAAqD,CAAC,CAAtD,EAAyD,CAAC,CAA1D,EAA6D,CAAC,CAA9D,CAAnB;AACAkC,IAAAA,WAAW,GAAGA,WAAW,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,CAA7B;AACA,UAAMC,KAAK,GAAG,KAAKL,QAAL,CAAcI,WAAd,CAAd;AACA,UAAME,aAAa,GAAG,IAAID,KAAK,CAAC,CAAD,CAA/B;AACA,UAAME,aAAa,GAAG,IAAIF,KAAK,CAAC,CAAD,CAA/B;AACA,UAAMG,aAAa,GAAG,IAAIH,KAAK,CAAC,CAAD,CAA/B;AACAnC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUoC,aAAtB;AACApC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUqC,aAAtB;AACArC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUsC,aAAtB;AACAtC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUoC,aAAtB;AACApC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUqC,aAAtB;AACArC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUsC,aAAtB;AACAtC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUoC,aAAtB;AACApC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUqC,aAAtB;AACArC,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,KAAK,EAAL,IAAWsC,aAAxB;AACAtC,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACAA,IAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACA,WAAOA,MAAP;AACD;;AAQDuC,EAAAA,kBAAkB,CAACvC,MAAD,EAAwBkC,WAAxB,EAAkE;AAClFlC,IAAAA,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,EAAa,CAAC,CAAd,EAAiB,CAAC,CAAlB,EAAqB,CAAC,CAAtB,EAAyB,CAAC,CAA1B,EAA6B,CAAC,CAA9B,EAAiC,CAAC,CAAlC,CAAnB;AACAkC,IAAAA,WAAW,GAAGA,WAAW,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,CAA7B;AACA,UAAMC,KAAK,GAAG,KAAKL,QAAL,CAAcI,WAAd,CAAd;AACA,UAAME,aAAa,GAAG,IAAID,KAAK,CAAC,CAAD,CAA/B;AACA,UAAME,aAAa,GAAG,IAAIF,KAAK,CAAC,CAAD,CAA/B;AACA,UAAMG,aAAa,GAAG,IAAIH,KAAK,CAAC,CAAD,CAA/B;AACAnC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUoC,aAAtB;AACApC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUqC,aAAtB;AACArC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUsC,aAAtB;AACAtC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUoC,aAAtB;AACApC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUqC,aAAtB;AACArC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUsC,aAAtB;AACAtC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUoC,aAAtB;AACApC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,CAAL,IAAUqC,aAAtB;AACArC,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,KAAK,EAAL,IAAWsC,aAAvB;AACA,WAAOtC,MAAP;AACD;;AAIDwC,EAAAA,SAAS,GAAS;AAChBzF,IAAAA,IAAI,CAACyF,SAAL,CAAe,IAAf,EAAqB,IAArB;AACA,WAAO,KAAK5D,KAAL,EAAP;AACD;;AAED6D,EAAAA,MAAM,GAAS;AACb1F,IAAAA,IAAI,CAAC0F,MAAL,CAAY,IAAZ,EAAkB,IAAlB;AACA,WAAO,KAAK7D,KAAL,EAAP;AACD;;AAID8D,EAAAA,YAAY,CAACC,CAAD,EAAkC;AAC5C5F,IAAAA,IAAI,CAAC6F,QAAL,CAAc,IAAd,EAAoBD,CAApB,EAAuB,IAAvB;AACA,WAAO,KAAK/D,KAAL,EAAP;AACD;;AAEDiE,EAAAA,aAAa,CAACF,CAAD,EAAkC;AAC7C5F,IAAAA,IAAI,CAAC6F,QAAL,CAAc,IAAd,EAAoB,IAApB,EAA0BD,CAA1B;AACA,WAAO,KAAK/D,KAAL,EAAP;AACD;;AAGDkE,EAAAA,OAAO,CAACC,OAAD,EAAwB;AAC7BhG,IAAAA,IAAI,CAAC+F,OAAL,CAAa,IAAb,EAAmB,IAAnB,EAAyBC,OAAzB;AAEA,WAAO,KAAKnE,KAAL,EAAP;AACD;;AAGDoE,EAAAA,OAAO,CAACD,OAAD,EAAwB;AAC7BhG,IAAAA,IAAI,CAACiG,OAAL,CAAa,IAAb,EAAmB,IAAnB,EAAyBD,OAAzB;AAEA,WAAO,KAAKnE,KAAL,EAAP;AACD;;AAODqE,EAAAA,OAAO,CAACF,OAAD,EAAwB;AAC7BhG,IAAAA,IAAI,CAACkG,OAAL,CAAa,IAAb,EAAmB,IAAnB,EAAyBF,OAAzB;AAEA,WAAO,KAAKnE,KAAL,EAAP;AACD;;AAODsE,EAAAA,SAAS,CAACC,QAAD,EAAyC;AAChD,WAAO,KAAKL,OAAL,CAAaK,QAAQ,CAAC,CAAD,CAArB,EAA0BH,OAA1B,CAAkCG,QAAQ,CAAC,CAAD,CAA1C,EAA+CF,OAA/C,CAAuDE,QAAQ,CAAC,CAAD,CAA/D,CAAP;AACD;;AAQDC,EAAAA,UAAU,CAACL,OAAD,EAAkBM,IAAlB,EAAsD;AAC9DtG,IAAAA,IAAI,CAACuG,MAAL,CAAY,IAAZ,EAAkB,IAAlB,EAAwBP,OAAxB,EAAiCM,IAAjC;AACA,WAAO,KAAKzE,KAAL,EAAP;AACD;;AAODuD,EAAAA,KAAK,CAACoB,MAAD,EAAgD;AACnDxG,IAAAA,IAAI,CAACoF,KAAL,CAAW,IAAX,EAAiB,IAAjB,EAAuB3D,KAAK,CAACC,OAAN,CAAc8E,MAAd,IAAwBA,MAAxB,GAAiC,CAACA,MAAD,EAASA,MAAT,EAAiBA,MAAjB,CAAxD;AACA,WAAO,KAAK3E,KAAL,EAAP;AACD;;AAOD4E,EAAAA,SAAS,CAACC,MAAD,EAAuC;AAC9C1G,IAAAA,IAAI,CAACyG,SAAL,CAAe,IAAf,EAAqB,IAArB,EAA2BC,MAA3B;AACA,WAAO,KAAK7E,KAAL,EAAP;AACD;;AAUD8E,EAAAA,SAAS,CAACD,MAAD,EAAiCzD,MAAjC,EAAqE;AAC5E,QAAIyD,MAAM,CAAClF,MAAP,KAAkB,CAAtB,EAAyB;AACvByB,MAAAA,MAAM,GAAG9C,IAAI,CAACyG,aAAL,CAAmB3D,MAAM,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,EAAa,CAAC,CAAd,CAA7B,EAA+CyD,MAA/C,EAAuD,IAAvD,CAAT;AACA7G,MAAAA,WAAW,CAACoD,MAAD,EAAS,CAAT,CAAX;AACA,aAAOA,MAAP;AACD;;AACD,WAAO,KAAK4D,gBAAL,CAAsBH,MAAtB,EAA8BzD,MAA9B,CAAP;AACD;;AAQD4D,EAAAA,gBAAgB,CAACH,MAAD,EAAiCzD,MAAjC,EAAsE;AACpF,UAAM;AAACzB,MAAAA;AAAD,QAAWkF,MAAjB;AACA,QAAII,GAAJ;;AACA,YAAQtF,MAAR;AACE,WAAK,CAAL;AACEsF,QAAAA,GAAG,GAAG7G,IAAI,CAAC2G,aAAL,CAAmB3D,MAAM,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,CAA7B,EAAuCyD,MAAvC,EAA+C,IAA/C,CAAN;AACA;;AACF,WAAK,CAAL;AACEI,QAAAA,GAAG,GAAG5G,IAAI,CAAC0G,aAAL,CAAmB3D,MAAM,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,CAA7B,EAA2CyD,MAA3C,EAAmD,IAAnD,CAAN;AACA;;AACF;AACE,cAAM,IAAIK,KAAJ,CAAU,gBAAV,CAAN;AARJ;;AAUAlH,IAAAA,WAAW,CAACiH,GAAD,EAAMJ,MAAM,CAAClF,MAAb,CAAX;AACA,WAAOsF,GAAP;AACD;;AAQDE,EAAAA,iBAAiB,CAACN,MAAD,EAAiCzD,MAAjC,EAAsE;AACrF,QAAI6D,GAAJ;;AACA,YAAQJ,MAAM,CAAClF,MAAf;AACE,WAAK,CAAL;AACEsF,QAAAA,GAAG,GAAGhH,0BAA0B,CAACmD,MAAM,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,CAAX,EAAqByD,MAArB,EAA6B,IAA7B,CAAhC;AACA;;AACF,WAAK,CAAL;AACEI,QAAAA,GAAG,GAAG/G,0BAA0B,CAACkD,MAAM,IAAI,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAC,CAAV,CAAX,EAAyByD,MAAzB,EAAiC,IAAjC,CAAhC;AACA;;AACF;AACE,cAAM,IAAIK,KAAJ,CAAU,gBAAV,CAAN;AARJ;;AAUAlH,IAAAA,WAAW,CAACiH,GAAD,EAAMJ,MAAM,CAAClF,MAAb,CAAX;AACA,WAAOsF,GAAP;AACD;;AAGDG,EAAAA,cAAc,CAACP,MAAD,EAAiCzD,MAAjC,EAAsE;AAClF,WAAO,KAAK4D,gBAAL,CAAsBH,MAAtB,EAA8BzD,MAA9B,CAAP;AACD;;AAGDiE,EAAAA,eAAe,CAACR,MAAD,EAAiCzD,MAAjC,EAAsE;AACnF,WAAO,KAAK4D,gBAAL,CAAsBH,MAAtB,EAA8BzD,MAA9B,CAAP;AACD;;AAGDkE,EAAAA,kBAAkB,CAACT,MAAD,EAAiCzD,MAAjC,EAAsE;AACtF,WAAO,KAAK+D,iBAAL,CAAuBN,MAAvB,EAA+BzD,MAA/B,CAAP;AACD;;AAIDmE,EAAAA,aAAa,CAACpB,OAAD,EAAwB;AACnC,WAAO,KAAKpE,QAAL,GAAgBmE,OAAhB,CAAwBC,OAAxB,CAAP;AACD;;AAEDqB,EAAAA,eAAe,CAACC,CAAD,EAAYC,CAAZ,EAAuBC,CAAvB,EAAwC;AACrD,WAAO,KAAK5F,QAAL,GAAgB6E,SAAhB,CAA0B,CAACa,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAA1B,CAAP;AACD;;AArjByC;AAyjB5C,IAAIvG,IAAJ;AACA,IAAIF,QAAJ;;AAEA,SAASG,aAAT,GAA4C;AAC1C,MAAI,CAACD,IAAL,EAAW;AACTA,IAAAA,IAAI,GAAG,IAAIH,OAAJ,CAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,EAAwC,CAAxC,EAA2C,CAA3C,EAA8C,CAA9C,CAAZ,CAAP;AACAF,IAAAA,MAAM,CAACC,MAAP,CAAcI,IAAd;AACD;;AACD,SAAOA,IAAP;AACD;;AAED,SAASD,iBAAT,GAAsC;AACpC,MAAI,CAACD,QAAL,EAAe;AACbA,IAAAA,QAAQ,GAAG,IAAID,OAAJ,EAAX;AACAF,IAAAA,MAAM,CAACC,MAAP,CAAcE,QAAd;AACD;;AACD,SAAOA,QAAP;AACD;;AAID,SAAS2D,YAAT,CAAsB+C,eAAtB,EAA+C;AAC7C,MAAIA,eAAe,GAAGnH,IAAI,CAACC,EAAL,GAAU,CAAhC,EAAmC;AACjC,UAAMwG,KAAK,CAAC,kBAAD,CAAX;AACD;AACF;;AAGD,SAAS/C,mCAAT,CACEf,MADF,EAEEQ,IAFF,EAGEC,KAHF,EAIEC,MAJF,EAKEC,GALF,EAMEC,IANF,EAOgB;AACd,QAAM6D,WAAW,GAAI,IAAI7D,IAAL,IAAcH,KAAK,GAAGD,IAAtB,CAApB;AACA,QAAMkE,WAAW,GAAI,IAAI9D,IAAL,IAAcD,GAAG,GAAGD,MAApB,CAApB;AACA,QAAMiE,WAAW,GAAG,CAAClE,KAAK,GAAGD,IAAT,KAAkBC,KAAK,GAAGD,IAA1B,CAApB;AACA,QAAMoE,WAAW,GAAG,CAACjE,GAAG,GAAGD,MAAP,KAAkBC,GAAG,GAAGD,MAAxB,CAApB;AACA,QAAMmE,WAAW,GAAG,CAAC,CAArB;AACA,QAAMC,WAAW,GAAG,CAAC,CAArB;AACA,QAAMC,WAAW,GAAG,CAAC,CAAD,GAAKnE,IAAzB;AACAZ,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAYyE,WAAZ;AACAzE,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY0E,WAAZ;AACA1E,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAZ;AACAA,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY2E,WAAZ;AACA3E,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY4E,WAAZ;AACA5E,EAAAA,MAAM,CAAC,EAAD,CAAN,GAAa6E,WAAb;AACA7E,EAAAA,MAAM,CAAC,EAAD,CAAN,GAAa8E,WAAb;AACA9E,EAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACAA,EAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACAA,EAAAA,MAAM,CAAC,EAAD,CAAN,GAAa+E,WAAb;AACA/E,EAAAA,MAAM,CAAC,EAAD,CAAN,GAAa,CAAb;AACA,SAAOA,MAAP;AACD","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"}
@@ -1,14 +1,15 @@
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
- export const config = {};
5
- config.EPSILON = 1e-12;
6
- config.debug = false;
7
- config.precision = 4;
8
- config.printTypes = false;
9
- config.printDegrees = false;
10
- config.printRowMajor = true;
11
- export function configure(options = {}) {
4
+ export const config = {
5
+ EPSILON: 1e-12,
6
+ debug: false,
7
+ precision: 4,
8
+ printTypes: false,
9
+ printDegrees: false,
10
+ printRowMajor: true
11
+ };
12
+ export function configure(options) {
12
13
  for (const key in options) {
13
14
  assert(key in config);
14
15
  config[key] = options[key];
@@ -17,7 +18,7 @@ export function configure(options = {}) {
17
18
  return config;
18
19
  }
19
20
  export function formatValue(value, {
20
- precision = config.precision || 4
21
+ precision = config.precision
21
22
  } = {}) {
22
23
  value = round(value);
23
24
  return "".concat(parseFloat(value.toPrecision(precision)));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/common.ts"],"names":["assert","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":"AAGA,OAAOA,MAAP,MAAmB,UAAnB;AAcA,MAAMC,kBAAkB,GAAI,IAAIC,IAAI,CAACC,EAAV,GAAgB,GAA3C;AACA,MAAMC,kBAAkB,GAAI,IAAI,GAAL,GAAYF,IAAI,CAACC,EAA5C;AAIA,OAAO,MAAME,MAA4B,GAAG,EAArC;AAEPA,MAAM,CAACC,OAAP,GAAiB,KAAjB;AACAD,MAAM,CAACE,KAAP,GAAe,KAAf;AACAF,MAAM,CAACG,SAAP,GAAmB,CAAnB;AACAH,MAAM,CAACI,UAAP,GAAoB,KAApB;AACAJ,MAAM,CAACK,YAAP,GAAsB,KAAtB;AACAL,MAAM,CAACM,aAAP,GAAuB,IAAvB;AAEA,OAAO,SAASC,SAAT,CAAmBC,OAA6B,GAAG,EAAnD,EAA6E;AAElF,OAAK,MAAMC,GAAX,IAAkBD,OAAlB,EAA2B;AACzBb,IAAAA,MAAM,CAACc,GAAG,IAAIT,MAAR,CAAN;AACAA,IAAAA,MAAM,CAACS,GAAD,CAAN,GAAcD,OAAO,CAACC,GAAD,CAArB;AACD;;AACD,SAAOT,MAAP;AACD;AAQD,OAAO,SAASU,WAAT,CACLC,KADK,EAEL;AAACR,EAAAA,SAAS,GAAGH,MAAM,CAACG,SAAP,IAAoB;AAAjC,IAA4D,EAFvD,EAGG;AACRQ,EAAAA,KAAK,GAAGC,KAAK,CAACD,KAAD,CAAb;AAEA,mBAAUE,UAAU,CAACF,KAAK,CAACG,WAAN,CAAkBX,SAAlB,CAAD,CAApB;AACD;AAQD,OAAO,SAASY,OAAT,CAAiBJ,KAAjB,EAA0C;AAC/C,SAAOK,KAAK,CAACD,OAAN,CAAcJ,KAAd,KAAyBM,WAAW,CAACC,MAAZ,CAAmBP,KAAnB,KAA6B,EAAEA,KAAK,YAAYQ,QAAnB,CAA7D;AACD;AAED,OAAO,SAASC,KAAT,CAAeC,KAAf,EAA8D;AACnE,SAAO,WAAWA,KAAX,GAAmBA,KAAK,CAACD,KAAN,EAAnB,GAAmCC,KAAK,CAACC,KAAN,EAA1C;AACD;AAKD,OAAO,SAASC,SAAT,CAAmBC,OAAnB,EAA0E;AAC/E,SAAOC,OAAO,CAACD,OAAD,CAAd;AACD;AAKD,OAAO,SAASE,SAAT,CAAmBD,OAAnB,EAA0E;AAC/E,SAAOD,OAAO,CAACC,OAAD,CAAd;AACD;AAUD,OAAO,SAASA,OAAT,CACLD,OADK,EAELG,MAFK,EAGkB;AACvB,SAAOC,GAAG,CAACJ,OAAD,EAAWA,OAAD,IAAaA,OAAO,GAAGzB,kBAAjC,EAAqD4B,MAArD,CAAV;AACD;AAQD,OAAO,SAASH,OAAT,CACLC,OADK,EAELE,MAFK,EAGkB;AACvB,SAAOC,GAAG,CAACH,OAAD,EAAWA,OAAD,IAAaA,OAAO,GAAG7B,kBAAjC,EAAqD+B,MAArD,CAAV;AACD;AAMD,OAAO,SAASE,GAAT,CAAaJ,OAAb,EAA6CE,MAA7C,EAA2F;AAChG,SAAOC,GAAG,CAACH,OAAD,EAAWK,KAAD,IAAWjC,IAAI,CAACgC,GAAL,CAASC,KAAT,CAArB,EAAsCH,MAAtC,CAAV;AACD;AAMD,OAAO,SAASI,GAAT,CAAaN,OAAb,EAA6CE,MAA7C,EAA2F;AAChG,SAAOC,GAAG,CAACH,OAAD,EAAWK,KAAD,IAAWjC,IAAI,CAACkC,GAAL,CAASD,KAAT,CAArB,EAAsCH,MAAtC,CAAV;AACD;AAMD,OAAO,SAASK,GAAT,CAAaP,OAAb,EAA6CE,MAA7C,EAA2F;AAChG,SAAOC,GAAG,CAACH,OAAD,EAAWK,KAAD,IAAWjC,IAAI,CAACmC,GAAL,CAASF,KAAT,CAArB,EAAsCH,MAAtC,CAAV;AACD;AAMD,OAAO,SAASM,IAAT,CAAcR,OAAd,EAA8CE,MAA9C,EAA4F;AACjG,SAAOC,GAAG,CAACH,OAAD,EAAWK,KAAD,IAAWjC,IAAI,CAACoC,IAAL,CAAUH,KAAV,CAArB,EAAuCH,MAAvC,CAAV;AACD;AAMD,OAAO,SAASO,IAAT,CAAcT,OAAd,EAA8CE,MAA9C,EAA4F;AACjG,SAAOC,GAAG,CAACH,OAAD,EAAWK,KAAD,IAAWjC,IAAI,CAACqC,IAAL,CAAUJ,KAAV,CAArB,EAAuCH,MAAvC,CAAV;AACD;AAMD,OAAO,SAASQ,IAAT,CAAcV,OAAd,EAA8CE,MAA9C,EAA4F;AACjG,SAAOC,GAAG,CAACH,OAAD,EAAWK,KAAD,IAAWjC,IAAI,CAACsC,IAAL,CAAUL,KAAV,CAArB,EAAuCH,MAAvC,CAAV;AACD;AAQD,OAAO,SAASS,KAAT,CACLzB,KADK,EAEL0B,GAFK,EAGLC,GAHK,EAIkB;AACvB,SAAOV,GAAG,CAACjB,KAAD,EAASA,KAAD,IAAWd,IAAI,CAACyC,GAAL,CAASD,GAAT,EAAcxC,IAAI,CAACwC,GAAL,CAASC,GAAT,EAAc3B,KAAd,CAAd,CAAnB,CAAV;AACD;AAQD,OAAO,SAAS4B,IAAT,CACLC,CADK,EAELC,CAFK,EAGLC,CAHK,EAIkB;AACvB,MAAI3B,OAAO,CAACyB,CAAD,CAAX,EAAgB;AACd,WAAQA,CAAD,CAAoBZ,GAApB,CAAwB,CAACe,EAAD,EAAaC,CAAb,KAA2BL,IAAI,CAACI,EAAD,EAAMF,CAAD,CAAoBG,CAApB,CAAL,EAA6BF,CAA7B,CAAvD,CAAP;AACD;;AACD,SAAOA,CAAC,GAAID,CAAL,GAAoB,CAAC,IAAIC,CAAL,IAAWF,CAAtC;AACD;AAWD,OAAO,SAASK,MAAT,CAAgBL,CAAhB,EAAwBC,CAAxB,EAAgCK,OAAhC,EAA2D;AAChE,QAAMC,UAAU,GAAG/C,MAAM,CAACC,OAA1B;;AACA,MAAI6C,OAAJ,EAAa;AACX9C,IAAAA,MAAM,CAACC,OAAP,GAAiB6C,OAAjB;AACD;;AACD,MAAI;AACF,QAAIN,CAAC,KAAKC,CAAV,EAAa;AACX,aAAO,IAAP;AACD;;AACD,QAAI1B,OAAO,CAACyB,CAAD,CAAP,IAAczB,OAAO,CAAC0B,CAAD,CAAzB,EAA8B;AAC5B,UAAID,CAAC,CAACQ,MAAF,KAAaP,CAAC,CAACO,MAAnB,EAA2B;AACzB,eAAO,KAAP;AACD;;AACD,WAAK,IAAIJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,CAAC,CAACQ,MAAtB,EAA8B,EAAEJ,CAAhC,EAAmC;AAEjC,YAAI,CAACC,MAAM,CAACL,CAAC,CAACI,CAAD,CAAF,EAAOH,CAAC,CAACG,CAAD,CAAR,CAAX,EAAyB;AACvB,iBAAO,KAAP;AACD;AACF;;AACD,aAAO,IAAP;AACD;;AACD,QAAIJ,CAAC,IAAIA,CAAC,CAACK,MAAX,EAAmB;AACjB,aAAOL,CAAC,CAACK,MAAF,CAASJ,CAAT,CAAP;AACD;;AACD,QAAIA,CAAC,IAAIA,CAAC,CAACI,MAAX,EAAmB;AACjB,aAAOJ,CAAC,CAACI,MAAF,CAASL,CAAT,CAAP;AACD;;AACD,QAAI,OAAOA,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,aAAO5C,IAAI,CAACoD,GAAL,CAAST,CAAC,GAAGC,CAAb,KAAmBzC,MAAM,CAACC,OAAP,GAAiBJ,IAAI,CAACyC,GAAL,CAAS,CAAT,EAAYzC,IAAI,CAACoD,GAAL,CAAST,CAAT,CAAZ,EAAyB3C,IAAI,CAACoD,GAAL,CAASR,CAAT,CAAzB,CAA3C;AACD;;AACD,WAAO,KAAP;AACD,GA1BD,SA0BU;AACRzC,IAAAA,MAAM,CAACC,OAAP,GAAiB8C,UAAjB;AACD;AACF;AAED,OAAO,SAASG,WAAT,CAAqBV,CAArB,EAA6BC,CAA7B,EAA8C;AACnD,MAAID,CAAC,KAAKC,CAAV,EAAa;AACX,WAAO,IAAP;AACD;;AACD,MAAID,CAAC,IAAI,OAAOA,CAAP,KAAa,QAAlB,IAA8BC,CAA9B,IAAmC,OAAOA,CAAP,KAAa,QAApD,EAA8D;AAC5D,QAAID,CAAC,CAACW,WAAF,KAAkBV,CAAC,CAACU,WAAxB,EAAqC;AACnC,aAAO,KAAP;AACD;;AACD,QAAIX,CAAC,CAACU,WAAN,EAAmB;AACjB,aAAOV,CAAC,CAACU,WAAF,CAAcT,CAAd,CAAP;AACD;AACF;;AACD,MAAI1B,OAAO,CAACyB,CAAD,CAAP,IAAczB,OAAO,CAAC0B,CAAD,CAAzB,EAA8B;AAC5B,QAAID,CAAC,CAACQ,MAAF,KAAaP,CAAC,CAACO,MAAnB,EAA2B;AACzB,aAAO,KAAP;AACD;;AACD,SAAK,IAAIJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,CAAC,CAACQ,MAAtB,EAA8B,EAAEJ,CAAhC,EAAmC;AACjC,UAAI,CAACM,WAAW,CAACV,CAAC,CAACI,CAAD,CAAF,EAAOH,CAAC,CAACG,CAAD,CAAR,CAAhB,EAA8B;AAC5B,eAAO,KAAP;AACD;AACF;;AACD,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;AAID,OAAO,SAASQ,WAAT,CAAqBN,OAArB,EAAsCO,IAAtC,EAA4D;AACjE,QAAMC,YAAY,GAAGtD,MAAM,CAACC,OAA5B;AACAD,EAAAA,MAAM,CAACC,OAAP,GAAiB6C,OAAjB;AACA,MAAInC,KAAJ;;AACA,MAAI;AACFA,IAAAA,KAAK,GAAG0C,IAAI,EAAZ;AACD,GAFD,SAEU;AACRrD,IAAAA,MAAM,CAACC,OAAP,GAAiBqD,YAAjB;AACD;;AACD,SAAO3C,KAAP;AACD;;AAID,SAASC,KAAT,CAAeD,KAAf,EAAsC;AACpC,SAAOd,IAAI,CAACe,KAAL,CAAWD,KAAK,GAAGX,MAAM,CAACC,OAA1B,IAAqCD,MAAM,CAACC,OAAnD;AACD;;AAGD,SAASsD,cAAT,CAAwBlC,KAAxB,EAA2D;AAEzD,SAAOA,KAAK,CAACD,KAAN,GAAcC,KAAK,CAACD,KAAN,EAAd,GAA+B,IAAIJ,KAAJ,CAAUK,KAAK,CAAC2B,MAAhB,CAAtC;AACD;;AAID,SAASpB,GAAT,CACEjB,KADF,EAEE0C,IAFF,EAGE1B,MAHF,EAIyB;AACvB,MAAIZ,OAAO,CAACJ,KAAD,CAAX,EAAoB;AAClB,UAAMU,KAAK,GAAGV,KAAd;AACAgB,IAAAA,MAAM,GAAGA,MAAM,IAAI4B,cAAc,CAAClC,KAAD,CAAjC;;AACA,SAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGjB,MAAM,CAACqB,MAAX,IAAqBJ,CAAC,GAAGvB,KAAK,CAAC2B,MAA/C,EAAuD,EAAEJ,CAAzD,EAA4D;AAC1DjB,MAAAA,MAAM,CAACiB,CAAD,CAAN,GAAYS,IAAI,CAAC1C,KAAK,CAACiC,CAAD,CAAN,EAAWA,CAAX,EAAcjB,MAAd,CAAhB;AACD;;AACD,WAAOA,MAAP;AACD;;AACD,SAAO0B,IAAI,CAAC1C,KAAD,CAAX;AACD","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":["assert","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"}
@@ -1,23 +1,25 @@
1
1
  import { NumericArray } from '@math.gl/types';
2
2
  import type MathArray from '../classes/base/math-array';
3
3
  export declare type ConfigurationOptions = {
4
- EPSILON?: number;
4
+ EPSILON: number;
5
5
  debug?: boolean;
6
- precision?: number;
6
+ precision: number;
7
7
  printTypes?: boolean;
8
8
  printDegrees?: boolean;
9
9
  printRowMajor?: boolean;
10
10
  _cartographicRadians?: boolean;
11
11
  };
12
12
  export declare const config: ConfigurationOptions;
13
- export declare function configure(options?: ConfigurationOptions): ConfigurationOptions;
13
+ export declare function configure(options?: Partial<ConfigurationOptions>): ConfigurationOptions;
14
14
  /**
15
15
  * Formats a value into a string
16
16
  * @param value
17
17
  * @param param1
18
18
  * @returns
19
19
  */
20
- export declare function formatValue(value: number, { precision }?: ConfigurationOptions): string;
20
+ export declare function formatValue(value: number, { precision }?: {
21
+ precision?: number;
22
+ }): string;
21
23
  /**
22
24
  * Check if value is an "array"
23
25
  * Returns `true` if value is either an array or a typed array
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/lib/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/lib/common.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,15 @@ 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
4
  // TODO - remove
5
- /* eslint-disable no-shadow */
6
- export const config = {};
7
- config.EPSILON = 1e-12;
8
- config.debug = false;
9
- config.precision = 4;
10
- config.printTypes = false;
11
- config.printDegrees = false;
12
- config.printRowMajor = true;
13
- export function configure(options = {}) {
5
+ export const config = {
6
+ EPSILON: 1e-12,
7
+ debug: false,
8
+ precision: 4,
9
+ printTypes: false,
10
+ printDegrees: false,
11
+ printRowMajor: true
12
+ };
13
+ export function configure(options) {
14
14
  // Only copy existing keys
15
15
  for (const key in options) {
16
16
  assert(key in config);
@@ -24,7 +24,7 @@ export function configure(options = {}) {
24
24
  * @param param1
25
25
  * @returns
26
26
  */
27
- export function formatValue(value, { precision = config.precision || 4 } = {}) {
27
+ export function formatValue(value, { precision = config.precision } = {}) {
28
28
  value = round(value);
29
29
  // get rid of trailing zeros
30
30
  return `${parseFloat(value.toPrecision(precision))}`;
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "3.6.0-alpha.4",
8
+ "version": "3.6.0-alpha.5",
9
9
  "keywords": [
10
10
  "webgl",
11
11
  "javascript",
@@ -38,8 +38,8 @@
38
38
  ],
39
39
  "dependencies": {
40
40
  "@babel/runtime": "^7.12.0",
41
- "@math.gl/types": "3.6.0-alpha.4",
41
+ "@math.gl/types": "3.6.0-alpha.5",
42
42
  "gl-matrix": "^3.4.0"
43
43
  },
44
- "gitHead": "d2ce86da8b6f07f0af0236818138442f68e1d8e4"
44
+ "gitHead": "0b1aaa692eb5c59f1d8a3198a9fdbab54833e626"
45
45
  }
@@ -200,21 +200,22 @@ export default class Matrix3 extends Matrix {
200
200
 
201
201
  // Transforms
202
202
  transform(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {
203
+ let out: NumericArray;
203
204
  switch (vector.length) {
204
205
  case 2:
205
- result = vec2.transformMat3(result || [-0, -0], vector, this);
206
+ out = vec2.transformMat3(result || [-0, -0], vector, this);
206
207
  break;
207
208
  case 3:
208
- result = vec3.transformMat3(result || [-0, -0, -0], vector, this);
209
+ out = vec3.transformMat3(result || [-0, -0, -0], vector, this);
209
210
  break;
210
211
  case 4:
211
- result = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
212
+ out = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
212
213
  break;
213
214
  default:
214
215
  throw new Error('Illegal vector');
215
216
  }
216
- checkVector(result, vector.length);
217
- return result;
217
+ checkVector(out, vector.length);
218
+ return out;
218
219
  }
219
220
 
220
221
  /** @deprecated */
@@ -541,20 +541,21 @@ export default class Matrix4 extends Matrix {
541
541
  * @param result
542
542
  * @returns self
543
543
  */
544
- transformAsPoint(vector: Readonly<NumericArray>, result?: NumericArray) {
544
+ transformAsPoint(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {
545
545
  const {length} = vector;
546
+ let out: NumericArray;
546
547
  switch (length) {
547
548
  case 2:
548
- result = vec2.transformMat4(result || [-0, -0], vector, this);
549
+ out = vec2.transformMat4(result || [-0, -0], vector, this);
549
550
  break;
550
551
  case 3:
551
- result = vec3.transformMat4(result || [-0, -0, -0], vector, this);
552
+ out = vec3.transformMat4(result || [-0, -0, -0], vector, this);
552
553
  break;
553
554
  default:
554
555
  throw new Error('Illegal vector');
555
556
  }
556
- checkVector(result, vector.length);
557
- return result;
557
+ checkVector(out, vector.length);
558
+ return out;
558
559
  }
559
560
 
560
561
  /**
@@ -564,18 +565,19 @@ export default class Matrix4 extends Matrix {
564
565
  * @returns self
565
566
  */
566
567
  transformAsVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {
568
+ let out: NumericArray;
567
569
  switch (vector.length) {
568
570
  case 2:
569
- result = vec2_transformMat4AsVector(result || [-0, -0], vector, this);
571
+ out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);
570
572
  break;
571
573
  case 3:
572
- result = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);
574
+ out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);
573
575
  break;
574
576
  default:
575
577
  throw new Error('Illegal vector');
576
578
  }
577
- checkVector(result, vector.length);
578
- return result;
579
+ checkVector(out, vector.length);
580
+ return out;
579
581
  }
580
582
 
581
583
  /** @deprecated */