@chemistry/math 2.7.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,70 +1,71 @@
1
- import { ICloneable } from "@chemistry/common";
2
- import { Quaternion } from "./quaternion";
3
- import { Vec3 } from "./vec3";
4
- /**
5
- * Class to work with Matrix4x4 (When normalized have proberty A^-1 = A^t)
6
- * (used for transformation in 3D)
7
- * | 0 4 8 12 | | RS R R T |
8
- * | 1 5 9 13 | | R RS R T |
9
- * | 2 6 10 14 | = | R R RS T |
10
- * | 3 7 11 15 | | 0 0 0 1 |
11
- */
12
- export declare class Transform3D implements ICloneable<Transform3D> {
13
- static equals(matrix1: Transform3D, matrix2: Transform3D): boolean;
14
- /**
15
- * Return Transformation from Scale
16
- */
17
- static fromScale(scale: number): Transform3D;
18
- /**
19
- * Return Transformation from Quaternion
20
- */
21
- static fromQuaternion(quaternion: Quaternion): Transform3D;
22
- static fromMultiplication(transform1: Transform3D, transform2: Transform3D): Transform3D;
23
- /**
24
- * Return Transformation by Translation
25
- */
26
- static fromTranslation(translation: Vec3): Transform3D;
27
- /**
28
- * Return Transformation from rootation about an axis
29
- */
30
- static fromRotation(axis: Vec3, angle: number): Transform3D;
31
- protected elements: number[];
32
- constructor(elements?: number[]);
33
- toString(): string;
34
- /**
35
- * Set value to specified element of the matrix
36
- */
37
- set(row: number, col: number, value: number): void;
38
- /**
39
- * Return specified element of the matrix
40
- */
41
- get(row: number, col: number): number;
42
- /**
43
- * Multipy vector to the Matrix
44
- */
45
- project(position: Vec3): Vec3;
46
- rotate(axis: Vec3, angle: number): Transform3D;
47
- /**
48
- * Add translational component to current transformation
49
- */
50
- translate(vec: Vec3): Transform3D;
51
- /**
52
- * Extract translational component of the transformation
53
- */
54
- extractTranslation(): Vec3;
55
- extractScale(): number;
56
- /**
57
- * Return Inverse to current transformation (by inverting matrix)
58
- * (allow to unproject vectors)
59
- */
60
- inverse(): Transform3D;
61
- /**
62
- * Return determinant of transformation matrix
63
- */
64
- determinant(): number;
65
- /**
66
- * Clone current transformation
67
- */
68
- clone(): Transform3D;
69
- equals(transform: Transform3D): boolean;
70
- }
1
+ import { ICloneable } from '@chemistry/common';
2
+ import { Quaternion } from './quaternion';
3
+ import { Vec3 } from './vec3';
4
+ /**
5
+ * Class to work with Matrix4x4 (When normalized have proberty A^-1 = A^t)
6
+ * (used for transformation in 3D)
7
+ * | 0 4 8 12 | | RS R R T |
8
+ * | 1 5 9 13 | | R RS R T |
9
+ * | 2 6 10 14 | = | R R RS T |
10
+ * | 3 7 11 15 | | 0 0 0 1 |
11
+ */
12
+ export declare class Transform3D implements ICloneable<Transform3D> {
13
+ static equals(matrix1: Transform3D, matrix2: Transform3D): boolean;
14
+ /**
15
+ * Return Transformation from Scale
16
+ */
17
+ static fromScale(scale: number): Transform3D;
18
+ /**
19
+ * Return Transformation from Quaternion
20
+ */
21
+ static fromQuaternion(quaternion: Quaternion): Transform3D;
22
+ static fromMultiplication(transform1: Transform3D, transform2: Transform3D): Transform3D;
23
+ /**
24
+ * Return Transformation by Translation
25
+ */
26
+ static fromTranslation(translation: Vec3): Transform3D;
27
+ /**
28
+ * Return Transformation from rootation about an axis
29
+ */
30
+ static fromRotation(axis: Vec3, angle: number): Transform3D;
31
+ protected elements: number[];
32
+ constructor(elements?: number[]);
33
+ toString(): string;
34
+ /**
35
+ * Set value to specified element of the matrix
36
+ */
37
+ set(row: number, col: number, value: number): void;
38
+ /**
39
+ * Return specified element of the matrix
40
+ */
41
+ get(row: number, col: number): number;
42
+ /**
43
+ * Multipy vector to the Matrix
44
+ */
45
+ project(position: Vec3): Vec3;
46
+ rotate(axis: Vec3, angle: number): Transform3D;
47
+ /**
48
+ * Add translational component to current transformation
49
+ */
50
+ translate(vec: Vec3): Transform3D;
51
+ /**
52
+ * Extract translational component of the transformation
53
+ */
54
+ extractTranslation(): Vec3;
55
+ extractScale(): number;
56
+ /**
57
+ * Return Inverse to current transformation (by inverting matrix)
58
+ * (allow to unproject vectors)
59
+ */
60
+ inverse(): Transform3D;
61
+ /**
62
+ * Return determinant of transformation matrix
63
+ */
64
+ determinant(): number;
65
+ /**
66
+ * Clone current transformation
67
+ */
68
+ clone(): Transform3D;
69
+ equals(transform: Transform3D): boolean;
70
+ }
71
+ //# sourceMappingURL=transform3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform3d.d.ts","sourceRoot":"","sources":["../src/transform3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,UAAU,CAAC,WAAW,CAAC;WAC3C,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO;IAqBzE;;OAEG;WACW,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAInD;;OAEG;WACW,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,WAAW;WA4BnD,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,GAAG,WAAW;IAwB/F;;OAEG;WACW,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW;IAqB7D;;OAEG;WACW,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAKlE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAEjB,QAAQ,CAAC,EAAE,MAAM,EAAE;IAYxB,QAAQ,IAAI,MAAM;IAIzB;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAOlD;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAO5C;;OAEG;IACI,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAmB7B,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAKrD;;OAEG;IACI,SAAS,CAAC,GAAG,EAAE,IAAI,GAAG,WAAW;IAsBxC;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAI1B,YAAY,IAAI,MAAM;IAwB7B;;;OAGG;IACI,OAAO,IAAI,WAAW;IA4H7B;;OAEG;IACI,WAAW,IAAI,MAAM;IA4B5B;;OAEG;IACI,KAAK,IAAI,WAAW;IAIpB,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO;CAG/C"}
@@ -0,0 +1,392 @@
1
+ import { EPSILON } from '@chemistry/common';
2
+ import { Quaternion } from './quaternion';
3
+ import { Vec3 } from './vec3';
4
+ /**
5
+ * Class to work with Matrix4x4 (When normalized have proberty A^-1 = A^t)
6
+ * (used for transformation in 3D)
7
+ * | 0 4 8 12 | | RS R R T |
8
+ * | 1 5 9 13 | | R RS R T |
9
+ * | 2 6 10 14 | = | R R RS T |
10
+ * | 3 7 11 15 | | 0 0 0 1 |
11
+ */
12
+ export class Transform3D {
13
+ static equals(matrix1, matrix2) {
14
+ return (Math.abs(matrix1.elements[0] - matrix2.elements[0]) < EPSILON &&
15
+ Math.abs(matrix1.elements[1] - matrix2.elements[1]) < EPSILON &&
16
+ Math.abs(matrix1.elements[2] - matrix2.elements[2]) < EPSILON &&
17
+ Math.abs(matrix1.elements[3] - matrix2.elements[3]) < EPSILON &&
18
+ Math.abs(matrix1.elements[4] - matrix2.elements[4]) < EPSILON &&
19
+ Math.abs(matrix1.elements[5] - matrix2.elements[5]) < EPSILON &&
20
+ Math.abs(matrix1.elements[6] - matrix2.elements[6]) < EPSILON &&
21
+ Math.abs(matrix1.elements[7] - matrix2.elements[7]) < EPSILON &&
22
+ Math.abs(matrix1.elements[8] - matrix2.elements[8]) < EPSILON &&
23
+ Math.abs(matrix1.elements[9] - matrix2.elements[9]) < EPSILON &&
24
+ Math.abs(matrix1.elements[10] - matrix2.elements[10]) < EPSILON &&
25
+ Math.abs(matrix1.elements[11] - matrix2.elements[11]) < EPSILON &&
26
+ Math.abs(matrix1.elements[12] - matrix2.elements[12]) < EPSILON &&
27
+ Math.abs(matrix1.elements[13] - matrix2.elements[13]) < EPSILON &&
28
+ Math.abs(matrix1.elements[14] - matrix2.elements[14]) < EPSILON &&
29
+ Math.abs(matrix1.elements[15] - matrix2.elements[15]) < EPSILON);
30
+ }
31
+ /**
32
+ * Return Transformation from Scale
33
+ */
34
+ static fromScale(scale) {
35
+ return new Transform3D([scale, 0, 0, 0, 0, scale, 0, 0, 0, 0, scale, 0, 0, 0, 0, 1]);
36
+ }
37
+ /**
38
+ * Return Transformation from Quaternion
39
+ */
40
+ static fromQuaternion(quaternion) {
41
+ const elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
42
+ const x2 = quaternion.X() + quaternion.X();
43
+ const y2 = quaternion.Y() + quaternion.Y();
44
+ const z2 = quaternion.Z() + quaternion.Z();
45
+ const xx = quaternion.X() * x2;
46
+ const xy = quaternion.X() * y2;
47
+ const xz = quaternion.X() * z2;
48
+ const yy = quaternion.Y() * y2;
49
+ const yz = quaternion.Y() * z2;
50
+ const zz = quaternion.Z() * z2;
51
+ const wx = quaternion.W() * x2;
52
+ const wy = quaternion.W() * y2;
53
+ const wz = quaternion.W() * z2;
54
+ elements[3] = elements[7] = elements[11] = elements[12] = elements[13] = elements[14] = 0;
55
+ elements[15] = 1;
56
+ elements[0] = 1 - (yy + zz);
57
+ elements[4] = xy + wz;
58
+ elements[8] = xz - wy;
59
+ elements[1] = xy - wz;
60
+ elements[5] = 1 - (xx + zz);
61
+ elements[9] = yz + wx;
62
+ elements[2] = xz + wy;
63
+ elements[6] = yz - wx;
64
+ elements[10] = 1 - (xx + yy);
65
+ return new Transform3D(elements);
66
+ }
67
+ static fromMultiplication(transform1, transform2) {
68
+ const m1 = transform1.elements;
69
+ const m2 = transform2.elements;
70
+ return new Transform3D([
71
+ m1[0] * m2[0] + m1[1] * m2[4] + m1[2] * m2[8] + m1[3] * m2[12],
72
+ m1[0] * m2[1] + m1[1] * m2[5] + m1[2] * m2[9] + m1[3] * m2[13],
73
+ m1[0] * m2[2] + m1[1] * m2[6] + m1[2] * m2[10] + m1[3] * m2[14],
74
+ m1[0] * m2[3] + m1[1] * m2[7] + m1[2] * m2[11] + m1[3] * m2[15],
75
+ m1[4] * m2[0] + m1[5] * m2[4] + m1[6] * m2[8] + m1[7] * m2[12],
76
+ m1[4] * m2[1] + m1[5] * m2[5] + m1[6] * m2[9] + m1[7] * m2[13],
77
+ m1[4] * m2[2] + m1[5] * m2[6] + m1[6] * m2[10] + m1[7] * m2[14],
78
+ m1[4] * m2[3] + m1[5] * m2[7] + m1[6] * m2[11] + m1[7] * m2[15],
79
+ m1[8] * m2[0] + m1[9] * m2[4] + m1[10] * m2[8] + m1[11] * m2[12],
80
+ m1[8] * m2[1] + m1[9] * m2[5] + m1[10] * m2[9] + m1[11] * m2[13],
81
+ m1[8] * m2[2] + m1[9] * m2[6] + m1[10] * m2[10] + m1[11] * m2[14],
82
+ m1[8] * m2[3] + m1[9] * m2[7] + m1[10] * m2[11] + m1[11] * m2[15],
83
+ m1[12] * m2[0] + m1[13] * m2[4] + m1[14] * m2[8] + m1[15] * m2[12],
84
+ m1[12] * m2[1] + m1[13] * m2[5] + m1[14] * m2[9] + m1[15] * m2[13],
85
+ m1[12] * m2[2] + m1[13] * m2[6] + m1[14] * m2[10] + m1[15] * m2[14],
86
+ m1[12] * m2[3] + m1[13] * m2[7] + m1[14] * m2[11] + m1[15] * m2[15],
87
+ ]);
88
+ }
89
+ /**
90
+ * Return Transformation by Translation
91
+ */
92
+ static fromTranslation(translation) {
93
+ return new Transform3D([
94
+ 1,
95
+ 0,
96
+ 0,
97
+ 0,
98
+ 0,
99
+ 1,
100
+ 0,
101
+ 0,
102
+ 0,
103
+ 0,
104
+ 1,
105
+ 0,
106
+ translation.x,
107
+ translation.y,
108
+ translation.z,
109
+ 1,
110
+ ]);
111
+ }
112
+ /**
113
+ * Return Transformation from rootation about an axis
114
+ */
115
+ static fromRotation(axis, angle) {
116
+ const quat = Quaternion.fromAxisAngle(axis, angle);
117
+ return Transform3D.fromQuaternion(quat);
118
+ }
119
+ constructor(elements) {
120
+ if (elements?.length) {
121
+ if (elements.length !== 16) {
122
+ throw new Error('Wrong array length. expected 16');
123
+ }
124
+ this.elements = elements.slice(0);
125
+ return;
126
+ }
127
+ this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
128
+ }
129
+ toString() {
130
+ return '(' + this.elements.slice(0, 16).map((element) => element.toFixed(3)) + ')';
131
+ }
132
+ /**
133
+ * Set value to specified element of the matrix
134
+ */
135
+ set(row, col, value) {
136
+ if (row > 4 || row < 0 || col > 4 || col < 0) {
137
+ throw new Error('Incorrect coeficients');
138
+ }
139
+ this.elements[row + col * 4] = value;
140
+ }
141
+ /**
142
+ * Return specified element of the matrix
143
+ */
144
+ get(row, col) {
145
+ if (row > 4 || row < 0 || col > 4 || col < 0) {
146
+ throw new Error('Incorrect coeficients');
147
+ }
148
+ return this.elements[row + col * 4];
149
+ }
150
+ /**
151
+ * Multipy vector to the Matrix
152
+ */
153
+ project(position) {
154
+ const x = this.elements[0] * position.x +
155
+ this.elements[4] * position.y +
156
+ this.elements[8] * position.z +
157
+ this.elements[12];
158
+ const y = this.elements[1] * position.x +
159
+ this.elements[5] * position.y +
160
+ this.elements[9] * position.z +
161
+ this.elements[13];
162
+ const z = this.elements[2] * position.x +
163
+ this.elements[6] * position.y +
164
+ this.elements[10] * position.z +
165
+ this.elements[14];
166
+ return new Vec3(x, y, z);
167
+ }
168
+ rotate(axis, angle) {
169
+ const quat = Quaternion.fromAxisAngle(axis, angle);
170
+ const x = Transform3D.fromQuaternion(quat);
171
+ return Transform3D.fromMultiplication(this, x);
172
+ }
173
+ /**
174
+ * Add translational component to current transformation
175
+ */
176
+ translate(vec) {
177
+ const m = this.elements;
178
+ return new Transform3D([
179
+ m[0],
180
+ m[1],
181
+ m[2],
182
+ m[3],
183
+ m[4],
184
+ m[5],
185
+ m[6],
186
+ m[7],
187
+ m[8],
188
+ m[9],
189
+ m[10],
190
+ m[11],
191
+ m[12] + vec.x,
192
+ m[13] + vec.y,
193
+ m[14] + vec.z,
194
+ m[15],
195
+ ]);
196
+ }
197
+ /**
198
+ * Extract translational component of the transformation
199
+ */
200
+ extractTranslation() {
201
+ return new Vec3(this.elements[12], this.elements[13], this.elements[14]);
202
+ }
203
+ extractScale() {
204
+ const m = this.elements;
205
+ const t = new Transform3D([
206
+ m[0],
207
+ m[1],
208
+ m[2],
209
+ m[3],
210
+ m[4],
211
+ m[5],
212
+ m[6],
213
+ m[7],
214
+ m[8],
215
+ m[9],
216
+ m[10],
217
+ m[11],
218
+ 0,
219
+ 0,
220
+ 0,
221
+ 1,
222
+ ]);
223
+ const vec = t.project(new Vec3(1, 1, 1));
224
+ return vec.length / Math.sqrt(3);
225
+ }
226
+ /**
227
+ * Return Inverse to current transformation (by inverting matrix)
228
+ * (allow to unproject vectors)
229
+ */
230
+ inverse() {
231
+ let i;
232
+ const r = new Array(16);
233
+ const m = this.elements;
234
+ r[0] =
235
+ m[5] * m[10] * m[15] -
236
+ m[5] * m[14] * m[11] -
237
+ m[6] * m[9] * m[15] +
238
+ m[6] * m[13] * m[11] +
239
+ m[7] * m[9] * m[14] -
240
+ m[7] * m[13] * m[10];
241
+ r[1] =
242
+ -m[1] * m[10] * m[15] +
243
+ m[1] * m[14] * m[11] +
244
+ m[2] * m[9] * m[15] -
245
+ m[2] * m[13] * m[11] -
246
+ m[3] * m[9] * m[14] +
247
+ m[3] * m[13] * m[10];
248
+ r[2] =
249
+ m[1] * m[6] * m[15] -
250
+ m[1] * m[14] * m[7] -
251
+ m[2] * m[5] * m[15] +
252
+ m[2] * m[13] * m[7] +
253
+ m[3] * m[5] * m[14] -
254
+ m[3] * m[13] * m[6];
255
+ r[3] =
256
+ -m[1] * m[6] * m[11] +
257
+ m[1] * m[10] * m[7] +
258
+ m[2] * m[5] * m[11] -
259
+ m[2] * m[9] * m[7] -
260
+ m[3] * m[5] * m[10] +
261
+ m[3] * m[9] * m[6];
262
+ r[4] =
263
+ -m[4] * m[10] * m[15] +
264
+ m[4] * m[14] * m[11] +
265
+ m[6] * m[8] * m[15] -
266
+ m[6] * m[12] * m[11] -
267
+ m[7] * m[8] * m[14] +
268
+ m[7] * m[12] * m[10];
269
+ r[5] =
270
+ m[0] * m[10] * m[15] -
271
+ m[0] * m[14] * m[11] -
272
+ m[2] * m[8] * m[15] +
273
+ m[2] * m[12] * m[11] +
274
+ m[3] * m[8] * m[14] -
275
+ m[3] * m[12] * m[10];
276
+ r[6] =
277
+ -m[0] * m[6] * m[15] +
278
+ m[0] * m[14] * m[7] +
279
+ m[2] * m[4] * m[15] -
280
+ m[2] * m[12] * m[7] -
281
+ m[3] * m[4] * m[14] +
282
+ m[3] * m[12] * m[6];
283
+ r[7] =
284
+ m[0] * m[6] * m[11] -
285
+ m[0] * m[10] * m[7] -
286
+ m[2] * m[4] * m[11] +
287
+ m[2] * m[8] * m[7] +
288
+ m[3] * m[4] * m[10] -
289
+ m[3] * m[8] * m[6];
290
+ r[8] =
291
+ m[4] * m[9] * m[15] -
292
+ m[4] * m[13] * m[11] -
293
+ m[5] * m[8] * m[15] +
294
+ m[5] * m[12] * m[11] +
295
+ m[7] * m[8] * m[13] -
296
+ m[7] * m[12] * m[9];
297
+ r[9] =
298
+ -m[0] * m[9] * m[15] +
299
+ m[0] * m[13] * m[11] +
300
+ m[1] * m[8] * m[15] -
301
+ m[1] * m[12] * m[11] -
302
+ m[3] * m[8] * m[13] +
303
+ m[3] * m[12] * m[9];
304
+ r[10] =
305
+ m[0] * m[5] * m[15] -
306
+ m[0] * m[13] * m[7] -
307
+ m[1] * m[4] * m[15] +
308
+ m[1] * m[12] * m[7] +
309
+ m[3] * m[4] * m[13] -
310
+ m[3] * m[12] * m[5];
311
+ r[11] =
312
+ -m[0] * m[5] * m[11] +
313
+ m[0] * m[9] * m[7] +
314
+ m[1] * m[4] * m[11] -
315
+ m[1] * m[8] * m[7] -
316
+ m[3] * m[4] * m[9] +
317
+ m[3] * m[8] * m[5];
318
+ r[12] =
319
+ -m[4] * m[9] * m[14] +
320
+ m[4] * m[13] * m[10] +
321
+ m[5] * m[8] * m[14] -
322
+ m[5] * m[12] * m[10] -
323
+ m[6] * m[8] * m[13] +
324
+ m[6] * m[12] * m[9];
325
+ r[13] =
326
+ m[0] * m[9] * m[14] -
327
+ m[0] * m[13] * m[10] -
328
+ m[1] * m[8] * m[14] +
329
+ m[1] * m[12] * m[10] +
330
+ m[2] * m[8] * m[13] -
331
+ m[2] * m[12] * m[9];
332
+ r[14] =
333
+ -m[0] * m[5] * m[14] +
334
+ m[0] * m[13] * m[6] +
335
+ m[1] * m[4] * m[14] -
336
+ m[1] * m[12] * m[6] -
337
+ m[2] * m[4] * m[13] +
338
+ m[2] * m[12] * m[5];
339
+ r[15] =
340
+ m[0] * m[5] * m[10] -
341
+ m[0] * m[9] * m[6] -
342
+ m[1] * m[4] * m[10] +
343
+ m[1] * m[8] * m[6] +
344
+ m[2] * m[4] * m[9] -
345
+ m[2] * m[8] * m[5];
346
+ const det = m[0] * r[0] + m[1] * r[4] + m[2] * r[8] + m[3] * r[12];
347
+ for (i = 0; i < 16; i++) {
348
+ r[i] /= det;
349
+ }
350
+ return new Transform3D(r);
351
+ }
352
+ /**
353
+ * Return determinant of transformation matrix
354
+ */
355
+ determinant() {
356
+ const value = this.get(0, 3) * this.get(1, 2) * this.get(2, 1) * this.get(3, 0) -
357
+ this.get(0, 1) * this.get(1, 3) * this.get(2, 1) * this.get(3, 0) -
358
+ this.get(0, 3) * this.get(1, 1) * this.get(2, 2) * this.get(3, 0) +
359
+ this.get(0, 1) * this.get(1, 3) * this.get(2, 2) * this.get(3, 0) +
360
+ this.get(0, 1) * this.get(1, 1) * this.get(2, 3) * this.get(3, 0) -
361
+ this.get(0, 1) * this.get(1, 2) * this.get(2, 3) * this.get(3, 0) -
362
+ this.get(0, 3) * this.get(1, 2) * this.get(2, 0) * this.get(3, 1) +
363
+ this.get(0, 1) * this.get(1, 3) * this.get(2, 0) * this.get(3, 1) +
364
+ this.get(0, 3) * this.get(1, 0) * this.get(2, 2) * this.get(3, 1) -
365
+ this.get(0, 0) * this.get(1, 3) * this.get(2, 2) * this.get(3, 1) -
366
+ this.get(0, 1) * this.get(1, 0) * this.get(2, 3) * this.get(3, 1) +
367
+ this.get(0, 0) * this.get(1, 2) * this.get(2, 3) * this.get(3, 1) +
368
+ this.get(0, 3) * this.get(1, 1) * this.get(2, 0) * this.get(3, 2) -
369
+ this.get(0, 1) * this.get(1, 3) * this.get(2, 0) * this.get(3, 2) -
370
+ this.get(0, 3) * this.get(1, 0) * this.get(2, 1) * this.get(3, 2) +
371
+ this.get(0, 0) * this.get(1, 3) * this.get(2, 1) * this.get(3, 2) +
372
+ this.get(0, 1) * this.get(1, 0) * this.get(2, 3) * this.get(3, 2) -
373
+ this.get(0, 0) * this.get(1, 1) * this.get(2, 3) * this.get(3, 2) -
374
+ this.get(0, 1) * this.get(1, 1) * this.get(2, 0) * this.get(3, 3) +
375
+ this.get(0, 1) * this.get(1, 2) * this.get(2, 0) * this.get(3, 3) +
376
+ this.get(0, 1) * this.get(1, 0) * this.get(2, 1) * this.get(3, 3) -
377
+ this.get(0, 0) * this.get(1, 2) * this.get(2, 1) * this.get(3, 3) -
378
+ this.get(0, 1) * this.get(1, 0) * this.get(2, 2) * this.get(3, 3) +
379
+ this.get(0, 0) * this.get(1, 1) * this.get(2, 2) * this.get(3, 3);
380
+ return value;
381
+ }
382
+ /**
383
+ * Clone current transformation
384
+ */
385
+ clone() {
386
+ return new Transform3D(this.elements);
387
+ }
388
+ equals(transform) {
389
+ return Transform3D.equals(this, transform);
390
+ }
391
+ }
392
+ //# sourceMappingURL=transform3d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform3d.js","sourceRoot":"","sources":["../src/transform3d.ts"],"names":[],"mappings":"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E,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC/D,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9D,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9D,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC/D,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC/D,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAChE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAChE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACjE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACjE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAClE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAClE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACnE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,C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AC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC;YACH,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC;YACH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC;YACH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC;YACH,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC;YACH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC;YACH,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACd,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,MAAM,KAAK,GACT,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,SAAsB;QAClC,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;CACF"}
package/dist/vec2.d.ts CHANGED
@@ -1,25 +1,26 @@
1
- import { ICloneable, IEquatable } from "@chemistry/common";
2
- export interface IVec2 {
3
- x: number;
4
- y: number;
5
- }
6
- export declare class Vec2 implements IVec2, ICloneable<Vec2>, IEquatable<Vec2> {
7
- static add(v1: Vec2, v2: Vec2): Vec2;
8
- static sub(v1: Vec2, v2: Vec2): Vec2;
9
- static dot(v1: Vec2, v2: Vec2): number;
10
- static equals(v1: Vec2, v2: Vec2): boolean;
11
- x: number;
12
- y: number;
13
- constructor(x: number, y: number);
14
- readonly length: number;
15
- readonly lengthPow2: number;
16
- readonly avg: number;
17
- scale(num: number): Vec2;
18
- normalize(): Vec2;
19
- dot(vec: Vec2): number;
20
- sub(vec: Vec2): Vec2;
21
- add(vector: Vec2): Vec2;
22
- equals(vec: Vec2): boolean;
23
- clone(): Vec2;
24
- toString(): string;
25
- }
1
+ import { ICloneable, IEquatable } from '@chemistry/common';
2
+ export interface IVec2 {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ export declare class Vec2 implements IVec2, ICloneable<Vec2>, IEquatable<Vec2> {
7
+ static add(v1: Vec2, v2: Vec2): Vec2;
8
+ static sub(v1: Vec2, v2: Vec2): Vec2;
9
+ static dot(v1: Vec2, v2: Vec2): number;
10
+ static equals(v1: Vec2, v2: Vec2): boolean;
11
+ x: number;
12
+ y: number;
13
+ constructor(x: number, y: number);
14
+ get length(): number;
15
+ get lengthPow2(): number;
16
+ get avg(): number;
17
+ scale(num: number): Vec2;
18
+ normalize(): Vec2;
19
+ dot(vec: Vec2): number;
20
+ sub(vec: Vec2): Vec2;
21
+ add(vector: Vec2): Vec2;
22
+ equals(vec: Vec2): boolean;
23
+ clone(): Vec2;
24
+ toString(): string;
25
+ }
26
+ //# sourceMappingURL=vec2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec2.d.ts","sourceRoot":"","sources":["../src/vec2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,IAAK,YAAW,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC;WACtD,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI;WAI7B,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI;WAI7B,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM;WAI/B,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO;IAI1C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;gBAEL,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKhC,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAEM,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,SAAS,IAAI,IAAI;IASjB,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM;IAItB,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;IAIpB,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAIvB,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAI1B,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,MAAM;CAG1B"}