@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
@@ -1,32 +1,26 @@
1
+ // Copyright (c) 2017 Uber Technologies, Inc.
2
+ // MIT License
3
+ import {NumericArray} from '@math.gl/types';
1
4
  import MathArray from './math-array';
2
5
  import {checkNumber} from '../../lib/validators';
3
6
  import {config} from '../../lib/common';
4
- import assert from '../../lib/assert';
5
7
 
6
- export default class Matrix extends MathArray {
7
- // Defined by derived class
8
- get ELEMENTS() {
9
- assert(false);
10
- return 0;
11
- }
12
-
13
- get RANK() {
14
- assert(false);
15
- return 0;
16
- }
8
+ /** Base class for matrices */
9
+ export default abstract class Matrix extends MathArray {
10
+ abstract get RANK(): number;
17
11
 
18
12
  // fromObject(object) {
19
13
  // const array = object.elements;
20
14
  // return this.fromRowMajor(array);
21
15
  // }
22
-
23
16
  // toObject(object) {
24
17
  // const array = object.elements;
25
18
  // this.toRowMajor(array);
26
19
  // return object;
27
20
  // }
28
21
 
29
- toString() {
22
+ // TODO better override formatString?
23
+ toString(): string {
30
24
  let string = '[';
31
25
  if (config.printRowMajor) {
32
26
  string += 'row-major:';
@@ -45,22 +39,24 @@ export default class Matrix extends MathArray {
45
39
  return string;
46
40
  }
47
41
 
48
- getElementIndex(row, col) {
42
+ getElementIndex(row: number, col: number): number {
49
43
  return col * this.RANK + row;
50
44
  }
51
45
 
52
46
  // By default assumes row major indices
53
- getElement(row, col) {
47
+ getElement(row: number, col: number): number {
54
48
  return this[col * this.RANK + row];
55
49
  }
56
50
 
57
51
  // By default assumes row major indices
58
- setElement(row, col, value) {
52
+ setElement(row: number, col: number, value: number): this {
59
53
  this[col * this.RANK + row] = checkNumber(value);
60
54
  return this;
61
55
  }
56
+ getColumn<NumArrayT>(columnIndex: number, result: NumArrayT): NumArrayT;
57
+ getColumn(columnIndex: number): number[];
62
58
 
63
- getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {
59
+ getColumn(columnIndex: number, result: number[] = new Array(this.RANK).fill(-0)): number[] {
64
60
  const firstIndex = columnIndex * this.RANK;
65
61
  for (let i = 0; i < this.RANK; ++i) {
66
62
  result[i] = this[firstIndex + i];
@@ -68,7 +64,7 @@ export default class Matrix extends MathArray {
68
64
  return result;
69
65
  }
70
66
 
71
- setColumn(columnIndex, columnVector) {
67
+ setColumn(columnIndex: number, columnVector: Readonly<NumericArray>): this {
72
68
  const firstIndex = columnIndex * this.RANK;
73
69
  for (let i = 0; i < this.RANK; ++i) {
74
70
  this[firstIndex + i] = columnVector[i];
@@ -1,46 +1,51 @@
1
+ // Copyright (c) 2017 Uber Technologies, Inc.
2
+ // MIT License
3
+ import {NumericArray} from '@math.gl/types';
1
4
  import MathArray from './math-array';
2
5
  import {checkNumber} from '../../lib/validators';
3
6
  import assert from '../../lib/assert';
4
7
 
5
- export default class Vector extends MathArray {
6
- get ELEMENTS() {
7
- assert(false);
8
- return 0;
9
- }
10
-
11
- // VIRTUAL METHODS
12
- copy(vector) {
13
- assert(false);
14
- return this;
15
- }
16
-
8
+ /** Base class for vectors with at least 2 elements */
9
+ export default abstract class Vector extends MathArray {
17
10
  // ACCESSORS
18
11
 
19
- get x() {
12
+ get x(): number {
20
13
  return this[0];
21
14
  }
22
- set x(value) {
15
+
16
+ set x(value: number) {
23
17
  this[0] = checkNumber(value);
24
18
  }
25
19
 
26
- get y() {
20
+ get y(): number {
27
21
  return this[1];
28
22
  }
29
- set y(value) {
23
+
24
+ set y(value: number) {
30
25
  this[1] = checkNumber(value);
31
26
  }
32
27
 
33
- // NOTE: `length` is a reserved word for Arrays, so we can't use `v.length()`
34
- // Offer `len` and `magnitude`
35
- len() {
28
+ /**
29
+ * Returns the length of the vector from the origin to the point described by this vector
30
+ *
31
+ * @note `length` is a reserved word for Arrays, so `v.length()` will return number of elements
32
+ * Instead we provide `len` and `magnitude`
33
+ */
34
+ len(): number {
36
35
  return Math.sqrt(this.lengthSquared());
37
36
  }
38
37
 
39
- magnitude() {
38
+ /**
39
+ * Returns the length of the vector from the origin to the point described by this vector
40
+ */
41
+ magnitude(): number {
40
42
  return this.len();
41
43
  }
42
44
 
43
- lengthSquared() {
45
+ /**
46
+ * Returns the squared length of the vector from the origin to the point described by this vector
47
+ */
48
+ lengthSquared(): number {
44
49
  let length = 0;
45
50
  for (let i = 0; i < this.ELEMENTS; ++i) {
46
51
  length += this[i] * this[i];
@@ -48,15 +53,18 @@ export default class Vector extends MathArray {
48
53
  return length;
49
54
  }
50
55
 
51
- magnitudeSquared() {
56
+ /**
57
+ * Returns the squared length of the vector from the origin to the point described by this vector
58
+ */
59
+ magnitudeSquared(): number {
52
60
  return this.lengthSquared();
53
61
  }
54
62
 
55
- distance(mathArray) {
63
+ distance(mathArray: Readonly<NumericArray>): number {
56
64
  return Math.sqrt(this.distanceSquared(mathArray));
57
65
  }
58
66
 
59
- distanceSquared(mathArray) {
67
+ distanceSquared(mathArray: Readonly<NumericArray>): number {
60
68
  let length = 0;
61
69
  for (let i = 0; i < this.ELEMENTS; ++i) {
62
70
  const dist = this[i] - mathArray[i];
@@ -65,7 +73,7 @@ export default class Vector extends MathArray {
65
73
  return checkNumber(length);
66
74
  }
67
75
 
68
- dot(mathArray) {
76
+ dot(mathArray: Readonly<NumericArray>): number {
69
77
  let product = 0;
70
78
  for (let i = 0; i < this.ELEMENTS; ++i) {
71
79
  product += this[i] * mathArray[i];
@@ -75,7 +83,7 @@ export default class Vector extends MathArray {
75
83
 
76
84
  // MODIFIERS
77
85
 
78
- normalize() {
86
+ normalize(): this {
79
87
  const length = this.magnitude();
80
88
  if (length !== 0) {
81
89
  for (let i = 0; i < this.ELEMENTS; ++i) {
@@ -85,21 +93,7 @@ export default class Vector extends MathArray {
85
93
  return this.check();
86
94
  }
87
95
 
88
- // negate() {
89
- // for (let i = 0; i < this.ELEMENTS; ++i) {
90
- // this[i] = -this[i];
91
- // }
92
- // return this.check();
93
- // }
94
-
95
- // inverse() {
96
- // for (let i = 0; i < this.ELEMENTS; ++i) {
97
- // this[i] = 1 / this[i];
98
- // }
99
- // return this.check();
100
- // }
101
-
102
- multiply(...vectors) {
96
+ multiply(...vectors: Readonly<NumericArray>[]): this {
103
97
  for (const vector of vectors) {
104
98
  for (let i = 0; i < this.ELEMENTS; ++i) {
105
99
  this[i] *= vector[i];
@@ -108,7 +102,7 @@ export default class Vector extends MathArray {
108
102
  return this.check();
109
103
  }
110
104
 
111
- divide(...vectors) {
105
+ divide(...vectors: Readonly<NumericArray>[]): this {
112
106
  for (const vector of vectors) {
113
107
  for (let i = 0; i < this.ELEMENTS; ++i) {
114
108
  this[i] /= vector[i];
@@ -118,43 +112,42 @@ export default class Vector extends MathArray {
118
112
  }
119
113
 
120
114
  // THREE.js compatibility
121
- lengthSq() {
115
+
116
+ lengthSq(): number {
122
117
  return this.lengthSquared();
123
118
  }
124
-
125
- distanceTo(vector) {
119
+ distanceTo(vector: Readonly<NumericArray>): number {
126
120
  return this.distance(vector);
127
121
  }
128
-
129
- distanceToSquared(vector) {
122
+ distanceToSquared(vector: Readonly<NumericArray>): number {
130
123
  return this.distanceSquared(vector);
131
124
  }
132
125
 
133
- getComponent(i) {
126
+ getComponent(i: number): number {
134
127
  assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');
135
128
  return checkNumber(this[i]);
136
129
  }
137
130
 
138
- setComponent(i, value) {
131
+ setComponent(i: number, value: number): this {
139
132
  assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');
140
133
  this[i] = value;
141
134
  return this.check();
142
135
  }
143
136
 
144
- addVectors(a, b) {
137
+ addVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this {
145
138
  return this.copy(a).add(b);
146
139
  }
147
140
 
148
- subVectors(a, b) {
141
+ subVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this {
149
142
  return this.copy(a).subtract(b);
150
143
  }
151
144
 
152
- multiplyVectors(a, b) {
145
+ multiplyVectors(a: Readonly<NumericArray>, b: Readonly<NumericArray>): this {
153
146
  return this.copy(a).multiply(b);
154
147
  }
155
148
 
156
- addScaledVector(a, b) {
157
- // @ts-ignore error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
149
+ addScaledVector(a: Readonly<NumericArray>, b: number): this {
150
+ // @ts-expect-error error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
158
151
  return this.add(new this.constructor(a).multiplyScalar(b));
159
152
  }
160
153
  }