@math.gl/core 3.5.7 → 3.6.0-alpha.3

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,253 @@
1
+ // Copyright (c) 2017 Uber Technologies, Inc.
2
+ // MIT License
3
+ import Matrix from './base/matrix';
4
+ import {checkVector} from '../lib/validators';
5
+ /* eslint-disable camelcase */
6
+ import {vec4_transformMat3} from '../lib/gl-matrix-extras';
7
+ import * as mat3 from 'gl-matrix/mat3';
8
+ import * as vec2 from 'gl-matrix/vec2';
9
+ import * as vec3 from 'gl-matrix/vec3';
10
+ import {NumericArray} from '@math.gl/types';
11
+
12
+ enum INDICES {
13
+ COL0ROW0 = 0,
14
+ COL0ROW1 = 1,
15
+ COL0ROW2 = 2,
16
+ COL1ROW0 = 3,
17
+ COL1ROW1 = 4,
18
+ COL1ROW2 = 5,
19
+ COL2ROW0 = 6,
20
+ COL2ROW1 = 7,
21
+ COL2ROW2 = 8
22
+ }
23
+
24
+ const IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 1, 0, 0, 0, 1]);
25
+
26
+ export default class Matrix3 extends Matrix {
27
+ static get IDENTITY(): Readonly<Matrix3> {
28
+ return getIdentityMatrix();
29
+ }
30
+
31
+ static get ZERO(): Readonly<Matrix3> {
32
+ return getZeroMatrix();
33
+ }
34
+
35
+ get ELEMENTS(): number {
36
+ return 9;
37
+ }
38
+
39
+ get RANK(): number {
40
+ return 3;
41
+ }
42
+
43
+ get INDICES(): typeof INDICES {
44
+ return INDICES;
45
+ }
46
+
47
+ constructor(array?: Readonly<NumericArray>);
48
+ /** @deprecated */
49
+ constructor(...args: number[]);
50
+
51
+ constructor(array?: number | Readonly<NumericArray>, ...args: number[]) {
52
+ // PERF NOTE: initialize elements as double precision numbers
53
+ super(-0, -0, -0, -0, -0, -0, -0, -0, -0);
54
+ if (arguments.length === 1 && Array.isArray(array)) {
55
+ this.copy(array);
56
+ } else if (args.length > 0) {
57
+ this.copy([array as number, ...args]);
58
+ } else {
59
+ this.identity();
60
+ }
61
+ }
62
+
63
+ copy(array: Readonly<NumericArray>): this {
64
+ // Element wise copy for performance
65
+ this[0] = array[0];
66
+ this[1] = array[1];
67
+ this[2] = array[2];
68
+ this[3] = array[3];
69
+ this[4] = array[4];
70
+ this[5] = array[5];
71
+ this[6] = array[6];
72
+ this[7] = array[7];
73
+ this[8] = array[8];
74
+ return this.check();
75
+ }
76
+
77
+ // Constructors
78
+
79
+ identity(): this {
80
+ return this.copy(IDENTITY_MATRIX);
81
+ }
82
+
83
+ /**
84
+ *
85
+ * @param object
86
+ * @returns self
87
+ */
88
+ fromObject(object: {[key: string]: any}): this {
89
+ return this.check();
90
+ }
91
+
92
+ // Calculates a 3x3 matrix from the given quaternion
93
+ // q quat Quaternion to create matrix from
94
+ fromQuaternion(q: Readonly<NumericArray>): this {
95
+ mat3.fromQuat(this, q);
96
+ return this.check();
97
+ }
98
+
99
+ /**
100
+ * accepts column major order, stores in column major order
101
+ */
102
+ // eslint-disable-next-line max-params
103
+ set(
104
+ m00: number,
105
+ m10: number,
106
+ m20: number,
107
+ m01: number,
108
+ m11: number,
109
+ m21: number,
110
+ m02: number,
111
+ m12: number,
112
+ m22: number
113
+ ): this {
114
+ this[0] = m00;
115
+ this[1] = m10;
116
+ this[2] = m20;
117
+ this[3] = m01;
118
+ this[4] = m11;
119
+ this[5] = m21;
120
+ this[6] = m02;
121
+ this[7] = m12;
122
+ this[8] = m22;
123
+ return this.check();
124
+ }
125
+
126
+ /**
127
+ * accepts row major order, stores as column major
128
+ */
129
+ // eslint-disable-next-line max-params
130
+ setRowMajor(
131
+ m00: number,
132
+ m01: number,
133
+ m02: number,
134
+ m10: number,
135
+ m11: number,
136
+ m12: number,
137
+ m20: number,
138
+ m21: number,
139
+ m22: number
140
+ ): this {
141
+ this[0] = m00;
142
+ this[1] = m10;
143
+ this[2] = m20;
144
+ this[3] = m01;
145
+ this[4] = m11;
146
+ this[5] = m21;
147
+ this[6] = m02;
148
+ this[7] = m12;
149
+ this[8] = m22;
150
+ return this.check();
151
+ }
152
+
153
+ // Accessors
154
+
155
+ determinant(): number {
156
+ return mat3.determinant(this);
157
+ }
158
+
159
+ // Modifiers
160
+ transpose(): this {
161
+ mat3.transpose(this, this);
162
+ return this.check();
163
+ }
164
+
165
+ /** Invert a matrix. Note that this can fail if the matrix is not invertible */
166
+ invert(): this {
167
+ mat3.invert(this, this);
168
+ return this.check();
169
+ }
170
+
171
+ // Operations
172
+ multiplyLeft(a: NumericArray): this {
173
+ mat3.multiply(this, a, this);
174
+ return this.check();
175
+ }
176
+
177
+ multiplyRight(a: NumericArray): this {
178
+ mat3.multiply(this, this, a);
179
+ return this.check();
180
+ }
181
+
182
+ rotate(radians: number): NumericArray {
183
+ mat3.rotate(this, this, radians);
184
+ return this.check();
185
+ }
186
+
187
+ scale(factor: NumericArray | number): this {
188
+ if (Array.isArray(factor)) {
189
+ mat3.scale(this, this, factor);
190
+ } else {
191
+ mat3.scale(this, this, [factor as number, factor as number]);
192
+ }
193
+ return this.check();
194
+ }
195
+
196
+ translate(vec: NumericArray): this {
197
+ mat3.translate(this, this, vec);
198
+ return this.check();
199
+ }
200
+
201
+ // Transforms
202
+ transform(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {
203
+ switch (vector.length) {
204
+ case 2:
205
+ result = vec2.transformMat3(result || [-0, -0], vector, this);
206
+ break;
207
+ case 3:
208
+ result = vec3.transformMat3(result || [-0, -0, -0], vector, this);
209
+ break;
210
+ case 4:
211
+ result = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
212
+ break;
213
+ default:
214
+ throw new Error('Illegal vector');
215
+ }
216
+ checkVector(result, vector.length);
217
+ return result;
218
+ }
219
+
220
+ /** @deprecated */
221
+ transformVector(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {
222
+ return this.transform(vector, result);
223
+ }
224
+
225
+ /** @deprecated */
226
+ transformVector2(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {
227
+ return this.transform(vector, result);
228
+ }
229
+
230
+ /** @deprecated */
231
+ transformVector3(vector: Readonly<NumericArray>, result?: NumericArray): NumericArray {
232
+ return this.transform(vector, result);
233
+ }
234
+ }
235
+
236
+ let ZERO_MATRIX3;
237
+ let IDENTITY_MATRIX3;
238
+
239
+ function getZeroMatrix(): Readonly<Matrix3> {
240
+ if (!ZERO_MATRIX3) {
241
+ ZERO_MATRIX3 = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);
242
+ Object.freeze(ZERO_MATRIX3);
243
+ }
244
+ return ZERO_MATRIX3;
245
+ }
246
+
247
+ function getIdentityMatrix(): Matrix3 {
248
+ if (!IDENTITY_MATRIX3) {
249
+ IDENTITY_MATRIX3 = new Matrix3();
250
+ Object.freeze(IDENTITY_MATRIX3);
251
+ }
252
+ return IDENTITY_MATRIX3;
253
+ }