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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/dist/classes/base/math-array.d.ts +66 -0
  2. package/dist/classes/base/math-array.d.ts.map +1 -0
  3. package/dist/classes/base/math-array.js +216 -0
  4. package/dist/classes/base/matrix.d.ts +14 -0
  5. package/dist/classes/base/matrix.d.ts.map +1 -0
  6. package/dist/classes/base/matrix.js +61 -0
  7. package/dist/classes/base/vector.d.ts +44 -0
  8. package/dist/classes/base/vector.d.ts.map +1 -0
  9. package/dist/classes/base/vector.js +126 -0
  10. package/dist/classes/euler.d.ts +77 -0
  11. package/dist/classes/euler.d.ts.map +1 -0
  12. package/dist/classes/euler.js +485 -0
  13. package/dist/classes/matrix3.d.ts +60 -0
  14. package/dist/classes/matrix3.d.ts.map +1 -0
  15. package/dist/classes/matrix3.js +201 -0
  16. package/dist/classes/matrix4.d.ts +226 -0
  17. package/dist/classes/matrix4.d.ts.map +1 -0
  18. package/dist/classes/matrix4.js +538 -0
  19. package/dist/classes/pose.d.ts +40 -0
  20. package/dist/classes/pose.d.ts.map +1 -0
  21. package/dist/classes/pose.js +109 -0
  22. package/dist/classes/quaternion.d.ts +63 -0
  23. package/dist/classes/quaternion.d.ts.map +1 -0
  24. package/dist/classes/quaternion.js +262 -0
  25. package/dist/classes/spherical-coordinates.d.ts +60 -0
  26. package/dist/classes/spherical-coordinates.d.ts.map +1 -0
  27. package/dist/classes/spherical-coordinates.js +148 -0
  28. package/dist/classes/vector2.d.ts +55 -0
  29. package/dist/classes/vector2.d.ts.map +1 -0
  30. package/dist/classes/vector2.js +111 -0
  31. package/dist/classes/vector3.d.ts +56 -0
  32. package/dist/classes/vector3.d.ts.map +1 -0
  33. package/dist/classes/vector3.js +133 -0
  34. package/dist/classes/vector4.d.ts +41 -0
  35. package/dist/classes/vector4.d.ts.map +1 -0
  36. package/dist/classes/vector4.js +114 -0
  37. package/dist/es5/classes/base/math-array.js +57 -61
  38. package/dist/es5/classes/base/math-array.js.map +1 -1
  39. package/dist/es5/classes/base/matrix.js +0 -14
  40. package/dist/es5/classes/base/matrix.js.map +1 -1
  41. package/dist/es5/classes/base/vector.js +0 -12
  42. package/dist/es5/classes/base/vector.js.map +1 -1
  43. package/dist/es5/classes/euler.js +63 -49
  44. package/dist/es5/classes/euler.js.map +1 -1
  45. package/dist/es5/classes/matrix3.js +60 -33
  46. package/dist/es5/classes/matrix3.js.map +1 -1
  47. package/dist/es5/classes/matrix4.js +167 -164
  48. package/dist/es5/classes/matrix4.js.map +1 -1
  49. package/dist/es5/classes/pose.js +7 -6
  50. package/dist/es5/classes/pose.js.map +1 -1
  51. package/dist/es5/classes/quaternion.js +44 -36
  52. package/dist/es5/classes/quaternion.js.map +1 -1
  53. package/dist/es5/classes/spherical-coordinates.js +12 -8
  54. package/dist/es5/classes/spherical-coordinates.js.map +1 -1
  55. package/dist/es5/classes/vector2.js.map +1 -1
  56. package/dist/es5/classes/vector3.js +7 -2
  57. package/dist/es5/classes/vector3.js.map +1 -1
  58. package/dist/es5/classes/vector4.js +7 -2
  59. package/dist/es5/classes/vector4.js.map +1 -1
  60. package/dist/es5/docs/README.md +0 -0
  61. package/dist/es5/index.js +71 -89
  62. package/dist/es5/index.js.map +1 -1
  63. package/dist/es5/lib/assert.js.map +1 -1
  64. package/dist/es5/lib/common.js +40 -43
  65. package/dist/es5/lib/common.js.map +1 -1
  66. package/dist/es5/lib/gl-matrix-extras.js.map +1 -1
  67. package/dist/es5/lib/gl-matrix.d.js +2 -0
  68. package/dist/es5/lib/gl-matrix.d.js.map +1 -0
  69. package/dist/es5/lib/math-utils.js.map +1 -1
  70. package/dist/es5/lib/validators.js.map +1 -1
  71. package/dist/esm/classes/base/math-array.js +45 -47
  72. package/dist/esm/classes/base/math-array.js.map +1 -1
  73. package/dist/esm/classes/base/matrix.js +0 -11
  74. package/dist/esm/classes/base/matrix.js.map +1 -1
  75. package/dist/esm/classes/base/vector.js +0 -10
  76. package/dist/esm/classes/base/vector.js.map +1 -1
  77. package/dist/esm/classes/euler.js +61 -48
  78. package/dist/esm/classes/euler.js.map +1 -1
  79. package/dist/esm/classes/matrix3.js +55 -33
  80. package/dist/esm/classes/matrix3.js.map +1 -1
  81. package/dist/esm/classes/matrix4.js +156 -136
  82. package/dist/esm/classes/matrix4.js.map +1 -1
  83. package/dist/esm/classes/pose.js +8 -4
  84. package/dist/esm/classes/pose.js.map +1 -1
  85. package/dist/esm/classes/quaternion.js +37 -27
  86. package/dist/esm/classes/quaternion.js.map +1 -1
  87. package/dist/esm/classes/spherical-coordinates.js +15 -5
  88. package/dist/esm/classes/spherical-coordinates.js.map +1 -1
  89. package/dist/esm/classes/vector2.js.map +1 -1
  90. package/dist/esm/classes/vector3.js +7 -2
  91. package/dist/esm/classes/vector3.js.map +1 -1
  92. package/dist/esm/classes/vector4.js +7 -2
  93. package/dist/esm/classes/vector4.js.map +1 -1
  94. package/dist/esm/docs/README.md +0 -0
  95. package/dist/esm/index.js +2 -13
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/lib/assert.js.map +1 -1
  98. package/dist/esm/lib/common.js +41 -44
  99. package/dist/esm/lib/common.js.map +1 -1
  100. package/dist/esm/lib/gl-matrix-extras.js.map +1 -1
  101. package/dist/esm/lib/gl-matrix.d.js +2 -0
  102. package/dist/esm/lib/gl-matrix.d.js.map +1 -0
  103. package/dist/esm/lib/math-utils.js.map +1 -1
  104. package/dist/esm/lib/validators.js.map +1 -1
  105. package/dist/index.d.ts +17 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +24 -0
  108. package/dist/lib/assert.d.ts +2 -0
  109. package/dist/lib/assert.d.ts.map +1 -0
  110. package/dist/lib/assert.js +5 -0
  111. package/dist/lib/common.d.ts +93 -0
  112. package/dist/lib/common.d.ts.map +1 -0
  113. package/dist/lib/common.js +210 -0
  114. package/dist/lib/gl-matrix-extras.d.ts +7 -0
  115. package/dist/lib/gl-matrix-extras.d.ts.map +1 -0
  116. package/dist/lib/gl-matrix-extras.js +49 -0
  117. package/dist/lib/math-utils.d.ts +28 -0
  118. package/dist/lib/math-utils.d.ts.map +1 -0
  119. package/dist/lib/math-utils.js +28 -0
  120. package/dist/lib/validators.d.ts +6 -0
  121. package/dist/lib/validators.d.ts.map +1 -0
  122. package/dist/lib/validators.js +33 -0
  123. package/package.json +5 -4
  124. package/src/classes/base/math-array.ts +265 -0
  125. package/src/classes/base/{matrix.js → matrix.ts} +15 -19
  126. package/src/classes/base/{vector.js → vector.ts} +47 -54
  127. package/src/classes/{euler.js → euler.ts} +121 -221
  128. package/src/classes/matrix3.ts +253 -0
  129. package/src/classes/matrix4.ts +668 -0
  130. package/src/classes/{pose.js → pose.ts} +52 -49
  131. package/src/classes/{quaternion.js → quaternion.ts} +107 -95
  132. package/src/classes/{spherical-coordinates.js → spherical-coordinates.ts} +84 -54
  133. package/src/classes/vector2.ts +127 -0
  134. package/src/classes/{vector3.js → vector3.ts} +43 -55
  135. package/src/classes/{vector4.js → vector4.ts} +44 -48
  136. package/src/docs/README.md +0 -0
  137. package/{dist/esm/index.d.ts → src/index.ts} +32 -34
  138. package/src/lib/{assert.js → assert.ts} +1 -1
  139. package/src/lib/common.ts +304 -0
  140. package/src/lib/{gl-matrix-extras.js → gl-matrix-extras.ts} +26 -5
  141. package/src/lib/gl-matrix.d.ts +266 -0
  142. package/src/lib/{math-utils.js → math-utils.ts} +0 -0
  143. package/src/lib/{validators.js → validators.ts} +10 -6
  144. package/dist/es5/addons/polygon.d.ts +0 -17
  145. package/dist/es5/classes/base/math-array.d.ts +0 -56
  146. package/dist/es5/classes/base/matrix.d.ts +0 -15
  147. package/dist/es5/classes/base/vector.d.ts +0 -45
  148. package/dist/es5/classes/euler.d.ts +0 -92
  149. package/dist/es5/classes/matrix3.d.ts +0 -91
  150. package/dist/es5/classes/matrix4.d.ts +0 -161
  151. package/dist/es5/classes/pose.d.ts +0 -92
  152. package/dist/es5/classes/quaternion.d.ts +0 -107
  153. package/dist/es5/classes/spherical-coordinates.d.ts +0 -87
  154. package/dist/es5/classes/vector2.d.ts +0 -65
  155. package/dist/es5/classes/vector3.d.ts +0 -65
  156. package/dist/es5/classes/vector4.d.ts +0 -34
  157. package/dist/es5/index.d.ts +0 -54
  158. package/dist/es5/lib/common.d.ts +0 -80
  159. package/dist/esm/addons/polygon.d.ts +0 -17
  160. package/dist/esm/classes/base/math-array.d.ts +0 -56
  161. package/dist/esm/classes/base/matrix.d.ts +0 -15
  162. package/dist/esm/classes/base/vector.d.ts +0 -45
  163. package/dist/esm/classes/euler.d.ts +0 -92
  164. package/dist/esm/classes/matrix3.d.ts +0 -91
  165. package/dist/esm/classes/matrix4.d.ts +0 -161
  166. package/dist/esm/classes/pose.d.ts +0 -92
  167. package/dist/esm/classes/quaternion.d.ts +0 -107
  168. package/dist/esm/classes/spherical-coordinates.d.ts +0 -87
  169. package/dist/esm/classes/vector2.d.ts +0 -65
  170. package/dist/esm/classes/vector3.d.ts +0 -65
  171. package/dist/esm/classes/vector4.d.ts +0 -34
  172. package/dist/esm/lib/common.d.ts +0 -80
  173. package/src/addons/polygon.d.ts +0 -17
  174. package/src/classes/base/math-array.d.ts +0 -56
  175. package/src/classes/base/math-array.js +0 -250
  176. package/src/classes/base/matrix.d.ts +0 -15
  177. package/src/classes/base/vector.d.ts +0 -45
  178. package/src/classes/euler.d.ts +0 -92
  179. package/src/classes/matrix3.d.ts +0 -91
  180. package/src/classes/matrix3.js +0 -225
  181. package/src/classes/matrix4.d.ts +0 -161
  182. package/src/classes/matrix4.js +0 -530
  183. package/src/classes/pose.d.ts +0 -92
  184. package/src/classes/quaternion.d.ts +0 -107
  185. package/src/classes/spherical-coordinates.d.ts +0 -87
  186. package/src/classes/vector2.d.ts +0 -65
  187. package/src/classes/vector2.js +0 -122
  188. package/src/classes/vector3.d.ts +0 -65
  189. package/src/classes/vector4.d.ts +0 -34
  190. package/src/index.d.ts +0 -54
  191. package/src/index.js +0 -86
  192. package/src/lib/common.d.ts +0 -80
  193. package/src/lib/common.js +0 -222
@@ -0,0 +1,66 @@
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;
19
+ toTarget(target: any): any;
20
+ /** @deprecated */
21
+ toFloat32Array(): Float32Array;
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 */
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;
65
+ }
66
+ //# sourceMappingURL=math-array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math-array.d.ts","sourceRoot":"","sources":["../../../src/classes/base/math-array.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,oBAAoB,EAAuC,MAAM,kBAAkB,CAAC;AAE5F,0CAA0C;AAC1C,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,SAAU,SAAQ,KAAK,CAAC,MAAM,CAAC;IAC3D,gDAAgD;IAChD,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;IAEhC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAEnD,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAE,MAAU,GAAG,IAAI;IAOlE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU;IACzE,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY;IAS9D,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM,GAAG,IAAI;IAI1D,EAAE,CAAC,CAAC,SAAS,YAAY,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC;IASxD,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;IAI1B,kBAAkB;IAClB,cAAc,IAAI,YAAY;IAI9B,QAAQ,IAAI,MAAM;IAIlB,0CAA0C;IAC1C,YAAY,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;IAQhD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO;IAY9C,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO;IAcnD,wCAAwC;IACxC,MAAM,IAAI,IAAI;IAOd,+CAA+C;IAC/C,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAChD,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAa3E,cAAc;IACd,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAOzC,cAAc;IACd,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAOzC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAOjF,GAAG,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI;IAS/C,QAAQ,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI;IASpD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAanD;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAStC,8EAA8E;IAC9E,KAAK,IAAI,IAAI;IAOb,gFAAgF;IAChF,QAAQ,IAAI,OAAO;IAUnB,kBAAkB;IAClB,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAIpC,kBAAkB;IAClB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1B,kBAAkB;IAClB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1B,kBAAkB;IAClB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1B,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASpC,kBAAkB;IAClB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7B,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAO3C,kBAAkB;IAClB,IAAI,QAAQ,IAAI,YAAY,CAE3B;CACF"}
@@ -0,0 +1,216 @@
1
+ import { config, formatValue, equals, isArray } from '../../lib/common';
2
+ /** Base class for vectors and matrices */
3
+ export default class MathArray extends Array {
4
+ // Common methods
5
+ /**
6
+ * Clone the current object
7
+ * @returns a new copy of this object
8
+ */
9
+ clone() {
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
12
+ }
13
+ fromArray(array, offset = 0) {
14
+ for (let i = 0; i < this.ELEMENTS; ++i) {
15
+ this[i] = array[i + offset];
16
+ }
17
+ return this.check();
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
+ }
28
+ to(arrayOrObject) {
29
+ // @ts-ignore
30
+ if (arrayOrObject === this) {
31
+ return this;
32
+ }
33
+ // @ts-expect-error TS2339: Property 'toObject' does not exist on type 'MathArray'.
34
+ return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);
35
+ }
36
+ toTarget(target) {
37
+ return target ? this.to(target) : this;
38
+ }
39
+ /** @deprecated */
40
+ toFloat32Array() {
41
+ return new Float32Array(this);
42
+ }
43
+ toString() {
44
+ return this.formatString(config);
45
+ }
46
+ /** Formats string according to options */
47
+ formatString(opts) {
48
+ let string = '';
49
+ for (let i = 0; i < this.ELEMENTS; ++i) {
50
+ string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);
51
+ }
52
+ return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;
53
+ }
54
+ equals(array) {
55
+ if (!array || this.length !== array.length) {
56
+ return false;
57
+ }
58
+ for (let i = 0; i < this.ELEMENTS; ++i) {
59
+ if (!equals(this[i], array[i])) {
60
+ return false;
61
+ }
62
+ }
63
+ return true;
64
+ }
65
+ exactEquals(array) {
66
+ if (!array || this.length !== array.length) {
67
+ return false;
68
+ }
69
+ for (let i = 0; i < this.ELEMENTS; ++i) {
70
+ if (this[i] !== array[i]) {
71
+ return false;
72
+ }
73
+ }
74
+ return true;
75
+ }
76
+ // Modifiers
77
+ /** Negates all values in this object */
78
+ negate() {
79
+ for (let i = 0; i < this.ELEMENTS; ++i) {
80
+ this[i] = -this[i];
81
+ }
82
+ return this.check();
83
+ }
84
+ lerp(a, b, t) {
85
+ if (t === undefined) {
86
+ return this.lerp(this, a, b);
87
+ }
88
+ for (let i = 0; i < this.ELEMENTS; ++i) {
89
+ const ai = a[i];
90
+ this[i] = ai + t * (b[i] - ai);
91
+ }
92
+ return this.check();
93
+ }
94
+ /** Minimal */
95
+ min(vector) {
96
+ for (let i = 0; i < this.ELEMENTS; ++i) {
97
+ this[i] = Math.min(vector[i], this[i]);
98
+ }
99
+ return this.check();
100
+ }
101
+ /** Maximal */
102
+ max(vector) {
103
+ for (let i = 0; i < this.ELEMENTS; ++i) {
104
+ this[i] = Math.max(vector[i], this[i]);
105
+ }
106
+ return this.check();
107
+ }
108
+ clamp(minVector, maxVector) {
109
+ for (let i = 0; i < this.ELEMENTS; ++i) {
110
+ this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);
111
+ }
112
+ return this.check();
113
+ }
114
+ add(...vectors) {
115
+ for (const vector of vectors) {
116
+ for (let i = 0; i < this.ELEMENTS; ++i) {
117
+ this[i] += vector[i];
118
+ }
119
+ }
120
+ return this.check();
121
+ }
122
+ subtract(...vectors) {
123
+ for (const vector of vectors) {
124
+ for (let i = 0; i < this.ELEMENTS; ++i) {
125
+ this[i] -= vector[i];
126
+ }
127
+ }
128
+ return this.check();
129
+ }
130
+ scale(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
+ }
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) {
148
+ for (let i = 0; i < this.ELEMENTS; ++i) {
149
+ this[i] *= scalar;
150
+ }
151
+ return this.check();
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
+ }
169
+ // three.js compatibility
170
+ /** @deprecated */
171
+ sub(a) {
172
+ return this.subtract(a);
173
+ }
174
+ /** @deprecated */
175
+ setScalar(a) {
176
+ for (let i = 0; i < this.ELEMENTS; ++i) {
177
+ this[i] = a;
178
+ }
179
+ return this.check();
180
+ }
181
+ /** @deprecated */
182
+ addScalar(a) {
183
+ for (let i = 0; i < this.ELEMENTS; ++i) {
184
+ this[i] += a;
185
+ }
186
+ return this.check();
187
+ }
188
+ /** @deprecated */
189
+ subScalar(a) {
190
+ return this.addScalar(-a);
191
+ }
192
+ /** @deprecated */
193
+ multiplyScalar(scalar) {
194
+ // Multiplies all elements
195
+ // `Matrix4.scale` only scales its 3x3 "minor"
196
+ for (let i = 0; i < this.ELEMENTS; ++i) {
197
+ this[i] *= scalar;
198
+ }
199
+ return this.check();
200
+ }
201
+ /** @deprecated */
202
+ divideScalar(a) {
203
+ return this.multiplyByScalar(1 / a);
204
+ }
205
+ /** @deprecated */
206
+ clampScalar(min, max) {
207
+ for (let i = 0; i < this.ELEMENTS; ++i) {
208
+ this[i] = Math.min(Math.max(this[i], min), max);
209
+ }
210
+ return this.check();
211
+ }
212
+ /** @deprecated */
213
+ get elements() {
214
+ return this;
215
+ }
216
+ }
@@ -0,0 +1,14 @@
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;
13
+ }
14
+ //# sourceMappingURL=matrix.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,61 @@
1
+ import MathArray from './math-array';
2
+ import { checkNumber } from '../../lib/validators';
3
+ import { config } from '../../lib/common';
4
+ /** Base class for matrices */
5
+ export default class Matrix extends MathArray {
6
+ // fromObject(object) {
7
+ // const array = object.elements;
8
+ // return this.fromRowMajor(array);
9
+ // }
10
+ // toObject(object) {
11
+ // const array = object.elements;
12
+ // this.toRowMajor(array);
13
+ // return object;
14
+ // }
15
+ // TODO better override formatString?
16
+ toString() {
17
+ let string = '[';
18
+ if (config.printRowMajor) {
19
+ string += 'row-major:';
20
+ for (let row = 0; row < this.RANK; ++row) {
21
+ for (let col = 0; col < this.RANK; ++col) {
22
+ string += ` ${this[col * this.RANK + row]}`;
23
+ }
24
+ }
25
+ }
26
+ else {
27
+ string += 'column-major:';
28
+ for (let i = 0; i < this.ELEMENTS; ++i) {
29
+ string += ` ${this[i]}`;
30
+ }
31
+ }
32
+ string += ']';
33
+ return string;
34
+ }
35
+ getElementIndex(row, col) {
36
+ return col * this.RANK + row;
37
+ }
38
+ // By default assumes row major indices
39
+ getElement(row, col) {
40
+ return this[col * this.RANK + row];
41
+ }
42
+ // By default assumes row major indices
43
+ setElement(row, col, value) {
44
+ this[col * this.RANK + row] = checkNumber(value);
45
+ return this;
46
+ }
47
+ getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {
48
+ const firstIndex = columnIndex * this.RANK;
49
+ for (let i = 0; i < this.RANK; ++i) {
50
+ result[i] = this[firstIndex + i];
51
+ }
52
+ return result;
53
+ }
54
+ setColumn(columnIndex, columnVector) {
55
+ const firstIndex = columnIndex * this.RANK;
56
+ for (let i = 0; i < this.RANK; ++i) {
57
+ this[firstIndex + i] = columnVector[i];
58
+ }
59
+ return this;
60
+ }
61
+ }
@@ -0,0 +1,44 @@
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
+ */
15
+ len(): number;
16
+ /**
17
+ * Returns the length of the vector from the origin to the point described by this vector
18
+ */
19
+ magnitude(): number;
20
+ /**
21
+ * Returns the squared length of the vector from the origin to the point described by this vector
22
+ */
23
+ lengthSquared(): number;
24
+ /**
25
+ * Returns the squared length of the vector from the origin to the point described by this vector
26
+ */
27
+ magnitudeSquared(): number;
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;
34
+ lengthSq(): number;
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;
43
+ }
44
+ //# sourceMappingURL=vector.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,126 @@
1
+ import MathArray from './math-array';
2
+ import { checkNumber } from '../../lib/validators';
3
+ import assert from '../../lib/assert';
4
+ /** Base class for vectors with at least 2 elements */
5
+ export default class Vector extends MathArray {
6
+ // ACCESSORS
7
+ get x() {
8
+ return this[0];
9
+ }
10
+ set x(value) {
11
+ this[0] = checkNumber(value);
12
+ }
13
+ get y() {
14
+ return this[1];
15
+ }
16
+ set y(value) {
17
+ this[1] = checkNumber(value);
18
+ }
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
+ */
25
+ len() {
26
+ return Math.sqrt(this.lengthSquared());
27
+ }
28
+ /**
29
+ * Returns the length of the vector from the origin to the point described by this vector
30
+ */
31
+ magnitude() {
32
+ return this.len();
33
+ }
34
+ /**
35
+ * Returns the squared length of the vector from the origin to the point described by this vector
36
+ */
37
+ lengthSquared() {
38
+ let length = 0;
39
+ for (let i = 0; i < this.ELEMENTS; ++i) {
40
+ length += this[i] * this[i];
41
+ }
42
+ return length;
43
+ }
44
+ /**
45
+ * Returns the squared length of the vector from the origin to the point described by this vector
46
+ */
47
+ magnitudeSquared() {
48
+ return this.lengthSquared();
49
+ }
50
+ distance(mathArray) {
51
+ return Math.sqrt(this.distanceSquared(mathArray));
52
+ }
53
+ distanceSquared(mathArray) {
54
+ let length = 0;
55
+ for (let i = 0; i < this.ELEMENTS; ++i) {
56
+ const dist = this[i] - mathArray[i];
57
+ length += dist * dist;
58
+ }
59
+ return checkNumber(length);
60
+ }
61
+ dot(mathArray) {
62
+ let product = 0;
63
+ for (let i = 0; i < this.ELEMENTS; ++i) {
64
+ product += this[i] * mathArray[i];
65
+ }
66
+ return checkNumber(product);
67
+ }
68
+ // MODIFIERS
69
+ normalize() {
70
+ const length = this.magnitude();
71
+ if (length !== 0) {
72
+ for (let i = 0; i < this.ELEMENTS; ++i) {
73
+ this[i] /= length;
74
+ }
75
+ }
76
+ return this.check();
77
+ }
78
+ multiply(...vectors) {
79
+ for (const vector of vectors) {
80
+ for (let i = 0; i < this.ELEMENTS; ++i) {
81
+ this[i] *= vector[i];
82
+ }
83
+ }
84
+ return this.check();
85
+ }
86
+ divide(...vectors) {
87
+ for (const vector of vectors) {
88
+ for (let i = 0; i < this.ELEMENTS; ++i) {
89
+ this[i] /= vector[i];
90
+ }
91
+ }
92
+ return this.check();
93
+ }
94
+ // THREE.js compatibility
95
+ lengthSq() {
96
+ return this.lengthSquared();
97
+ }
98
+ distanceTo(vector) {
99
+ return this.distance(vector);
100
+ }
101
+ distanceToSquared(vector) {
102
+ return this.distanceSquared(vector);
103
+ }
104
+ getComponent(i) {
105
+ assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');
106
+ return checkNumber(this[i]);
107
+ }
108
+ setComponent(i, value) {
109
+ assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');
110
+ this[i] = value;
111
+ return this.check();
112
+ }
113
+ addVectors(a, b) {
114
+ return this.copy(a).add(b);
115
+ }
116
+ subVectors(a, b) {
117
+ return this.copy(a).subtract(b);
118
+ }
119
+ multiplyVectors(a, b) {
120
+ return this.copy(a).multiply(b);
121
+ }
122
+ addScaledVector(a, b) {
123
+ // @ts-expect-error error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
124
+ return this.add(new this.constructor(a).multiplyScalar(b));
125
+ }
126
+ }
@@ -0,0 +1,77 @@
1
+ import MathArray from './base/math-array';
2
+ import Quaternion from './quaternion';
3
+ import { NumericArray } from '@math.gl/types';
4
+ declare enum RotationOrder {
5
+ ZYX = 0,
6
+ YXZ = 1,
7
+ XZY = 2,
8
+ ZXY = 3,
9
+ YZX = 4,
10
+ XYZ = 5
11
+ }
12
+ export default class Euler extends MathArray {
13
+ static get ZYX(): RotationOrder;
14
+ static get YXZ(): RotationOrder;
15
+ static get XZY(): RotationOrder;
16
+ static get ZXY(): RotationOrder;
17
+ static get YZX(): RotationOrder;
18
+ static get XYZ(): RotationOrder;
19
+ static get RollPitchYaw(): RotationOrder;
20
+ static get DefaultOrder(): RotationOrder;
21
+ static get RotationOrders(): typeof RotationOrder;
22
+ static rotationOrder(order: RotationOrder): string;
23
+ get ELEMENTS(): number;
24
+ /**
25
+ * @class
26
+ * @param {Number | Number[]} x
27
+ * @param {Number=} [y]
28
+ * @param {Number=} [z]
29
+ * @param {Number=} [order]
30
+ */
31
+ constructor(x?: number, y?: number, z?: number, order?: RotationOrder);
32
+ fromQuaternion(quaternion: Readonly<NumericArray>): this;
33
+ fromObject(object: object): this;
34
+ copy(array: Readonly<NumericArray>): this;
35
+ set(x: number, y: number, z: number, order: RotationOrder): this;
36
+ validate(): boolean;
37
+ toArray(array?: NumericArray, offset?: number): NumericArray;
38
+ toArray4(array?: NumericArray, offset?: number): NumericArray;
39
+ toVector3(result?: NumericArray): NumericArray;
40
+ get x(): number;
41
+ set x(value: number);
42
+ get y(): number;
43
+ set y(value: number);
44
+ get z(): number;
45
+ set z(value: number);
46
+ get alpha(): number;
47
+ set alpha(value: number);
48
+ get beta(): number;
49
+ set beta(value: number);
50
+ get gamma(): number;
51
+ set gamma(value: number);
52
+ get phi(): number;
53
+ set phi(value: number);
54
+ get theta(): number;
55
+ set theta(value: number);
56
+ get psi(): number;
57
+ set psi(value: number);
58
+ get roll(): number;
59
+ set roll(value: number);
60
+ get pitch(): number;
61
+ set pitch(value: number);
62
+ get yaw(): number;
63
+ set yaw(value: number);
64
+ get order(): RotationOrder;
65
+ set order(value: RotationOrder);
66
+ fromVector3(v: Readonly<NumericArray>, order: RotationOrder): this;
67
+ fromArray(array: Readonly<NumericArray>, offset?: number): this;
68
+ fromRollPitchYaw(roll: number, pitch: number, yaw: number): this;
69
+ fromRotationMatrix(m: Readonly<NumericArray>, order?: RotationOrder): this;
70
+ getRotationMatrix(m: NumericArray): NumericArray;
71
+ getQuaternion(): Quaternion;
72
+ _fromRotationMatrix(m: Readonly<NumericArray>, order?: RotationOrder): this;
73
+ _getRotationMatrix(result: NumericArray): NumericArray;
74
+ toQuaternion(): Quaternion;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=euler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"euler.d.ts","sourceRoot":"","sources":["../../src/classes/euler.ts"],"names":[],"mappings":"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"}