@math.gl/core 3.6.0-alpha.1 → 3.6.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/classes/base/math-array.d.ts +61 -31
  2. package/dist/classes/base/math-array.d.ts.map +1 -1
  3. package/dist/classes/base/math-array.js +67 -65
  4. package/dist/classes/base/matrix.d.ts +12 -10
  5. package/dist/classes/base/matrix.d.ts.map +1 -1
  6. package/dist/classes/base/matrix.js +2 -10
  7. package/dist/classes/base/vector.d.ts +37 -25
  8. package/dist/classes/base/vector.d.ts.map +1 -1
  9. package/dist/classes/base/vector.js +17 -24
  10. package/dist/classes/euler.d.ts +59 -55
  11. package/dist/classes/euler.d.ts.map +1 -1
  12. package/dist/classes/euler.js +57 -77
  13. package/dist/classes/matrix3.d.ts +58 -41
  14. package/dist/classes/matrix3.d.ts.map +1 -1
  15. package/dist/classes/matrix3.js +68 -59
  16. package/dist/classes/matrix4.d.ts +214 -90
  17. package/dist/classes/matrix4.d.ts.map +1 -1
  18. package/dist/classes/matrix4.js +252 -171
  19. package/dist/classes/pose.d.ts +29 -26
  20. package/dist/classes/pose.d.ts.map +1 -1
  21. package/dist/classes/pose.js +6 -23
  22. package/dist/classes/quaternion.d.ts +61 -40
  23. package/dist/classes/quaternion.d.ts.map +1 -1
  24. package/dist/classes/quaternion.js +49 -53
  25. package/dist/classes/spherical-coordinates.d.ts +45 -25
  26. package/dist/classes/spherical-coordinates.d.ts.map +1 -1
  27. package/dist/classes/spherical-coordinates.js +30 -24
  28. package/dist/classes/vector2.d.ts +51 -15
  29. package/dist/classes/vector2.d.ts.map +1 -1
  30. package/dist/classes/vector2.js +29 -23
  31. package/dist/classes/vector3.d.ts +47 -32
  32. package/dist/classes/vector3.d.ts.map +1 -1
  33. package/dist/classes/vector3.js +16 -30
  34. package/dist/classes/vector4.d.ts +37 -19
  35. package/dist/classes/vector4.d.ts.map +1 -1
  36. package/dist/classes/vector4.js +12 -24
  37. package/dist/es5/classes/base/math-array.js +248 -179
  38. package/dist/es5/classes/base/math-array.js.map +1 -1
  39. package/dist/es5/classes/base/matrix.js +74 -54
  40. package/dist/es5/classes/base/matrix.js.map +1 -1
  41. package/dist/es5/classes/base/vector.js +167 -121
  42. package/dist/es5/classes/base/vector.js.map +1 -1
  43. package/dist/es5/classes/euler.js +575 -480
  44. package/dist/es5/classes/euler.js.map +1 -1
  45. package/dist/es5/classes/matrix3.js +234 -158
  46. package/dist/es5/classes/matrix3.js.map +1 -1
  47. package/dist/es5/classes/matrix4.js +510 -417
  48. package/dist/es5/classes/matrix4.js.map +1 -1
  49. package/dist/es5/classes/pose.js +126 -101
  50. package/dist/es5/classes/pose.js.map +1 -1
  51. package/dist/es5/classes/quaternion.js +285 -213
  52. package/dist/es5/classes/quaternion.js.map +1 -1
  53. package/dist/es5/classes/spherical-coordinates.js +170 -125
  54. package/dist/es5/classes/spherical-coordinates.js.map +1 -1
  55. package/dist/es5/classes/vector2.js +118 -76
  56. package/dist/es5/classes/vector2.js.map +1 -1
  57. package/dist/es5/classes/vector3.js +171 -119
  58. package/dist/es5/classes/vector3.js.map +1 -1
  59. package/dist/es5/classes/vector4.js +141 -94
  60. package/dist/es5/classes/vector4.js.map +1 -1
  61. package/dist/es5/index.js +34 -34
  62. package/dist/es5/lib/common.js +56 -30
  63. package/dist/es5/lib/common.js.map +1 -1
  64. package/dist/es5/lib/gl-matrix-extras.js +14 -14
  65. package/dist/es5/lib/gl-matrix-extras.js.map +1 -1
  66. package/dist/es5/lib/gl-matrix.d.js +2 -0
  67. package/dist/es5/lib/gl-matrix.d.js.map +1 -0
  68. package/dist/es5/lib/validators.js +5 -3
  69. package/dist/es5/lib/validators.js.map +1 -1
  70. package/dist/esm/classes/base/math-array.js +45 -47
  71. package/dist/esm/classes/base/math-array.js.map +1 -1
  72. package/dist/esm/classes/base/matrix.js +0 -11
  73. package/dist/esm/classes/base/matrix.js.map +1 -1
  74. package/dist/esm/classes/base/vector.js +0 -10
  75. package/dist/esm/classes/base/vector.js.map +1 -1
  76. package/dist/esm/classes/euler.js +61 -48
  77. package/dist/esm/classes/euler.js.map +1 -1
  78. package/dist/esm/classes/matrix3.js +55 -33
  79. package/dist/esm/classes/matrix3.js.map +1 -1
  80. package/dist/esm/classes/matrix4.js +156 -136
  81. package/dist/esm/classes/matrix4.js.map +1 -1
  82. package/dist/esm/classes/pose.js +8 -4
  83. package/dist/esm/classes/pose.js.map +1 -1
  84. package/dist/esm/classes/quaternion.js +37 -27
  85. package/dist/esm/classes/quaternion.js.map +1 -1
  86. package/dist/esm/classes/spherical-coordinates.js +15 -5
  87. package/dist/esm/classes/spherical-coordinates.js.map +1 -1
  88. package/dist/esm/classes/vector2.js.map +1 -1
  89. package/dist/esm/classes/vector3.js +7 -2
  90. package/dist/esm/classes/vector3.js.map +1 -1
  91. package/dist/esm/classes/vector4.js +7 -2
  92. package/dist/esm/classes/vector4.js.map +1 -1
  93. package/dist/esm/lib/common.js +8 -8
  94. package/dist/esm/lib/common.js.map +1 -1
  95. package/dist/esm/lib/gl-matrix-extras.js.map +1 -1
  96. package/dist/esm/lib/gl-matrix.d.js +2 -0
  97. package/dist/esm/lib/gl-matrix.d.js.map +1 -0
  98. package/dist/esm/lib/validators.js.map +1 -1
  99. package/dist/lib/common.d.ts +14 -11
  100. package/dist/lib/common.d.ts.map +1 -1
  101. package/dist/lib/common.js +10 -23
  102. package/dist/lib/gl-matrix-extras.d.ts +6 -5
  103. package/dist/lib/gl-matrix-extras.d.ts.map +1 -1
  104. package/dist/lib/gl-matrix-extras.js +0 -1
  105. package/dist/lib/validators.d.ts +5 -4
  106. package/dist/lib/validators.d.ts.map +1 -1
  107. package/dist/lib/validators.js +0 -19
  108. package/package.json +5 -5
  109. package/src/classes/base/math-array.ts +265 -0
  110. package/src/classes/base/{matrix.js → matrix.ts} +15 -19
  111. package/src/classes/base/{vector.js → vector.ts} +47 -54
  112. package/src/classes/{euler.js → euler.ts} +121 -221
  113. package/src/classes/matrix3.ts +253 -0
  114. package/src/classes/matrix4.ts +668 -0
  115. package/src/classes/{pose.js → pose.ts} +52 -49
  116. package/src/classes/{quaternion.js → quaternion.ts} +107 -95
  117. package/src/classes/{spherical-coordinates.js → spherical-coordinates.ts} +84 -54
  118. package/src/classes/vector2.ts +127 -0
  119. package/src/classes/{vector3.js → vector3.ts} +43 -55
  120. package/src/classes/{vector4.js → vector4.ts} +44 -48
  121. package/src/lib/common.ts +58 -37
  122. package/src/lib/gl-matrix-extras.ts +26 -5
  123. package/src/lib/gl-matrix.d.ts +266 -0
  124. package/src/lib/validators.ts +10 -6
  125. package/dist/es5/classes/base/math-array.d.js +0 -46
  126. package/dist/es5/classes/base/math-array.d.js.map +0 -1
  127. package/dist/es5/classes/base/matrix.d.js +0 -15
  128. package/dist/es5/classes/base/matrix.d.js.map +0 -1
  129. package/dist/es5/classes/base/vector.d.js +0 -24
  130. package/dist/es5/classes/base/vector.d.js.map +0 -1
  131. package/dist/es5/classes/euler.d.js +0 -45
  132. package/dist/es5/classes/euler.d.js.map +0 -1
  133. package/dist/es5/classes/matrix3.d.js +0 -25
  134. package/dist/es5/classes/matrix3.d.js.map +0 -1
  135. package/dist/es5/classes/matrix4.d.js +0 -25
  136. package/dist/es5/classes/matrix4.d.js.map +0 -1
  137. package/dist/es5/classes/pose.d.js +0 -25
  138. package/dist/es5/classes/pose.d.js.map +0 -1
  139. package/dist/es5/classes/quaternion.d.js +0 -27
  140. package/dist/es5/classes/quaternion.d.js.map +0 -1
  141. package/dist/es5/classes/spherical-coordinates.d.js +0 -27
  142. package/dist/es5/classes/spherical-coordinates.d.js.map +0 -1
  143. package/dist/es5/classes/vector2.d.js +0 -18
  144. package/dist/es5/classes/vector2.d.js.map +0 -1
  145. package/dist/es5/classes/vector3.d.js +0 -24
  146. package/dist/es5/classes/vector3.d.js.map +0 -1
  147. package/dist/es5/classes/vector4.d.js +0 -25
  148. package/dist/es5/classes/vector4.d.js.map +0 -1
  149. package/dist/esm/classes/base/math-array.d.js +0 -36
  150. package/dist/esm/classes/base/math-array.d.js.map +0 -1
  151. package/dist/esm/classes/base/matrix.d.js +0 -3
  152. package/dist/esm/classes/base/matrix.d.js.map +0 -1
  153. package/dist/esm/classes/base/vector.d.js +0 -13
  154. package/dist/esm/classes/base/vector.d.js.map +0 -1
  155. package/dist/esm/classes/euler.d.js +0 -55
  156. package/dist/esm/classes/euler.d.js.map +0 -1
  157. package/dist/esm/classes/matrix3.d.js +0 -15
  158. package/dist/esm/classes/matrix3.d.js.map +0 -1
  159. package/dist/esm/classes/matrix4.d.js +0 -15
  160. package/dist/esm/classes/matrix4.d.js.map +0 -1
  161. package/dist/esm/classes/pose.d.js +0 -18
  162. package/dist/esm/classes/pose.d.js.map +0 -1
  163. package/dist/esm/classes/quaternion.d.js +0 -19
  164. package/dist/esm/classes/quaternion.d.js.map +0 -1
  165. package/dist/esm/classes/spherical-coordinates.d.js +0 -22
  166. package/dist/esm/classes/spherical-coordinates.d.js.map +0 -1
  167. package/dist/esm/classes/vector2.d.js +0 -6
  168. package/dist/esm/classes/vector2.d.js.map +0 -1
  169. package/dist/esm/classes/vector3.d.js +0 -13
  170. package/dist/esm/classes/vector3.d.js.map +0 -1
  171. package/dist/esm/classes/vector4.d.js +0 -15
  172. package/dist/esm/classes/vector4.d.js.map +0 -1
  173. package/src/classes/base/math-array.d.ts +0 -55
  174. package/src/classes/base/math-array.js +0 -250
  175. package/src/classes/base/matrix.d.ts +0 -15
  176. package/src/classes/base/vector.d.ts +0 -45
  177. package/src/classes/euler.d.ts +0 -92
  178. package/src/classes/matrix3.d.ts +0 -91
  179. package/src/classes/matrix3.js +0 -225
  180. package/src/classes/matrix4.d.ts +0 -161
  181. package/src/classes/matrix4.js +0 -530
  182. package/src/classes/pose.d.ts +0 -92
  183. package/src/classes/quaternion.d.ts +0 -107
  184. package/src/classes/spherical-coordinates.d.ts +0 -87
  185. package/src/classes/vector2.d.ts +0 -65
  186. package/src/classes/vector2.js +0 -122
  187. package/src/classes/vector3.d.ts +0 -65
  188. package/src/classes/vector4.d.ts +0 -34
@@ -1,36 +1,66 @@
1
- export default class MathArray extends Array<any> {
2
- constructor(arrayLength?: number);
3
- constructor(arrayLength: number);
4
- constructor(...items: any[]);
5
- get ELEMENTS(): number;
6
- clone(): any;
7
- from(arrayOrObject: any): any;
8
- fromArray(array: any, offset?: number): MathArray;
9
- to(arrayOrObject: any): any;
1
+ import { NumericArray } from '@math.gl/types';
2
+ import { ConfigurationOptions } from '../../lib/common';
3
+ /** Base class for vectors and matrices */
4
+ export default abstract class MathArray extends Array<number> {
5
+ /** Number of elements (values) in this array */
6
+ abstract get ELEMENTS(): number;
7
+ abstract copy(vector: Readonly<NumericArray>): this;
8
+ abstract fromObject(object: object): this;
9
+ /**
10
+ * Clone the current object
11
+ * @returns a new copy of this object
12
+ */
13
+ clone(): this;
14
+ fromArray(array: Readonly<NumericArray>, offset?: number): this;
15
+ toArray<TypedArray>(targetArray: TypedArray, offset?: number): TypedArray;
16
+ toArray(targetArray?: number[], offset?: number): NumericArray;
17
+ from(arrayOrObject: Readonly<NumericArray> | object): this;
18
+ to<T extends NumericArray | object>(arrayOrObject: T): T;
10
19
  toTarget(target: any): any;
11
- toArray(array?: any[], offset?: number): any[];
20
+ /** @deprecated */
12
21
  toFloat32Array(): Float32Array;
13
- formatString(opts: any): string;
14
- equals(array: any): boolean;
15
- exactEquals(array: any): boolean;
16
- negate(): MathArray;
17
- lerp(a: any, b: any, t: any): MathArray;
18
- min(vector: any): MathArray;
19
- max(vector: any): MathArray;
20
- clamp(minVector: any, maxVector: any): MathArray;
21
- add(...vectors: any[]): MathArray;
22
- subtract(...vectors: any[]): MathArray;
23
- scale(scale: any): any;
24
- sub(a: any): MathArray;
25
- setScalar(a: any): MathArray;
26
- addScalar(a: any): MathArray;
27
- subScalar(a: any): MathArray;
28
- multiplyScalar(scalar: any): MathArray;
29
- divideScalar(a: any): any;
30
- clampScalar(min: any, max: any): MathArray;
31
- multiplyByScalar(scalar: any): any;
32
- get elements(): MathArray;
33
- check(): MathArray;
22
+ toString(): string;
23
+ /** Formats string according to options */
24
+ formatString(opts: ConfigurationOptions): string;
25
+ equals(array: Readonly<NumericArray>): boolean;
26
+ exactEquals(array: Readonly<NumericArray>): boolean;
27
+ /** Negates all values in this object */
28
+ negate(): this;
29
+ /** Linearly interpolates between two values */
30
+ lerp(a: Readonly<NumericArray>, t: number): this;
31
+ lerp(a: Readonly<NumericArray>, b: Readonly<NumericArray>, t: number): this;
32
+ /** Minimal */
33
+ min(vector: Readonly<NumericArray>): this;
34
+ /** Maximal */
35
+ max(vector: Readonly<NumericArray>): this;
36
+ clamp(minVector: Readonly<NumericArray>, maxVector: Readonly<NumericArray>): this;
37
+ add(...vectors: Readonly<NumericArray>[]): this;
38
+ subtract(...vectors: Readonly<NumericArray>[]): this;
39
+ scale(scale: number | Readonly<NumericArray>): this;
40
+ /**
41
+ * Multiplies all elements by `scale`
42
+ * Note: `Matrix4.multiplyByScalar` only scales its 3x3 "minor"
43
+ */
44
+ multiplyByScalar(scalar: number): this;
45
+ /** Throws an error if array length is incorrect or contains illegal values */
46
+ check(): this;
47
+ /** Returns false if the array length is incorrect or contains illegal values */
34
48
  validate(): boolean;
49
+ /** @deprecated */
50
+ sub(a: Readonly<NumericArray>): this;
51
+ /** @deprecated */
52
+ setScalar(a: number): this;
53
+ /** @deprecated */
54
+ addScalar(a: number): this;
55
+ /** @deprecated */
56
+ subScalar(a: number): this;
57
+ /** @deprecated */
58
+ multiplyScalar(scalar: number): this;
59
+ /** @deprecated */
60
+ divideScalar(a: number): this;
61
+ /** @deprecated */
62
+ clampScalar(min: number, max: number): this;
63
+ /** @deprecated */
64
+ get elements(): NumericArray;
35
65
  }
36
66
  //# sourceMappingURL=math-array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"math-array.d.ts","sourceRoot":"","sources":["../../../src/classes/base/math-array.js"],"names":[],"mappings":"AAuBA;IAmOgh3D,kCAAuC;IAAA,iCAAwC;IAAA,6BAAkC;IAjO/n3D,uBAGC;IAED,aAGC;IAED,8BAGC;IAED,kDAKC;IAED,4BAMC;IAED,2BAEC;IAED,+CAKC;IAED,+BAEC;IAMD,gCAMC;IAED,4BAUC;IAED,iCAUC;IAID,oBAKC;IAED,wCAWC;IAED,4BAKC;IAED,4BAKC;IAED,iDAKC;IAED,kCAOC;IAED,uCAOC;IAED,uBASC;IAID,uBAEC;IAED,6BAKC;IAED,6BAKC;IAED,6BAEC;IAED,uCAOC;IAED,0BAEC;IAED,2CAKC;IAID,mCAEC;IAGD,0BAEC;IAID,mBAKC;IAED,oBAMC;CACF"}
1
+ {"version":3,"file":"math-array.d.ts","sourceRoot":"","sources":["../../../src/classes/base/math-array.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,14 @@
1
- // Copyright (c) 2017 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
1
  import { config, formatValue, equals, isArray } from '../../lib/common';
21
- import assert from '../../lib/assert';
2
+ /** Base class for vectors and matrices */
22
3
  export default class MathArray extends Array {
23
- // Defined by derived class
24
- get ELEMENTS() {
25
- assert(false);
26
- return 0;
27
- }
4
+ // Common methods
5
+ /**
6
+ * Clone the current object
7
+ * @returns a new copy of this object
8
+ */
28
9
  clone() {
29
- // @ts-ignore error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
30
- return new this.constructor().copy(this);
31
- }
32
- from(arrayOrObject) {
33
- // @ts-ignore error TS2339: Property 'copy' does not exist on type 'MathArray'.
34
- return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
10
+ // @ts-expect-error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
11
+ return new this.constructor().copy(this); // eslint-disable-line
35
12
  }
36
13
  fromArray(array, offset = 0) {
37
14
  for (let i = 0; i < this.ELEMENTS; ++i) {
@@ -39,28 +16,34 @@ export default class MathArray extends Array {
39
16
  }
40
17
  return this.check();
41
18
  }
19
+ toArray(targetArray = [], offset = 0) {
20
+ for (let i = 0; i < this.ELEMENTS; ++i) {
21
+ targetArray[offset + i] = this[i];
22
+ }
23
+ return targetArray;
24
+ }
25
+ from(arrayOrObject) {
26
+ return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
27
+ }
42
28
  to(arrayOrObject) {
29
+ // @ts-ignore
43
30
  if (arrayOrObject === this) {
44
31
  return this;
45
32
  }
46
- // @ts-ignore error TS2339: Property 'toObject' does not exist on type 'MathArray'.
33
+ // @ts-expect-error TS2339: Property 'toObject' does not exist on type 'MathArray'.
47
34
  return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);
48
35
  }
49
36
  toTarget(target) {
50
37
  return target ? this.to(target) : this;
51
38
  }
52
- toArray(array = [], offset = 0) {
53
- for (let i = 0; i < this.ELEMENTS; ++i) {
54
- array[offset + i] = this[i];
55
- }
56
- return array;
57
- }
39
+ /** @deprecated */
58
40
  toFloat32Array() {
59
41
  return new Float32Array(this);
60
42
  }
61
43
  toString() {
62
44
  return this.formatString(config);
63
45
  }
46
+ /** Formats string according to options */
64
47
  formatString(opts) {
65
48
  let string = '';
66
49
  for (let i = 0; i < this.ELEMENTS; ++i) {
@@ -91,6 +74,7 @@ export default class MathArray extends Array {
91
74
  return true;
92
75
  }
93
76
  // Modifiers
77
+ /** Negates all values in this object */
94
78
  negate() {
95
79
  for (let i = 0; i < this.ELEMENTS; ++i) {
96
80
  this[i] = -this[i];
@@ -99,9 +83,7 @@ export default class MathArray extends Array {
99
83
  }
100
84
  lerp(a, b, t) {
101
85
  if (t === undefined) {
102
- t = b;
103
- b = a;
104
- a = this; // eslint-disable-line
86
+ return this.lerp(this, a, b);
105
87
  }
106
88
  for (let i = 0; i < this.ELEMENTS; ++i) {
107
89
  const ai = a[i];
@@ -109,12 +91,14 @@ export default class MathArray extends Array {
109
91
  }
110
92
  return this.check();
111
93
  }
94
+ /** Minimal */
112
95
  min(vector) {
113
96
  for (let i = 0; i < this.ELEMENTS; ++i) {
114
97
  this[i] = Math.min(vector[i], this[i]);
115
98
  }
116
99
  return this.check();
117
100
  }
101
+ /** Maximal */
118
102
  max(vector) {
119
103
  for (let i = 0; i < this.ELEMENTS; ++i) {
120
104
  this[i] = Math.max(vector[i], this[i]);
@@ -144,34 +128,68 @@ export default class MathArray extends Array {
144
128
  return this.check();
145
129
  }
146
130
  scale(scale) {
147
- if (Array.isArray(scale)) {
148
- // @ts-ignore error TS2339: Property 'multiply' does not exist on type 'MathArray'.
149
- return this.multiply(scale);
131
+ if (typeof scale === 'number') {
132
+ for (let i = 0; i < this.ELEMENTS; ++i) {
133
+ this[i] *= scale;
134
+ }
135
+ }
136
+ else {
137
+ for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {
138
+ this[i] *= scale[i];
139
+ }
150
140
  }
141
+ return this.check();
142
+ }
143
+ /**
144
+ * Multiplies all elements by `scale`
145
+ * Note: `Matrix4.multiplyByScalar` only scales its 3x3 "minor"
146
+ */
147
+ multiplyByScalar(scalar) {
151
148
  for (let i = 0; i < this.ELEMENTS; ++i) {
152
- this[i] *= scale;
149
+ this[i] *= scalar;
153
150
  }
154
151
  return this.check();
155
152
  }
153
+ // Debug checks
154
+ /** Throws an error if array length is incorrect or contains illegal values */
155
+ check() {
156
+ if (config.debug && !this.validate()) {
157
+ throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);
158
+ }
159
+ return this;
160
+ }
161
+ /** Returns false if the array length is incorrect or contains illegal values */
162
+ validate() {
163
+ let valid = this.length === this.ELEMENTS;
164
+ for (let i = 0; i < this.ELEMENTS; ++i) {
165
+ valid = valid && Number.isFinite(this[i]);
166
+ }
167
+ return valid;
168
+ }
156
169
  // three.js compatibility
170
+ /** @deprecated */
157
171
  sub(a) {
158
172
  return this.subtract(a);
159
173
  }
174
+ /** @deprecated */
160
175
  setScalar(a) {
161
176
  for (let i = 0; i < this.ELEMENTS; ++i) {
162
177
  this[i] = a;
163
178
  }
164
179
  return this.check();
165
180
  }
181
+ /** @deprecated */
166
182
  addScalar(a) {
167
183
  for (let i = 0; i < this.ELEMENTS; ++i) {
168
184
  this[i] += a;
169
185
  }
170
186
  return this.check();
171
187
  }
188
+ /** @deprecated */
172
189
  subScalar(a) {
173
190
  return this.addScalar(-a);
174
191
  }
192
+ /** @deprecated */
175
193
  multiplyScalar(scalar) {
176
194
  // Multiplies all elements
177
195
  // `Matrix4.scale` only scales its 3x3 "minor"
@@ -180,35 +198,19 @@ export default class MathArray extends Array {
180
198
  }
181
199
  return this.check();
182
200
  }
201
+ /** @deprecated */
183
202
  divideScalar(a) {
184
- return this.scale(1 / a);
203
+ return this.multiplyByScalar(1 / a);
185
204
  }
205
+ /** @deprecated */
186
206
  clampScalar(min, max) {
187
207
  for (let i = 0; i < this.ELEMENTS; ++i) {
188
208
  this[i] = Math.min(Math.max(this[i], min), max);
189
209
  }
190
210
  return this.check();
191
211
  }
192
- // Cesium compatibility
193
- multiplyByScalar(scalar) {
194
- return this.scale(scalar);
195
- }
196
- // THREE.js compatibility
212
+ /** @deprecated */
197
213
  get elements() {
198
214
  return this;
199
215
  }
200
- // Debug checks
201
- check() {
202
- if (config.debug && !this.validate()) {
203
- throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);
204
- }
205
- return this;
206
- }
207
- validate() {
208
- let valid = this.length === this.ELEMENTS;
209
- for (let i = 0; i < this.ELEMENTS; ++i) {
210
- valid = valid && Number.isFinite(this[i]);
211
- }
212
- return valid;
213
- }
214
216
  }
@@ -1,12 +1,14 @@
1
- export default class Matrix extends MathArray<any> {
2
- constructor(arrayLength: number);
3
- constructor(...items: number[]);
4
- get RANK(): number;
5
- getElementIndex(row: any, col: any): any;
6
- getElement(row: any, col: any): number;
7
- setElement(row: any, col: any, value: any): Matrix;
8
- getColumn(columnIndex: any, result?: any[]): any[];
9
- setColumn(columnIndex: any, columnVector: any): Matrix;
1
+ import { NumericArray } from '@math.gl/types';
2
+ import MathArray from './math-array';
3
+ /** Base class for matrices */
4
+ export default abstract class Matrix extends MathArray {
5
+ abstract get RANK(): number;
6
+ toString(): string;
7
+ getElementIndex(row: number, col: number): number;
8
+ getElement(row: number, col: number): number;
9
+ setElement(row: number, col: number, value: number): this;
10
+ getColumn<NumArrayT>(columnIndex: number, result: NumArrayT): NumArrayT;
11
+ getColumn(columnIndex: number): number[];
12
+ setColumn(columnIndex: number, columnVector: Readonly<NumericArray>): this;
10
13
  }
11
- import MathArray from "./math-array";
12
14
  //# sourceMappingURL=matrix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../src/classes/base/matrix.js"],"names":[],"mappings":"AAKA;IAyE8u/D,iCAAwC;IAAA,gCAAkC;IAlEtz/D,mBAGC;IAgCD,yCAEC;IAGD,uCAEC;IAGD,mDAGC;IAED,mDAMC;IAED,uDAMC;CACF"}
1
+ {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../src/classes/base/matrix.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,SAAS,MAAM,cAAc,CAAC;AAIrC,8BAA8B;AAC9B,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,MAAO,SAAQ,SAAS;IACpD,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;IAa5B,QAAQ,IAAI,MAAM;IAmBlB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAKjD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAK5C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzD,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS;IACvE,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAUxC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;CAO3E"}
@@ -1,17 +1,8 @@
1
1
  import MathArray from './math-array';
2
2
  import { checkNumber } from '../../lib/validators';
3
3
  import { config } from '../../lib/common';
4
- import assert from '../../lib/assert';
4
+ /** Base class for matrices */
5
5
  export default class Matrix extends MathArray {
6
- // Defined by derived class
7
- get ELEMENTS() {
8
- assert(false);
9
- return 0;
10
- }
11
- get RANK() {
12
- assert(false);
13
- return 0;
14
- }
15
6
  // fromObject(object) {
16
7
  // const array = object.elements;
17
8
  // return this.fromRowMajor(array);
@@ -21,6 +12,7 @@ export default class Matrix extends MathArray {
21
12
  // this.toRowMajor(array);
22
13
  // return object;
23
14
  // }
15
+ // TODO better override formatString?
24
16
  toString() {
25
17
  let string = '[';
26
18
  if (config.printRowMajor) {
@@ -1,32 +1,44 @@
1
- export default class Vector extends MathArray<any> {
2
- constructor(arrayLength: number);
3
- constructor(...items: number[]);
4
- copy(vector: any): Vector;
5
- set x(arg: any);
6
- get x(): any;
7
- 0: any;
8
- set y(arg: any);
9
- get y(): any;
10
- 1: any;
1
+ import { NumericArray } from '@math.gl/types';
2
+ import MathArray from './math-array';
3
+ /** Base class for vectors with at least 2 elements */
4
+ export default abstract class Vector extends MathArray {
5
+ get x(): number;
6
+ set x(value: number);
7
+ get y(): number;
8
+ set y(value: number);
9
+ /**
10
+ * Returns the length of the vector from the origin to the point described by this vector
11
+ *
12
+ * @note `length` is a reserved word for Arrays, so `v.length()` will return number of elements
13
+ * Instead we provide `len` and `magnitude`
14
+ */
11
15
  len(): number;
16
+ /**
17
+ * Returns the length of the vector from the origin to the point described by this vector
18
+ */
12
19
  magnitude(): number;
20
+ /**
21
+ * Returns the squared length of the vector from the origin to the point described by this vector
22
+ */
13
23
  lengthSquared(): number;
24
+ /**
25
+ * Returns the squared length of the vector from the origin to the point described by this vector
26
+ */
14
27
  magnitudeSquared(): number;
15
- distance(mathArray: any): number;
16
- distanceSquared(mathArray: any): any;
17
- dot(mathArray: any): any;
18
- normalize(): any;
19
- multiply(...vectors: any[]): any;
20
- divide(...vectors: any[]): any;
28
+ distance(mathArray: Readonly<NumericArray>): number;
29
+ distanceSquared(mathArray: Readonly<NumericArray>): number;
30
+ dot(mathArray: Readonly<NumericArray>): number;
31
+ normalize(): this;
32
+ multiply(...vectors: Readonly<NumericArray>[]): this;
33
+ divide(...vectors: Readonly<NumericArray>[]): this;
21
34
  lengthSq(): number;
22
- distanceTo(vector: any): number;
23
- distanceToSquared(vector: any): any;
24
- getComponent(i: any): any;
25
- setComponent(i: any, value: any): any;
26
- addVectors(a: any, b: any): any;
27
- subVectors(a: any, b: any): any;
28
- multiplyVectors(a: any, b: any): any;
29
- addScaledVector(a: any, b: any): any;
35
+ distanceTo(vector: Readonly<NumericArray>): number;
36
+ distanceToSquared(vector: Readonly<NumericArray>): number;
37
+ getComponent(i: number): number;
38
+ setComponent(i: number, value: number): this;
39
+ addVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this;
40
+ subVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this;
41
+ multiplyVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this;
42
+ addScaledVector(a: Readonly<NumericArray>, b: number): this;
30
43
  }
31
- import MathArray from "./math-array";
32
44
  //# sourceMappingURL=vector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/classes/base/vector.js"],"names":[],"mappings":"AAIA;IA4Jm78D,iCAAwC;IAAA,gCAAkC;IArJ3/8D,0BAGC;IAOD,gBAEC;IALD,aAEC;IAEC,OAA4B;IAM9B,gBAEC;IALD,aAEC;IAEC,OAA4B;IAK9B,cAEC;IAED,oBAEC;IAED,wBAMC;IAED,2BAEC;IAED,iCAEC;IAED,qCAOC;IAED,yBAMC;IAID,iBAQC;IAgBD,iCAOC;IAED,+BAOC;IAGD,mBAEC;IAED,gCAEC;IAED,oCAEC;IAED,0BAGC;IAED,sCAIC;IAED,gCAEC;IAED,gCAEC;IAED,qCAEC;IAED,qCAGC;CACF"}
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/classes/base/vector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,SAAS,MAAM,cAAc,CAAC;AAIrC,sDAAsD;AACtD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,MAAO,SAAQ,SAAS;IAGpD,IAAI,CAAC,IAAI,MAAM,CAEd;IAED,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,IAAI,CAAC,IAAI,MAAM,CAEd;IAED,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED;;;;;OAKG;IACH,GAAG,IAAI,MAAM;IAIb;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,aAAa,IAAI,MAAM;IAQvB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM;IAInD,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM;IAS1D,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM;IAU9C,SAAS,IAAI,IAAI;IAUjB,QAAQ,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI;IASpD,MAAM,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI;IAWlD,QAAQ,IAAI,MAAM;IAGlB,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM;IAGlD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM;IAIzD,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAK/B,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5C,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAItE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAItE,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAI3E,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;CAI5D"}
@@ -1,16 +1,8 @@
1
1
  import MathArray from './math-array';
2
2
  import { checkNumber } from '../../lib/validators';
3
3
  import assert from '../../lib/assert';
4
+ /** Base class for vectors with at least 2 elements */
4
5
  export default class Vector extends MathArray {
5
- get ELEMENTS() {
6
- assert(false);
7
- return 0;
8
- }
9
- // VIRTUAL METHODS
10
- copy(vector) {
11
- assert(false);
12
- return this;
13
- }
14
6
  // ACCESSORS
15
7
  get x() {
16
8
  return this[0];
@@ -24,14 +16,24 @@ export default class Vector extends MathArray {
24
16
  set y(value) {
25
17
  this[1] = checkNumber(value);
26
18
  }
27
- // NOTE: `length` is a reserved word for Arrays, so we can't use `v.length()`
28
- // Offer `len` and `magnitude`
19
+ /**
20
+ * Returns the length of the vector from the origin to the point described by this vector
21
+ *
22
+ * @note `length` is a reserved word for Arrays, so `v.length()` will return number of elements
23
+ * Instead we provide `len` and `magnitude`
24
+ */
29
25
  len() {
30
26
  return Math.sqrt(this.lengthSquared());
31
27
  }
28
+ /**
29
+ * Returns the length of the vector from the origin to the point described by this vector
30
+ */
32
31
  magnitude() {
33
32
  return this.len();
34
33
  }
34
+ /**
35
+ * Returns the squared length of the vector from the origin to the point described by this vector
36
+ */
35
37
  lengthSquared() {
36
38
  let length = 0;
37
39
  for (let i = 0; i < this.ELEMENTS; ++i) {
@@ -39,6 +41,9 @@ export default class Vector extends MathArray {
39
41
  }
40
42
  return length;
41
43
  }
44
+ /**
45
+ * Returns the squared length of the vector from the origin to the point described by this vector
46
+ */
42
47
  magnitudeSquared() {
43
48
  return this.lengthSquared();
44
49
  }
@@ -70,18 +75,6 @@ export default class Vector extends MathArray {
70
75
  }
71
76
  return this.check();
72
77
  }
73
- // negate() {
74
- // for (let i = 0; i < this.ELEMENTS; ++i) {
75
- // this[i] = -this[i];
76
- // }
77
- // return this.check();
78
- // }
79
- // inverse() {
80
- // for (let i = 0; i < this.ELEMENTS; ++i) {
81
- // this[i] = 1 / this[i];
82
- // }
83
- // return this.check();
84
- // }
85
78
  multiply(...vectors) {
86
79
  for (const vector of vectors) {
87
80
  for (let i = 0; i < this.ELEMENTS; ++i) {
@@ -127,7 +120,7 @@ export default class Vector extends MathArray {
127
120
  return this.copy(a).multiply(b);
128
121
  }
129
122
  addScaledVector(a, b) {
130
- // @ts-ignore error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
123
+ // @ts-expect-error error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
131
124
  return this.add(new this.constructor(a).multiplyScalar(b));
132
125
  }
133
126
  }