@woosh/meep-engine 2.121.8 → 2.121.11
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/package.json +1 -1
- package/src/core/binary/to_half_float_uint16.d.ts +1 -2
- package/src/core/binary/to_half_float_uint16.d.ts.map +1 -1
- package/src/core/binary/to_half_float_uint16.js +1 -2
- package/src/core/geom/ConicRay.d.ts +8 -0
- package/src/core/geom/ConicRay.d.ts.map +1 -1
- package/src/core/geom/ConicRay.js +11 -0
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +102 -49
- package/src/core/geom/Vector1.d.ts.map +1 -1
- package/src/core/geom/Vector1.js +11 -8
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector2.js +89 -59
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector3.js +108 -68
- package/src/core/geom/Vector4.d.ts +230 -40
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +36 -1
- package/src/core/geom/packing/max-rect/cutArea.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/cutArea.js +7 -8
- package/src/core/geom/packing/miniball/Miniball.d.ts +188 -11
- package/src/core/geom/packing/miniball/PointSet.d.ts +46 -3
- package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_slerp.js +2 -0
- package/src/core/math/EPSILON.d.ts.map +1 -1
- package/src/core/math/EPSILON.js +1 -1
- package/src/engine/ecs/EntityManager.d.ts +181 -35
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +11 -9
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +6 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere.d.ts +1 -1
- package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_to_f16.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.js +1 -1
- package/editor/tools/GridPaintTool.d.ts +0 -17
- package/editor/tools/GridPaintTool.d.ts.map +0 -1
- package/editor/tools/SelectionTool.d.ts +0 -27
- package/editor/tools/SelectionTool.d.ts.map +0 -1
- package/editor/tools/TopDownCameraControlTool.d.ts +0 -13
- package/editor/tools/TopDownCameraControlTool.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to_half_float_uint16.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/to_half_float_uint16.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"to_half_float_uint16.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/to_half_float_uint16.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,0CAHW,MAAM,GACJ,MAAM,CA2DlB"}
|
|
@@ -2,8 +2,7 @@ const _floatView = new Float32Array(1);
|
|
|
2
2
|
const _int32View = new Int32Array(_floatView.buffer);
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* Converts float32 to float16 (stored as uint16 value).
|
|
5
|
+
* Converts float32 to float16 (encoded as uint16 value).
|
|
7
6
|
* @param {number} val
|
|
8
7
|
* @returns {number}
|
|
9
8
|
*/
|
|
@@ -76,6 +76,14 @@ export class ConicRay {
|
|
|
76
76
|
* @param {Vector3} result
|
|
77
77
|
*/
|
|
78
78
|
sampleRandomDirection(random: Function, result: Vector3): void;
|
|
79
|
+
/**
|
|
80
|
+
* @readonly
|
|
81
|
+
* @type {boolean}
|
|
82
|
+
*/
|
|
83
|
+
readonly isConicRay: boolean;
|
|
84
|
+
}
|
|
85
|
+
export namespace ConicRay {
|
|
86
|
+
let typeName: string;
|
|
79
87
|
}
|
|
80
88
|
import Vector3 from "./Vector3.js";
|
|
81
89
|
//# sourceMappingURL=ConicRay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH;IAkLI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IAxMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAKtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAQtB;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;
|
|
1
|
+
{"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH;IAkLI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IAxMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAKtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAQtB;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;IA6BL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAN5B;;kBAUS,MAAM;;oBA7NI,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,6 @@ import { EPSILON } from "../math/EPSILON.js";
|
|
|
6
6
|
import { epsilonEquals } from "../math/epsilonEquals.js";
|
|
7
7
|
import { lerp } from "../math/lerp.js";
|
|
8
8
|
import { computeHashFloat } from "../primitives/numbers/computeHashFloat.js";
|
|
9
|
-
import { quat_decode_from_uint32 } from "./3d/quaternion/quat_decode_from_uint32.js";
|
|
10
|
-
import { quat_encode_to_uint32 } from "./3d/quaternion/quat_encode_to_uint32.js";
|
|
11
9
|
import { v3_dot } from "./vec3/v3_dot.js";
|
|
12
10
|
import { v4_length } from "./vec4/v4_length.js";
|
|
13
11
|
import Vector3 from "./Vector3.js";
|
|
@@ -22,8 +20,10 @@ const cos = Math.cos;
|
|
|
22
20
|
/**
|
|
23
21
|
* Rotation representation in 3d space
|
|
24
22
|
* @see https://en.wikipedia.org/wiki/Quaternion
|
|
23
|
+
* @copyright "Company Named Limited" (c) 2025
|
|
24
|
+
* @author Alexander Goldring
|
|
25
25
|
*/
|
|
26
|
-
class Quaternion {
|
|
26
|
+
export class Quaternion {
|
|
27
27
|
/**
|
|
28
28
|
*
|
|
29
29
|
* @param {number} [x=0]
|
|
@@ -33,6 +33,10 @@ class Quaternion {
|
|
|
33
33
|
* @constructor
|
|
34
34
|
*/
|
|
35
35
|
constructor(x = 0, y = 0, z = 0, w = 1) {
|
|
36
|
+
assert.isNumber(x, 'x');
|
|
37
|
+
assert.isNumber(y, 'y');
|
|
38
|
+
assert.isNumber(z, 'z');
|
|
39
|
+
assert.isNumber(w, 'w');
|
|
36
40
|
|
|
37
41
|
/**
|
|
38
42
|
*
|
|
@@ -56,6 +60,9 @@ class Quaternion {
|
|
|
56
60
|
this.w = w;
|
|
57
61
|
|
|
58
62
|
/**
|
|
63
|
+
* Fired when value of the quaternion changes
|
|
64
|
+
* Signature of the signal data is as follows:
|
|
65
|
+
* (new_x, new_y, new_z, new_w, old_x, old_y, old_z, old_w)
|
|
59
66
|
* @readonly
|
|
60
67
|
* @type {Signal<number, number, number, number, number, number, number, number>}
|
|
61
68
|
*/
|
|
@@ -110,7 +117,8 @@ class Quaternion {
|
|
|
110
117
|
|
|
111
118
|
|
|
112
119
|
/**
|
|
113
|
-
*
|
|
120
|
+
* Orient quaternion on a `forward` vector, with the spin matching `up` vector
|
|
121
|
+
* Useful for `lookAt` operations, such as for camera or inverse kinematics
|
|
114
122
|
* @param {number} fx forward vector
|
|
115
123
|
* @param {number} fy forward vector
|
|
116
124
|
* @param {number} fz forward vector
|
|
@@ -118,7 +126,11 @@ class Quaternion {
|
|
|
118
126
|
* @param {number} uy up vector
|
|
119
127
|
* @param {number} uz up vector
|
|
120
128
|
*/
|
|
121
|
-
_lookRotation(
|
|
129
|
+
_lookRotation(
|
|
130
|
+
fx, fy, fz,
|
|
131
|
+
ux, uy, uz
|
|
132
|
+
) {
|
|
133
|
+
|
|
122
134
|
scratch_v3_a.set(fx, fy, fz);
|
|
123
135
|
scratch_v3_a.normalize();
|
|
124
136
|
|
|
@@ -169,17 +181,20 @@ class Quaternion {
|
|
|
169
181
|
|
|
170
182
|
/**
|
|
171
183
|
*
|
|
172
|
-
* @param {Vector3}
|
|
173
|
-
* @param {Vector3} [
|
|
174
|
-
*
|
|
184
|
+
* @param {Vector3} forward
|
|
185
|
+
* @param {Vector3} [up=Vector3.up]
|
|
175
186
|
*/
|
|
176
|
-
lookRotation(
|
|
187
|
+
lookRotation(forward, up = Vector3.up) {
|
|
188
|
+
|
|
189
|
+
this._lookRotation(
|
|
190
|
+
forward.x, forward.y, forward.z,
|
|
191
|
+
up.x, up.y, up.z
|
|
192
|
+
);
|
|
177
193
|
|
|
178
|
-
this._lookRotation(vForward.x, vForward.y, vForward.z, vUp.x, vUp.y, vUp.z);
|
|
179
194
|
}
|
|
180
195
|
|
|
181
196
|
/**
|
|
182
|
-
*
|
|
197
|
+
* Vector dot product in 4 dimensions
|
|
183
198
|
* @param {Quaternion} other
|
|
184
199
|
* @return {number}
|
|
185
200
|
*/
|
|
@@ -272,7 +287,7 @@ class Quaternion {
|
|
|
272
287
|
* @param {number} angle
|
|
273
288
|
*/
|
|
274
289
|
fromAxisAngle(axis, angle) {
|
|
275
|
-
assert.defined(axis,'axis');
|
|
290
|
+
assert.defined(axis, 'axis');
|
|
276
291
|
|
|
277
292
|
this._fromAxisAngle(axis.x, axis.y, axis.z, angle);
|
|
278
293
|
}
|
|
@@ -520,15 +535,13 @@ class Quaternion {
|
|
|
520
535
|
}
|
|
521
536
|
|
|
522
537
|
/**
|
|
523
|
-
*
|
|
538
|
+
* @deprecated use {@link random} instead
|
|
524
539
|
* @param {function():number} random
|
|
525
540
|
*/
|
|
526
541
|
setRandom(random) {
|
|
527
|
-
assert.isFunction(random,'random');
|
|
542
|
+
assert.isFunction(random, 'random');
|
|
528
543
|
|
|
529
|
-
this.
|
|
530
|
-
|
|
531
|
-
return this.normalize();
|
|
544
|
+
return this.random(random);
|
|
532
545
|
}
|
|
533
546
|
|
|
534
547
|
/**
|
|
@@ -539,7 +552,12 @@ class Quaternion {
|
|
|
539
552
|
* @param {String} [order] a combination of capital letters X,Y,Z. Examples: XYZ, YXZ
|
|
540
553
|
* @returns {Quaternion}
|
|
541
554
|
*/
|
|
542
|
-
__setFromEuler(
|
|
555
|
+
__setFromEuler(
|
|
556
|
+
x,
|
|
557
|
+
y,
|
|
558
|
+
z,
|
|
559
|
+
order = 'XYZ'
|
|
560
|
+
) {
|
|
543
561
|
|
|
544
562
|
// http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
|
|
545
563
|
|
|
@@ -701,7 +719,7 @@ class Quaternion {
|
|
|
701
719
|
}
|
|
702
720
|
|
|
703
721
|
/**
|
|
704
|
-
*
|
|
722
|
+
* YXZ order
|
|
705
723
|
* @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
|
|
706
724
|
* @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
|
|
707
725
|
* @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
|
|
@@ -732,7 +750,7 @@ class Quaternion {
|
|
|
732
750
|
}
|
|
733
751
|
|
|
734
752
|
/**
|
|
735
|
-
*
|
|
753
|
+
* ZXY order
|
|
736
754
|
* @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
|
|
737
755
|
* @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
|
|
738
756
|
* @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
|
|
@@ -763,7 +781,7 @@ class Quaternion {
|
|
|
763
781
|
}
|
|
764
782
|
|
|
765
783
|
/**
|
|
766
|
-
*
|
|
784
|
+
* ZYX order
|
|
767
785
|
* @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
|
|
768
786
|
* @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
|
|
769
787
|
* @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
|
|
@@ -794,7 +812,7 @@ class Quaternion {
|
|
|
794
812
|
}
|
|
795
813
|
|
|
796
814
|
/**
|
|
797
|
-
*
|
|
815
|
+
* YZX order
|
|
798
816
|
* @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
|
|
799
817
|
* @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
|
|
800
818
|
* @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
|
|
@@ -825,7 +843,7 @@ class Quaternion {
|
|
|
825
843
|
}
|
|
826
844
|
|
|
827
845
|
/**
|
|
828
|
-
*
|
|
846
|
+
* XZY order
|
|
829
847
|
* @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
|
|
830
848
|
* @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
|
|
831
849
|
* @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
|
|
@@ -857,12 +875,14 @@ class Quaternion {
|
|
|
857
875
|
|
|
858
876
|
/**
|
|
859
877
|
* NOTE: Vectors need to be normalized
|
|
860
|
-
*
|
|
878
|
+
*
|
|
861
879
|
* @param {Vector3} from
|
|
862
880
|
* @param {Vector3} to
|
|
863
881
|
* @returns {this}
|
|
864
882
|
*/
|
|
865
883
|
fromUnitVectors(from, to) {
|
|
884
|
+
// Based on blog post: http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors
|
|
885
|
+
|
|
866
886
|
assert.ok(from.isNormalized(), `from vector is not normalized, length = ${from.length()}`);
|
|
867
887
|
assert.ok(to.isNormalized(), `to vector is not normalized, length = ${to.length()}`);
|
|
868
888
|
|
|
@@ -894,14 +914,13 @@ class Quaternion {
|
|
|
894
914
|
|
|
895
915
|
scratch_v3_a.normalize();
|
|
896
916
|
|
|
897
|
-
this.set(
|
|
917
|
+
return this.set(
|
|
898
918
|
scratch_v3_a.x,
|
|
899
919
|
scratch_v3_a.y,
|
|
900
920
|
scratch_v3_a.z,
|
|
901
921
|
0
|
|
902
922
|
);
|
|
903
923
|
|
|
904
|
-
return;
|
|
905
924
|
}
|
|
906
925
|
|
|
907
926
|
const m = Math.sqrt(2 + 2 * uv_dot);
|
|
@@ -1067,7 +1086,7 @@ class Quaternion {
|
|
|
1067
1086
|
const w = lerp(first.w, second.w, t);
|
|
1068
1087
|
|
|
1069
1088
|
|
|
1070
|
-
|
|
1089
|
+
return this.set(x, y, z, w);
|
|
1071
1090
|
}
|
|
1072
1091
|
|
|
1073
1092
|
/**
|
|
@@ -1079,6 +1098,7 @@ class Quaternion {
|
|
|
1079
1098
|
*/
|
|
1080
1099
|
slerpQuaternions(from, to, t) {
|
|
1081
1100
|
assert.isNumber(t, 't');
|
|
1101
|
+
assert.notNaN(t, 't');
|
|
1082
1102
|
|
|
1083
1103
|
// see https://github.com/glampert/vectormath/blob/7105ef341303fe83b3dacd6883d9333989126069/scalar/quaternion.hpp#L90
|
|
1084
1104
|
|
|
@@ -1092,10 +1112,9 @@ class Quaternion {
|
|
|
1092
1112
|
bz = to.z,
|
|
1093
1113
|
bw = to.w;
|
|
1094
1114
|
|
|
1095
|
-
let cos_angle, scale0, scale1;
|
|
1096
1115
|
|
|
1097
|
-
// calc cosine
|
|
1098
|
-
cos_angle = ax * bx + ay * by + az * bz + aw * bw;
|
|
1116
|
+
// calc cosine ( dot product )
|
|
1117
|
+
let cos_angle = ax * bx + ay * by + az * bz + aw * bw;
|
|
1099
1118
|
|
|
1100
1119
|
// adjust signs (if necessary)
|
|
1101
1120
|
if (cos_angle < 0.0) {
|
|
@@ -1106,6 +1125,8 @@ class Quaternion {
|
|
|
1106
1125
|
bw = -bw;
|
|
1107
1126
|
}
|
|
1108
1127
|
|
|
1128
|
+
let scale0, scale1;
|
|
1129
|
+
|
|
1109
1130
|
// calculate coefficients
|
|
1110
1131
|
if ((1.0 - cos_angle) > EPSILON) {
|
|
1111
1132
|
// standard case (slerp)
|
|
@@ -1137,19 +1158,26 @@ class Quaternion {
|
|
|
1137
1158
|
* @see https://github.com/toji/gl-matrix/blob/master/src/gl-matrix/quat.js
|
|
1138
1159
|
* @param {Quaternion} other
|
|
1139
1160
|
* @param {number} t
|
|
1161
|
+
* @returns {this}
|
|
1140
1162
|
*/
|
|
1141
1163
|
slerp(other, t) {
|
|
1142
|
-
this.slerpQuaternions(this, other, t);
|
|
1164
|
+
return this.slerpQuaternions(this, other, t);
|
|
1143
1165
|
}
|
|
1144
1166
|
|
|
1145
1167
|
/**
|
|
1146
1168
|
*
|
|
1147
1169
|
* @param {function(x:number,y:number,z:number,w:number)} handler
|
|
1170
|
+
* @param {*} [thisArg]
|
|
1171
|
+
* @returns {this}
|
|
1148
1172
|
*/
|
|
1149
|
-
process(handler) {
|
|
1150
|
-
handler
|
|
1173
|
+
process(handler, thisArg) {
|
|
1174
|
+
assert.isFunction(handler, 'handler');
|
|
1151
1175
|
|
|
1152
|
-
this.
|
|
1176
|
+
handler.call(thisArg, this.x, this.y, this.z, this.w);
|
|
1177
|
+
|
|
1178
|
+
this.onChanged.add(handler, thisArg);
|
|
1179
|
+
|
|
1180
|
+
return this;
|
|
1153
1181
|
}
|
|
1154
1182
|
|
|
1155
1183
|
/**
|
|
@@ -1174,7 +1202,8 @@ class Quaternion {
|
|
|
1174
1202
|
}
|
|
1175
1203
|
|
|
1176
1204
|
/**
|
|
1177
|
-
*
|
|
1205
|
+
* Set current value of the quaternion
|
|
1206
|
+
* You *MUST* use this method in order for {@link Quaternion#onChanged} signal to be fired
|
|
1178
1207
|
* @param {number} x
|
|
1179
1208
|
* @param {number} y
|
|
1180
1209
|
* @param {number} z
|
|
@@ -1287,7 +1316,7 @@ class Quaternion {
|
|
|
1287
1316
|
* @param {number} value
|
|
1288
1317
|
*/
|
|
1289
1318
|
decodeFromUint32(value) {
|
|
1290
|
-
|
|
1319
|
+
throw new Error('deprecated, use `quat_decode_from_uint32` instead');
|
|
1291
1320
|
}
|
|
1292
1321
|
|
|
1293
1322
|
/**
|
|
@@ -1296,7 +1325,7 @@ class Quaternion {
|
|
|
1296
1325
|
* @returns {number}
|
|
1297
1326
|
*/
|
|
1298
1327
|
encodeToUint32() {
|
|
1299
|
-
|
|
1328
|
+
throw new Error('deprecated, use `quat_encode_to_uint32` instead');
|
|
1300
1329
|
}
|
|
1301
1330
|
|
|
1302
1331
|
/**
|
|
@@ -1343,7 +1372,7 @@ class Quaternion {
|
|
|
1343
1372
|
|
|
1344
1373
|
/**
|
|
1345
1374
|
*
|
|
1346
|
-
* @returns {number}
|
|
1375
|
+
* @returns {number} integer hash
|
|
1347
1376
|
*/
|
|
1348
1377
|
hash() {
|
|
1349
1378
|
// fast and dumb hash, just spread bits a bit and XOR them
|
|
@@ -1354,7 +1383,7 @@ class Quaternion {
|
|
|
1354
1383
|
}
|
|
1355
1384
|
|
|
1356
1385
|
/**
|
|
1357
|
-
*
|
|
1386
|
+
* Check for approximate equality between two quaternions
|
|
1358
1387
|
* @param {Quaternion} other
|
|
1359
1388
|
* @param {number} [tolerance]
|
|
1360
1389
|
* @return {boolean}
|
|
@@ -1371,7 +1400,6 @@ class Quaternion {
|
|
|
1371
1400
|
* @param {number} w
|
|
1372
1401
|
* @param {number} [tolerance]
|
|
1373
1402
|
* @return {boolean}
|
|
1374
|
-
* @private
|
|
1375
1403
|
*/
|
|
1376
1404
|
_roughlyEquals(x, y, z, w, tolerance = EPSILON) {
|
|
1377
1405
|
return epsilonEquals(this.x, x, tolerance)
|
|
@@ -1381,19 +1409,26 @@ class Quaternion {
|
|
|
1381
1409
|
}
|
|
1382
1410
|
|
|
1383
1411
|
/**
|
|
1384
|
-
*
|
|
1385
|
-
* @param {function():number} [random]
|
|
1412
|
+
* Randomly orient current quaternion
|
|
1413
|
+
* @param {function():number} [random] Defaults to {@link Math.random}
|
|
1386
1414
|
* @return {Quaternion}
|
|
1387
1415
|
*/
|
|
1388
1416
|
random(random = Math.random) {
|
|
1417
|
+
assert.isFunction(random, 'random');
|
|
1418
|
+
|
|
1419
|
+
// Based on http://planning.cs.uiuc.edu/node198.html
|
|
1389
1420
|
const u1 = random();
|
|
1390
1421
|
|
|
1422
|
+
assert.isNumber(u1, 'u1'); // validating random roll
|
|
1423
|
+
|
|
1391
1424
|
const sqrt1u1 = Math.sqrt(1 - u1);
|
|
1392
1425
|
const sqrtu1 = Math.sqrt(u1);
|
|
1393
1426
|
|
|
1394
|
-
const
|
|
1427
|
+
const PI2 = 2 * Math.PI;
|
|
1395
1428
|
|
|
1396
|
-
const
|
|
1429
|
+
const u2 = PI2 * random();
|
|
1430
|
+
|
|
1431
|
+
const u3 = PI2 * random();
|
|
1397
1432
|
|
|
1398
1433
|
return this.set(
|
|
1399
1434
|
sqrt1u1 * cos(u2),
|
|
@@ -1408,8 +1443,8 @@ class Quaternion {
|
|
|
1408
1443
|
}
|
|
1409
1444
|
|
|
1410
1445
|
/**
|
|
1411
|
-
*
|
|
1412
|
-
* @param {function} random random number generator function
|
|
1446
|
+
* Create a randomly oriented quaternion
|
|
1447
|
+
* @param {function} [random] random number generator function
|
|
1413
1448
|
* @returns {Quaternion}
|
|
1414
1449
|
*/
|
|
1415
1450
|
static random(random = Math.random) {
|
|
@@ -1421,7 +1456,8 @@ class Quaternion {
|
|
|
1421
1456
|
}
|
|
1422
1457
|
|
|
1423
1458
|
/**
|
|
1424
|
-
*
|
|
1459
|
+
* Convenience constructor
|
|
1460
|
+
* Used XYZ angle order (see {@link fromEulerAnglesXYZ})
|
|
1425
1461
|
* @param {number} x in radians
|
|
1426
1462
|
* @param {number} y in radians
|
|
1427
1463
|
* @param {number} z in radians
|
|
@@ -1442,14 +1478,19 @@ class Quaternion {
|
|
|
1442
1478
|
* @param {Quaternion} to
|
|
1443
1479
|
* @param {number} max_delta in radians
|
|
1444
1480
|
*/
|
|
1445
|
-
static rotateTowards(
|
|
1481
|
+
static rotateTowards(
|
|
1482
|
+
result,
|
|
1483
|
+
from,
|
|
1484
|
+
to,
|
|
1485
|
+
max_delta
|
|
1486
|
+
) {
|
|
1446
1487
|
assert.isNumber(max_delta, 'max_delta');
|
|
1447
1488
|
assert.notNaN(max_delta, 'max_delta');
|
|
1448
1489
|
|
|
1449
1490
|
const angle = from.angleTo(to);
|
|
1450
1491
|
|
|
1451
1492
|
if (angle === 0) {
|
|
1452
|
-
// we're already where we need
|
|
1493
|
+
// we're already where we need to be. Also - avoid division by 0
|
|
1453
1494
|
result.copy(to);
|
|
1454
1495
|
} else {
|
|
1455
1496
|
// clamp to 1, to make sure we don't overshoot
|
|
@@ -1472,5 +1513,17 @@ Quaternion.prototype.fromEulerAngles = Quaternion.prototype.fromEulerAnglesXYZ;
|
|
|
1472
1513
|
*/
|
|
1473
1514
|
Quaternion.identity = Object.freeze(new Quaternion(0, 0, 0, 1));
|
|
1474
1515
|
|
|
1516
|
+
/**
|
|
1517
|
+
* Shortcut for type checking
|
|
1518
|
+
* @readonly
|
|
1519
|
+
* @type {boolean}
|
|
1520
|
+
*/
|
|
1521
|
+
Quaternion.prototype.isQuaternion = true;
|
|
1522
|
+
|
|
1523
|
+
/**
|
|
1524
|
+
* @readonly
|
|
1525
|
+
* @type {string}
|
|
1526
|
+
*/
|
|
1527
|
+
Quaternion.typeName = 'Quaternion';
|
|
1475
1528
|
|
|
1476
1529
|
export default Quaternion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector1.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector1.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Vector1.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector1.js"],"names":[],"mappings":"AAKA;;;GAGG;AACH;IA4QI;;;;;OAKG;IACH,kBAJW,OAAO,KACP,OAAO,GACN,MAAM,CAIjB;IAnRD;;;;;;OAMG;IACH,gBALW,MAAM,EAchB;IAHG,UAAU;IAEV,0DAA6B;IAWjC;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,iBAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;OAIG;IACH,OAHW,MAAM,GACJ,OAAO,CAgBnB;IAED;;;OAGG;IACH,aAFW,MAAM,QAOhB;IAED;;;OAGG;IACH,UAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,kBAEC;IAED;;;OAGG;IACH,kBAEC;IAED;;;;OAIG;IACH,iBAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,WAFW,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,WAKzC;IAED;;;;OAIG;IACH,iBAFY,OAAO,CAIlB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,WAJW,MAAM,QACN,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,eAEC;IAED;;;OAGG;IACH,YAFW,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,QAIzC;IAED;;;OAGG;IACH,SAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,cAHW,OAAO,GACL,OAAO,CAInB;IAED;;OAEG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,4BAGC;IAED,iBAEC;IAED,yBAEC;IAED;;;;OAIG;IACH,qBAHW,MAAM,EAAE,WACR,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,EAAE,WACR,MAAM,QAIhB;IAED,oBAEC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAItB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAMtB;IAkBD,iBAEC;IAND,gBAEC;IAaL;;;OAGG;IACH,oBAFU,OAAO,CAEU;IAXvB,sDAIC;CACJ;;kBAUS,MAAM;cAON,OAAO;aAOP,OAAO;;;mBArUE,4BAA4B"}
|
package/src/core/geom/Vector1.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Alex Goldring
|
|
3
|
-
* @copyright Alex Goldring 2018
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
1
|
import { assert } from "../assert.js";
|
|
7
2
|
import Signal from "../events/signal/Signal.js";
|
|
8
3
|
import { clamp } from "../math/clamp.js";
|
|
9
4
|
import { computeHashFloat } from "../primitives/numbers/computeHashFloat.js";
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @author Alex Goldring
|
|
8
|
+
* @copyright Alex Goldring 2018
|
|
9
|
+
*/
|
|
10
|
+
export class Vector1 extends Number {
|
|
13
11
|
/**
|
|
14
12
|
*
|
|
15
13
|
* @param {number} [x=0]
|
|
@@ -131,7 +129,7 @@ class Vector1 extends Number {
|
|
|
131
129
|
* @param {Vector1|Vector2|Vector3|Vector4} other
|
|
132
130
|
*/
|
|
133
131
|
add(other) {
|
|
134
|
-
assert.isObject(other,"other");
|
|
132
|
+
assert.isObject(other, "other");
|
|
135
133
|
return this._add(other.x);
|
|
136
134
|
}
|
|
137
135
|
|
|
@@ -310,6 +308,10 @@ class Vector1 extends Number {
|
|
|
310
308
|
*/
|
|
311
309
|
Vector1.prototype.isVector1 = true;
|
|
312
310
|
|
|
311
|
+
/**
|
|
312
|
+
* @readonly
|
|
313
|
+
* @type {string}
|
|
314
|
+
*/
|
|
313
315
|
Vector1.typeName = "Vector1";
|
|
314
316
|
|
|
315
317
|
/**
|
|
@@ -326,4 +328,5 @@ Vector1.zero = Object.freeze(new Vector1(0));
|
|
|
326
328
|
*/
|
|
327
329
|
Vector1.one = Object.freeze(new Vector1(1));
|
|
328
330
|
|
|
331
|
+
|
|
329
332
|
export default Vector1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector2.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector2.js"],"names":[],"mappings":"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"}
|