@vertexvis/geometry 1.0.2-testing.3 → 1.0.2-testing.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.cjs +166 -149
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.js +166 -149
- package/dist/bundle.js.map +1 -1
- package/dist/cdn/bundle.js +166 -149
- package/dist/cdn/bundle.js.map +1 -1
- package/dist/cdn/bundle.min.js +1 -1
- package/dist/cdn/bundle.min.js.map +1 -1
- package/dist/euler.d.ts +1 -1
- package/dist/matrix4.d.ts +33 -25
- package/dist/vector3.d.ts +17 -1
- package/package.json +3 -3
package/dist/bundle.cjs
CHANGED
|
@@ -259,10 +259,10 @@ function fromValues(
|
|
|
259
259
|
m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {
|
|
260
260
|
/* eslint-disable prettier/prettier */
|
|
261
261
|
return [
|
|
262
|
-
m11,
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
262
|
+
m11, m12, m13, m14,
|
|
263
|
+
m21, m22, m23, m24,
|
|
264
|
+
m31, m32, m33, m34,
|
|
265
|
+
m41, m42, m43, m44,
|
|
266
266
|
];
|
|
267
267
|
/* eslint-enable prettier/prettier */
|
|
268
268
|
}
|
|
@@ -332,9 +332,9 @@ function makeRotation(rotation) {
|
|
|
332
332
|
var wx = w * x2, wy = w * y2, wz = w * z2;
|
|
333
333
|
/* eslint-disable prettier/prettier */
|
|
334
334
|
return [
|
|
335
|
-
1 - (yy + zz), xy
|
|
336
|
-
xy
|
|
337
|
-
xz
|
|
335
|
+
1 - (yy + zz), xy - wz, xz + wy, 0,
|
|
336
|
+
xy + wz, 1 - (xx + zz), yz - wx, 0,
|
|
337
|
+
xz - wy, yz + wx, 1 - (xx + yy), 0,
|
|
338
338
|
0, 0, 0, 1
|
|
339
339
|
];
|
|
340
340
|
/* eslint-enable prettier/prettier */
|
|
@@ -364,33 +364,33 @@ function makeScale(scale) {
|
|
|
364
364
|
/* eslint-enable prettier/prettier */
|
|
365
365
|
}
|
|
366
366
|
/**
|
|
367
|
-
* Creates a matrix that has translation, rotation and scale applied to it.
|
|
367
|
+
* Creates a matrix that has translation, rotation, and scale applied to it.
|
|
368
368
|
*
|
|
369
369
|
* @param translation The translation applied to the matrix.
|
|
370
370
|
* @param rotation The rotation applied to the matrix.
|
|
371
371
|
* @param scale The scale applied to the matrix.
|
|
372
|
-
* @returns A transformed matrix.
|
|
372
|
+
* @returns A transformed matrix in column-major form.
|
|
373
373
|
*/
|
|
374
374
|
function makeTRS(translation, rotation, scale) {
|
|
375
375
|
var t = makeTranslation(translation);
|
|
376
|
-
var r = makeRotation(rotation);
|
|
376
|
+
var r = transpose(makeRotation(rotation));
|
|
377
377
|
var s = makeScale(scale);
|
|
378
|
-
return multiply$2(multiply$2(
|
|
378
|
+
return multiply$2(s, multiply$2(r, t));
|
|
379
379
|
}
|
|
380
380
|
/**
|
|
381
381
|
* Returns a matrix that has the basis components (upper left 3x3 matrix) set to
|
|
382
382
|
* the following x, y, and z axis.
|
|
383
383
|
*
|
|
384
384
|
* ```
|
|
385
|
-
* x.x y.
|
|
386
|
-
* x.y y.
|
|
387
|
-
* x.
|
|
385
|
+
* x.x x.y x.z 0
|
|
386
|
+
* y.x y.y y.z 0
|
|
387
|
+
* z.x z.y z.z 0
|
|
388
388
|
* 0 0 0 0
|
|
389
389
|
* ```
|
|
390
390
|
*
|
|
391
|
-
* @param x The x
|
|
392
|
-
* @param y The y
|
|
393
|
-
* @param z The z
|
|
391
|
+
* @param x The x-axis to set.
|
|
392
|
+
* @param y The y-axis to set.
|
|
393
|
+
* @param z The z-axis to set.
|
|
394
394
|
* @returns A matrix with its basis components populated.
|
|
395
395
|
*/
|
|
396
396
|
function makeBasis(x, y, z) {
|
|
@@ -403,30 +403,6 @@ function makeBasis(x, y, z) {
|
|
|
403
403
|
];
|
|
404
404
|
/* eslint-enable prettier/prettier */
|
|
405
405
|
}
|
|
406
|
-
/**
|
|
407
|
-
* Creates a rotation matrix that is rotated around a given axis by the given
|
|
408
|
-
* angle.
|
|
409
|
-
*
|
|
410
|
-
* @param axis The axis of rotation.
|
|
411
|
-
* @param radians The angle of rotation.
|
|
412
|
-
* @returns A rotation matrix.
|
|
413
|
-
*/
|
|
414
|
-
function makeRotationAxis(axis, radians) {
|
|
415
|
-
var c = Math.cos(radians);
|
|
416
|
-
var s = Math.sin(radians);
|
|
417
|
-
var t = 1 - c;
|
|
418
|
-
var x = axis.x, y = axis.y, z = axis.z;
|
|
419
|
-
var tx = t * x;
|
|
420
|
-
var ty = t * y;
|
|
421
|
-
/* eslint-disable prettier/prettier */
|
|
422
|
-
return [
|
|
423
|
-
tx * x + c, tx * y + s * z, tx * z - s * y, 0,
|
|
424
|
-
tx * y - s * z, ty * y + c, ty * z + s * x, 0,
|
|
425
|
-
tx * z + s * y, ty * z - s * x, t * z * z + c, 0,
|
|
426
|
-
0, 0, 0, 1
|
|
427
|
-
];
|
|
428
|
-
/* eslint-enable prettier/prettier */
|
|
429
|
-
}
|
|
430
406
|
/**
|
|
431
407
|
* Creates a matrix used for [perspective
|
|
432
408
|
* projections](https://en.wikipedia.org/wiki/3D_projection#Perspective_projection).
|
|
@@ -608,24 +584,24 @@ function invert(matrix) {
|
|
|
608
584
|
if (!det) {
|
|
609
585
|
return makeZero();
|
|
610
586
|
}
|
|
611
|
-
|
|
587
|
+
var oneOverDet = 1 / det;
|
|
612
588
|
return [
|
|
613
|
-
(a11 * b11 - a12 * b10 + a13 * b09) *
|
|
614
|
-
(a02 * b10 - a01 * b11 - a03 * b09) *
|
|
615
|
-
(a31 * b05 - a32 * b04 + a33 * b03) *
|
|
616
|
-
(a22 * b04 - a21 * b05 - a23 * b03) *
|
|
617
|
-
(a12 * b08 - a10 * b11 - a13 * b07) *
|
|
618
|
-
(a00 * b11 - a02 * b08 + a03 * b07) *
|
|
619
|
-
(a32 * b02 - a30 * b05 - a33 * b01) *
|
|
620
|
-
(a20 * b05 - a22 * b02 + a23 * b01) *
|
|
621
|
-
(a10 * b10 - a11 * b08 + a13 * b06) *
|
|
622
|
-
(a01 * b08 - a00 * b10 - a03 * b06) *
|
|
623
|
-
(a30 * b04 - a31 * b02 + a33 * b00) *
|
|
624
|
-
(a21 * b02 - a20 * b04 - a23 * b00) *
|
|
625
|
-
(a11 * b07 - a10 * b09 - a12 * b06) *
|
|
626
|
-
(a00 * b09 - a01 * b07 + a02 * b06) *
|
|
627
|
-
(a31 * b01 - a30 * b03 - a32 * b00) *
|
|
628
|
-
(a20 * b03 - a21 * b01 + a22 * b00) *
|
|
589
|
+
(a11 * b11 - a12 * b10 + a13 * b09) * oneOverDet,
|
|
590
|
+
(a02 * b10 - a01 * b11 - a03 * b09) * oneOverDet,
|
|
591
|
+
(a31 * b05 - a32 * b04 + a33 * b03) * oneOverDet,
|
|
592
|
+
(a22 * b04 - a21 * b05 - a23 * b03) * oneOverDet,
|
|
593
|
+
(a12 * b08 - a10 * b11 - a13 * b07) * oneOverDet,
|
|
594
|
+
(a00 * b11 - a02 * b08 + a03 * b07) * oneOverDet,
|
|
595
|
+
(a32 * b02 - a30 * b05 - a33 * b01) * oneOverDet,
|
|
596
|
+
(a20 * b05 - a22 * b02 + a23 * b01) * oneOverDet,
|
|
597
|
+
(a10 * b10 - a11 * b08 + a13 * b06) * oneOverDet,
|
|
598
|
+
(a01 * b08 - a00 * b10 - a03 * b06) * oneOverDet,
|
|
599
|
+
(a30 * b04 - a31 * b02 + a33 * b00) * oneOverDet,
|
|
600
|
+
(a21 * b02 - a20 * b04 - a23 * b00) * oneOverDet,
|
|
601
|
+
(a11 * b07 - a10 * b09 - a12 * b06) * oneOverDet,
|
|
602
|
+
(a00 * b09 - a01 * b07 + a02 * b06) * oneOverDet,
|
|
603
|
+
(a31 * b01 - a30 * b03 - a32 * b00) * oneOverDet,
|
|
604
|
+
(a20 * b03 - a21 * b01 + a22 * b00) * oneOverDet,
|
|
629
605
|
];
|
|
630
606
|
}
|
|
631
607
|
/**
|
|
@@ -660,49 +636,37 @@ function lookAt(m, position, target, up) {
|
|
|
660
636
|
var res = tslib.__spreadArray([], m, true);
|
|
661
637
|
/* eslint-disable prettier/prettier */
|
|
662
638
|
res[0] = x.x;
|
|
663
|
-
res[4] = y.x;
|
|
664
|
-
res[8] = z.x;
|
|
665
639
|
res[1] = x.y;
|
|
666
|
-
res[5] = y.y;
|
|
667
|
-
res[9] = z.y;
|
|
668
640
|
res[2] = x.z;
|
|
641
|
+
res[4] = y.x;
|
|
642
|
+
res[5] = y.y;
|
|
669
643
|
res[6] = y.z;
|
|
644
|
+
res[8] = z.x;
|
|
645
|
+
res[9] = z.y;
|
|
670
646
|
res[10] = z.z;
|
|
671
647
|
/* eslint-enable prettier/prettier */
|
|
672
648
|
return res;
|
|
673
649
|
}
|
|
674
650
|
/**
|
|
675
|
-
* Returns a post-multiplied matrix.
|
|
651
|
+
* Returns a post-multiplied matrix equal to ab.
|
|
676
652
|
*/
|
|
677
653
|
function multiply$2(a, b) {
|
|
678
|
-
var
|
|
679
|
-
|
|
680
|
-
var
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
mat[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;
|
|
695
|
-
mat[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;
|
|
696
|
-
mat[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;
|
|
697
|
-
mat[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;
|
|
698
|
-
mat[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;
|
|
699
|
-
mat[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;
|
|
700
|
-
mat[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;
|
|
701
|
-
mat[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;
|
|
702
|
-
mat[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;
|
|
703
|
-
mat[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;
|
|
704
|
-
mat[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;
|
|
705
|
-
return mat;
|
|
654
|
+
var result = makeIdentity();
|
|
655
|
+
// Consider each row i in the final matrix
|
|
656
|
+
for (var i = 0; i < 4; i++) {
|
|
657
|
+
// Consider each column j in the final matrix
|
|
658
|
+
for (var j = 0; j < 4; j++) {
|
|
659
|
+
// Calculate the value at row i and column j
|
|
660
|
+
var value = 0;
|
|
661
|
+
for (var k = 0; k < 4; k++) {
|
|
662
|
+
// Calculate (ik + kj) and add it to the value
|
|
663
|
+
value += a[i * 4 + k] * b[k * 4 + j];
|
|
664
|
+
}
|
|
665
|
+
var positionInResultingMatrix = 4 * i + j;
|
|
666
|
+
result[positionInResultingMatrix] = value;
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
return result;
|
|
706
670
|
}
|
|
707
671
|
/**
|
|
708
672
|
* Returns the [transpose](https://en.wikipedia.org/wiki/Transpose) of the given
|
|
@@ -719,32 +683,37 @@ function transpose(matrix) {
|
|
|
719
683
|
/* eslint-enable prettier/prettier */
|
|
720
684
|
}
|
|
721
685
|
/**
|
|
722
|
-
* Multiplies the columns of a matrix by the given vector.
|
|
686
|
+
* Multiplies the columns of a row-major matrix by the given vector.
|
|
723
687
|
*/
|
|
724
688
|
function scale$4(matrix, scale) {
|
|
725
689
|
var x = scale.x, y = scale.y, z = scale.z;
|
|
726
690
|
var m = tslib.__spreadArray([], matrix, true);
|
|
727
691
|
/* eslint-disable prettier/prettier */
|
|
728
692
|
m[0] *= x;
|
|
729
|
-
m[4] *= y;
|
|
730
|
-
m[8] *= z;
|
|
731
693
|
m[1] *= x;
|
|
732
|
-
m[5] *= y;
|
|
733
|
-
m[9] *= z;
|
|
734
694
|
m[2] *= x;
|
|
735
|
-
m[6] *= y;
|
|
736
|
-
m[10] *= z;
|
|
737
695
|
m[3] *= x;
|
|
696
|
+
m[4] *= y;
|
|
697
|
+
m[5] *= y;
|
|
698
|
+
m[6] *= y;
|
|
738
699
|
m[7] *= y;
|
|
700
|
+
m[8] *= z;
|
|
701
|
+
m[9] *= z;
|
|
702
|
+
m[10] *= z;
|
|
739
703
|
m[11] *= z;
|
|
740
704
|
/* eslint-enable prettier/prettier */
|
|
741
705
|
return m;
|
|
742
706
|
}
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
707
|
+
/**
|
|
708
|
+
* Sets the position of the matrix given as the first parameter
|
|
709
|
+
* to the position of the matrix given as the second parameter.
|
|
710
|
+
* Both matrices should have row-major format.
|
|
711
|
+
*/
|
|
712
|
+
function position(originalMatrix, matrixWithDesiredPosition) {
|
|
713
|
+
var m = tslib.__spreadArray([], originalMatrix, true);
|
|
714
|
+
m[12] = matrixWithDesiredPosition[12];
|
|
715
|
+
m[13] = matrixWithDesiredPosition[13];
|
|
716
|
+
m[14] = matrixWithDesiredPosition[14];
|
|
748
717
|
return m;
|
|
749
718
|
}
|
|
750
719
|
/**
|
|
@@ -756,8 +725,18 @@ function isIdentity(matrix) {
|
|
|
756
725
|
}
|
|
757
726
|
/**
|
|
758
727
|
* Returns an object representation of a `Matrix4`.
|
|
728
|
+
* @param m A Matrix4 item written in column-major form.
|
|
729
|
+
*
|
|
730
|
+
* @deprecated Use {@link toObjectColumnMajor} or {@link toObjectRowMajor} instead.
|
|
759
731
|
*/
|
|
760
732
|
function toObject(m) {
|
|
733
|
+
return toObjectColumnMajor(m);
|
|
734
|
+
}
|
|
735
|
+
/**
|
|
736
|
+
* Returns an object representation of a `Matrix4`.
|
|
737
|
+
* @param m A Matrix4 item written in column-major form.
|
|
738
|
+
*/
|
|
739
|
+
function toObjectColumnMajor(m) {
|
|
761
740
|
/* eslint-disable prettier/prettier */
|
|
762
741
|
return {
|
|
763
742
|
m11: m[0], m12: m[4], m13: m[8], m14: m[12],
|
|
@@ -767,6 +746,20 @@ function toObject(m) {
|
|
|
767
746
|
};
|
|
768
747
|
/* eslint-enable prettier/prettier */
|
|
769
748
|
}
|
|
749
|
+
/**
|
|
750
|
+
* Returns an object representation of a `Matrix4`.
|
|
751
|
+
* @param m A Matrix4 item written in row-major form.
|
|
752
|
+
*/
|
|
753
|
+
function toObjectRowMajor(m) {
|
|
754
|
+
/* eslint-disable prettier/prettier */
|
|
755
|
+
return {
|
|
756
|
+
m11: m[0], m12: m[1], m13: m[2], m14: m[3],
|
|
757
|
+
m21: m[4], m22: m[5], m23: m[6], m24: m[7],
|
|
758
|
+
m31: m[8], m32: m[9], m33: m[10], m34: m[11],
|
|
759
|
+
m41: m[12], m42: m[13], m43: m[14], m44: m[15],
|
|
760
|
+
};
|
|
761
|
+
/* eslint-enable prettier/prettier */
|
|
762
|
+
}
|
|
770
763
|
/**
|
|
771
764
|
* A type guard to check if `obj` is of type `Matrix4`.
|
|
772
765
|
*/
|
|
@@ -790,7 +783,6 @@ var matrix4 = /*#__PURE__*/Object.freeze({
|
|
|
790
783
|
makeOrthographic: makeOrthographic,
|
|
791
784
|
makePerspective: makePerspective,
|
|
792
785
|
makeRotation: makeRotation,
|
|
793
|
-
makeRotationAxis: makeRotationAxis,
|
|
794
786
|
makeScale: makeScale,
|
|
795
787
|
makeTRS: makeTRS,
|
|
796
788
|
makeTranslation: makeTranslation,
|
|
@@ -799,6 +791,8 @@ var matrix4 = /*#__PURE__*/Object.freeze({
|
|
|
799
791
|
position: position,
|
|
800
792
|
scale: scale$4,
|
|
801
793
|
toObject: toObject,
|
|
794
|
+
toObjectColumnMajor: toObjectColumnMajor,
|
|
795
|
+
toObjectRowMajor: toObjectRowMajor,
|
|
802
796
|
transpose: transpose
|
|
803
797
|
});
|
|
804
798
|
|
|
@@ -849,9 +843,12 @@ function fromDegrees(value) {
|
|
|
849
843
|
* @param matrix A pure rotation matrix, unscaled.
|
|
850
844
|
* @param order The order that the rotations are applied.
|
|
851
845
|
*/
|
|
852
|
-
function fromRotationMatrix(matrix, order) {
|
|
846
|
+
function fromRotationMatrix(matrix, order, matrixIsColumnMajor) {
|
|
853
847
|
if (order === void 0) { order = 'xyz'; }
|
|
854
|
-
|
|
848
|
+
if (matrixIsColumnMajor === void 0) { matrixIsColumnMajor = true; }
|
|
849
|
+
var m = matrixIsColumnMajor
|
|
850
|
+
? toObjectColumnMajor(matrix)
|
|
851
|
+
: toObjectRowMajor(matrix);
|
|
855
852
|
var x = 0, y = 0, z = 0;
|
|
856
853
|
if (order === 'xyz') {
|
|
857
854
|
y = Math.asin(clamp(m.m13, -1, 1));
|
|
@@ -1030,55 +1027,47 @@ function fromAxisAngle(axis, radians) {
|
|
|
1030
1027
|
* (unscaled).
|
|
1031
1028
|
*/
|
|
1032
1029
|
function fromMatrixRotation(matrix) {
|
|
1033
|
-
|
|
1030
|
+
// Determine the scalars for each vector
|
|
1034
1031
|
var scale = fromMatrixScale(matrix);
|
|
1035
|
-
var
|
|
1036
|
-
|
|
1037
|
-
var
|
|
1038
|
-
var
|
|
1039
|
-
var
|
|
1040
|
-
var sm13 = m.m31 * is3;
|
|
1041
|
-
var sm21 = m.m12 * is1;
|
|
1042
|
-
var sm22 = m.m22 * is2;
|
|
1043
|
-
var sm23 = m.m32 * is3;
|
|
1044
|
-
var sm31 = m.m13 * is1;
|
|
1045
|
-
var sm32 = m.m23 * is2;
|
|
1046
|
-
var sm33 = m.m33 * is3;
|
|
1047
|
-
var trace = sm11 + sm22 + sm33;
|
|
1032
|
+
var oneOverScaleVector = create$a(1 / scale.x, 1 / scale.y, 1 / scale.z);
|
|
1033
|
+
// Scale the matrix
|
|
1034
|
+
var scaledMatrix = scale$4(matrix, oneOverScaleVector);
|
|
1035
|
+
var sM = toObjectRowMajor(scaledMatrix);
|
|
1036
|
+
var trace = sM.m11 + sM.m22 + sM.m33;
|
|
1048
1037
|
if (trace > 0) {
|
|
1049
|
-
var s = Math.sqrt(trace + 1
|
|
1038
|
+
var s = Math.sqrt(trace + 1) * 2;
|
|
1050
1039
|
return {
|
|
1051
|
-
x: (
|
|
1052
|
-
y: (
|
|
1053
|
-
z: (
|
|
1040
|
+
x: (sM.m23 - sM.m32) / s,
|
|
1041
|
+
y: (sM.m31 - sM.m13) / s,
|
|
1042
|
+
z: (sM.m12 - sM.m21) / s,
|
|
1054
1043
|
w: 0.25 * s,
|
|
1055
1044
|
};
|
|
1056
1045
|
}
|
|
1057
|
-
else if (
|
|
1058
|
-
var s = Math.sqrt(1
|
|
1046
|
+
else if (sM.m11 > sM.m22 && sM.m11 > sM.m33) {
|
|
1047
|
+
var s = Math.sqrt(1 + sM.m11 - sM.m22 - sM.m33) * 2;
|
|
1059
1048
|
return {
|
|
1060
1049
|
x: 0.25 * s,
|
|
1061
|
-
y: (
|
|
1062
|
-
z: (
|
|
1063
|
-
w: (
|
|
1050
|
+
y: (sM.m12 + sM.m21) / s,
|
|
1051
|
+
z: (sM.m31 + sM.m13) / s,
|
|
1052
|
+
w: (sM.m23 - sM.m32) / s,
|
|
1064
1053
|
};
|
|
1065
1054
|
}
|
|
1066
|
-
else if (
|
|
1067
|
-
var s = Math.sqrt(1
|
|
1055
|
+
else if (sM.m22 > sM.m33) {
|
|
1056
|
+
var s = Math.sqrt(1 + sM.m22 - sM.m11 - sM.m33) * 2;
|
|
1068
1057
|
return {
|
|
1069
|
-
x: (
|
|
1058
|
+
x: (sM.m12 + sM.m21) / s,
|
|
1070
1059
|
y: 0.25 * s,
|
|
1071
|
-
z: (
|
|
1072
|
-
w: (
|
|
1060
|
+
z: (sM.m23 + sM.m32) / s,
|
|
1061
|
+
w: (sM.m31 - sM.m13) / s,
|
|
1073
1062
|
};
|
|
1074
1063
|
}
|
|
1075
1064
|
else {
|
|
1076
|
-
var s = Math.sqrt(1
|
|
1065
|
+
var s = Math.sqrt(1 + sM.m33 - sM.m11 - sM.m22) * 2;
|
|
1077
1066
|
return {
|
|
1078
|
-
x: (
|
|
1079
|
-
y: (
|
|
1067
|
+
x: (sM.m31 + sM.m13) / s,
|
|
1068
|
+
y: (sM.m23 + sM.m32) / s,
|
|
1080
1069
|
z: 0.25 * s,
|
|
1081
|
-
w: (
|
|
1070
|
+
w: (sM.m12 - sM.m21) / s,
|
|
1082
1071
|
};
|
|
1083
1072
|
}
|
|
1084
1073
|
}
|
|
@@ -1218,19 +1207,19 @@ function isZeroVector(_a) {
|
|
|
1218
1207
|
* Returns a vector representing the scale elements of `matrix`.
|
|
1219
1208
|
*/
|
|
1220
1209
|
function fromMatrixScale(matrix) {
|
|
1221
|
-
var m =
|
|
1210
|
+
var m = toObjectRowMajor(matrix);
|
|
1222
1211
|
return {
|
|
1223
|
-
x: Math.hypot(m.m11, m.
|
|
1224
|
-
y: Math.hypot(m.
|
|
1225
|
-
z: Math.hypot(m.
|
|
1212
|
+
x: Math.hypot(m.m11, m.m12, m.m13),
|
|
1213
|
+
y: Math.hypot(m.m21, m.m22, m.m23),
|
|
1214
|
+
z: Math.hypot(m.m31, m.m32, m.m33),
|
|
1226
1215
|
};
|
|
1227
1216
|
}
|
|
1228
1217
|
/**
|
|
1229
1218
|
* Returns a vector representing the position elements of `matrix`.
|
|
1230
1219
|
*/
|
|
1231
1220
|
function fromMatrixPosition(matrix) {
|
|
1232
|
-
var m =
|
|
1233
|
-
return { x: m.
|
|
1221
|
+
var m = toObjectRowMajor(matrix);
|
|
1222
|
+
return { x: m.m41, y: m.m42, z: m.m43 };
|
|
1234
1223
|
}
|
|
1235
1224
|
/**
|
|
1236
1225
|
* Parses a JSON string representation of a Vector3 and returns an object.
|
|
@@ -1428,7 +1417,7 @@ function eulerTo(a, b) {
|
|
|
1428
1417
|
return dotAB > 1 - 1e-6 ? create$c() : create$c({ x: Math.PI });
|
|
1429
1418
|
}
|
|
1430
1419
|
var normalizedQ = normalize$1(create$b(tslib.__assign({ w: 1 + dotAB }, cross(normalizedA, normalizedB))));
|
|
1431
|
-
return fromRotationMatrix(makeRotation(normalizedQ));
|
|
1420
|
+
return fromRotationMatrix(makeRotation(normalizedQ), 'xyz', false);
|
|
1432
1421
|
}
|
|
1433
1422
|
/**
|
|
1434
1423
|
* Performs a projection of a `vector` onto `onNormal`.
|
|
@@ -1480,9 +1469,21 @@ function rotateAboutAxis(angle, point, axisDirection, axisPosition) {
|
|
|
1480
1469
|
}
|
|
1481
1470
|
}
|
|
1482
1471
|
/**
|
|
1483
|
-
* Returns a vector that is multiplied with a matrix.
|
|
1472
|
+
* Returns a vector that is multiplied with a matrix in column-major form.
|
|
1473
|
+
* @param vector A Vector3 item.
|
|
1474
|
+
* @param m A Matrix4 item written in column-major form.
|
|
1475
|
+
*
|
|
1476
|
+
* @deprecated Use {@link multiplyByTransformMatrixColumnMajor} or {@link multiplyByTransformMatrixRowMajor} instead.
|
|
1484
1477
|
*/
|
|
1485
1478
|
function transformMatrix$1(vector, m) {
|
|
1479
|
+
return multiplyByTransformMatrixColumnMajor(vector, m);
|
|
1480
|
+
}
|
|
1481
|
+
/**
|
|
1482
|
+
* Returns a vector that is multiplied with a matrix in column-major form.
|
|
1483
|
+
* @param vector A Vector3 item.
|
|
1484
|
+
* @param m A Matrix4 item written in column-major form.
|
|
1485
|
+
*/
|
|
1486
|
+
function multiplyByTransformMatrixColumnMajor(vector, m) {
|
|
1486
1487
|
var x = vector.x, y = vector.y, z = vector.z;
|
|
1487
1488
|
var w = 1 / (m[3] * x + m[7] * y + m[11] * z + m[15]);
|
|
1488
1489
|
return {
|
|
@@ -1491,6 +1492,20 @@ function transformMatrix$1(vector, m) {
|
|
|
1491
1492
|
z: (m[2] * x + m[6] * y + m[10] * z + m[14]) * w,
|
|
1492
1493
|
};
|
|
1493
1494
|
}
|
|
1495
|
+
/**
|
|
1496
|
+
* Returns a vector that is multiplied with a matrix in row-major form.
|
|
1497
|
+
* @param vector A Vector3 item.
|
|
1498
|
+
* @param m A Matrix4 item written in row-major form.
|
|
1499
|
+
*/
|
|
1500
|
+
function multiplyByTransformMatrixRowMajor(vector, m) {
|
|
1501
|
+
var x = vector.x, y = vector.y, z = vector.z;
|
|
1502
|
+
var w = 1 / (m[12] * x + m[13] * y + m[14] * z + m[15]);
|
|
1503
|
+
return {
|
|
1504
|
+
x: (m[0] * x + m[1] * y + m[2] * z + m[3]) * w,
|
|
1505
|
+
y: (m[4] * x + m[5] * y + m[6] * z + m[7]) * w,
|
|
1506
|
+
z: (m[8] * x + m[9] * y + m[10] * z + m[11]) * w,
|
|
1507
|
+
};
|
|
1508
|
+
}
|
|
1494
1509
|
/**
|
|
1495
1510
|
* Euclidean distance between two vectors
|
|
1496
1511
|
*/
|
|
@@ -1554,7 +1569,7 @@ function lerp(a, b, t) {
|
|
|
1554
1569
|
* @returns A point in world space coordinates.
|
|
1555
1570
|
*/
|
|
1556
1571
|
function transformNdcToWorldSpace(ndc, worldMatrix, projectionMatrixInverse) {
|
|
1557
|
-
return
|
|
1572
|
+
return multiplyByTransformMatrixColumnMajor(multiplyByTransformMatrixColumnMajor(ndc, projectionMatrixInverse), worldMatrix);
|
|
1558
1573
|
}
|
|
1559
1574
|
|
|
1560
1575
|
var vector3 = /*#__PURE__*/Object.freeze({
|
|
@@ -1584,6 +1599,8 @@ var vector3 = /*#__PURE__*/Object.freeze({
|
|
|
1584
1599
|
max: max,
|
|
1585
1600
|
min: min,
|
|
1586
1601
|
multiply: multiply,
|
|
1602
|
+
multiplyByTransformMatrixColumnMajor: multiplyByTransformMatrixColumnMajor,
|
|
1603
|
+
multiplyByTransformMatrixRowMajor: multiplyByTransformMatrixRowMajor,
|
|
1587
1604
|
negate: negate,
|
|
1588
1605
|
normalize: normalize,
|
|
1589
1606
|
origin: origin,
|
|
@@ -2091,8 +2108,8 @@ function center(line) {
|
|
|
2091
2108
|
* @returns A transformed line.
|
|
2092
2109
|
*/
|
|
2093
2110
|
function transformMatrix(line, matrix) {
|
|
2094
|
-
var start =
|
|
2095
|
-
var end =
|
|
2111
|
+
var start = multiplyByTransformMatrixColumnMajor(line.start, matrix);
|
|
2112
|
+
var end = multiplyByTransformMatrixColumnMajor(line.end, matrix);
|
|
2096
2113
|
return { start: start, end: end };
|
|
2097
2114
|
}
|
|
2098
2115
|
/**
|