@woosh/meep-engine 2.85.19 → 2.86.0
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/build/meep.cjs +81 -81
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +81 -81
- package/editor/tools/v2/BlenderCameraOrientationGizmo.js +9 -8
- package/package.json +1 -1
- package/src/core/__module.d.ts +6 -0
- package/src/core/__module.js +6 -0
- package/src/core/geom/2d/circle/circleIntersectsCircle.js +1 -1
- package/src/core/geom/2d/circle/circleIntersectsPoint.js +1 -1
- package/src/core/geom/3d/eulerAnglesFromMatrix.js +1 -1
- package/src/core/geom/3d/normal/lamber_azimuth/transform.js +1 -1
- package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +1 -1
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector2.js +4 -89
- package/src/core/geom/vec2/v2_angle_between.d.ts +10 -0
- package/src/core/geom/vec2/v2_angle_between.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_angle_between.js +20 -0
- package/src/core/geom/vec2/v2_bearing_angle_towards.d.ts +10 -0
- package/src/core/geom/vec2/v2_bearing_angle_towards.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_bearing_angle_towards.js +16 -0
- package/src/core/geom/vec2/v2_distance.d.ts +10 -0
- package/src/core/geom/vec2/v2_distance.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_distance.js +21 -0
- package/src/core/geom/vec2/v2_distance_sqr.js +0 -0
- package/src/core/geom/vec2/v2_dot.d.ts +10 -0
- package/src/core/geom/vec2/v2_dot.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_dot.js +18 -0
- package/src/core/geom/vec2/v2_length_sqr.d.ts +8 -0
- package/src/core/geom/vec2/v2_length_sqr.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_length_sqr.js +9 -0
- package/src/core/geom/vec2/v2_magnitude.d.ts +8 -0
- package/src/core/geom/vec2/v2_magnitude.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_magnitude.js +11 -0
- package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
- package/src/core/graph/layout/CircleLayout.js +2 -1
- package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +28 -27
- package/src/engine/graphics/ecs/path/tube/build/fix_shape_normal_order.js +1 -1
- package/src/engine/graphics/ecs/path/tube/build/make_cap.js +5 -5
- package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +1 -1
- package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
- package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +10 -10
- package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
- package/src/generation/theme/ThemeEngine.js +8 -3
package/build/meep.module.js
CHANGED
|
@@ -47286,6 +47286,52 @@ function max2(a, b) {
|
|
|
47286
47286
|
return a < b ? b : a;
|
|
47287
47287
|
}
|
|
47288
47288
|
|
|
47289
|
+
/**
|
|
47290
|
+
*
|
|
47291
|
+
* @param {number} x
|
|
47292
|
+
* @param {number} y
|
|
47293
|
+
* @returns {number}
|
|
47294
|
+
*/
|
|
47295
|
+
function v2_length_sqr(x, y) {
|
|
47296
|
+
return x * x + y * y;
|
|
47297
|
+
}
|
|
47298
|
+
|
|
47299
|
+
/**
|
|
47300
|
+
*
|
|
47301
|
+
* @param {number} x
|
|
47302
|
+
* @param {number} y
|
|
47303
|
+
* @returns {number}
|
|
47304
|
+
*/
|
|
47305
|
+
function v2_magnitude(x, y) {
|
|
47306
|
+
return Math.sqrt(v2_length_sqr(x, y));
|
|
47307
|
+
}
|
|
47308
|
+
|
|
47309
|
+
/**
|
|
47310
|
+
*
|
|
47311
|
+
* @param {number} x0
|
|
47312
|
+
* @param {number} y0
|
|
47313
|
+
* @param {number} x1
|
|
47314
|
+
* @param {number} y1
|
|
47315
|
+
* @returns {number}
|
|
47316
|
+
*/
|
|
47317
|
+
function v2_distance(x0, y0, x1, y1) {
|
|
47318
|
+
|
|
47319
|
+
return v2_magnitude(x1 - x0, y1 - y0);
|
|
47320
|
+
}
|
|
47321
|
+
|
|
47322
|
+
/**
|
|
47323
|
+
*
|
|
47324
|
+
* @param {number} x0
|
|
47325
|
+
* @param {number} y0
|
|
47326
|
+
* @param {number} x1
|
|
47327
|
+
* @param {number} y1
|
|
47328
|
+
* @returns {number}
|
|
47329
|
+
*/
|
|
47330
|
+
function v2_dot(x0, y0, x1, y1) {
|
|
47331
|
+
|
|
47332
|
+
return (x0 * x1 + y0 * y1);
|
|
47333
|
+
}
|
|
47334
|
+
|
|
47289
47335
|
/**
|
|
47290
47336
|
* @author Alex Goldring
|
|
47291
47337
|
* @copyright Alex Goldring 14/02/14.
|
|
@@ -47948,86 +47994,6 @@ Vector2.one = Object.freeze(new Vector2(1, 1));
|
|
|
47948
47994
|
*/
|
|
47949
47995
|
Vector2.prototype.isVector2 = true;
|
|
47950
47996
|
|
|
47951
|
-
/**
|
|
47952
|
-
*
|
|
47953
|
-
* @param {number} x0
|
|
47954
|
-
* @param {number} y0
|
|
47955
|
-
* @param {number} x1
|
|
47956
|
-
* @param {number} y1
|
|
47957
|
-
* @returns {number}
|
|
47958
|
-
*/
|
|
47959
|
-
function v2_angleBetween(x0, y0, x1, y1) {
|
|
47960
|
-
const d = v2_dot(x0, y0, x1, y1);
|
|
47961
|
-
const l = v2_magnitude(x0, y0) * v2_magnitude(x1, y1);
|
|
47962
|
-
|
|
47963
|
-
const theta = clamp$1(d / l, -1, 1);
|
|
47964
|
-
|
|
47965
|
-
return Math.acos(theta);
|
|
47966
|
-
}
|
|
47967
|
-
|
|
47968
|
-
/**
|
|
47969
|
-
* https://math.stackexchange.com/questions/1596513/find-the-bearing-angle-between-two-points-in-a-2d-space
|
|
47970
|
-
* @param {number} x0
|
|
47971
|
-
* @param {number} y0
|
|
47972
|
-
* @param {number} x1
|
|
47973
|
-
* @param {number} y1
|
|
47974
|
-
* @returns {number}
|
|
47975
|
-
*/
|
|
47976
|
-
function v2_bearing_angle_towards(x0, y0, x1, y1) {
|
|
47977
|
-
const TWOPI = 6.2831853071795865;
|
|
47978
|
-
// if (a1 = b1 and a2 = b2) throw an error
|
|
47979
|
-
let theta = Math.atan2(x1 - x0, y0 - y1);
|
|
47980
|
-
if (theta < 0.0)
|
|
47981
|
-
theta += TWOPI;
|
|
47982
|
-
return theta;
|
|
47983
|
-
}
|
|
47984
|
-
|
|
47985
|
-
/**
|
|
47986
|
-
*
|
|
47987
|
-
* @param {number} x0
|
|
47988
|
-
* @param {number} y0
|
|
47989
|
-
* @param {number} x1
|
|
47990
|
-
* @param {number} y1
|
|
47991
|
-
* @returns {number}
|
|
47992
|
-
*/
|
|
47993
|
-
function v2_dot(x0, y0, x1, y1) {
|
|
47994
|
-
|
|
47995
|
-
return (x0 * x1 + y0 * y1);
|
|
47996
|
-
}
|
|
47997
|
-
|
|
47998
|
-
/**
|
|
47999
|
-
*
|
|
48000
|
-
* @param {number} x
|
|
48001
|
-
* @param {number} y
|
|
48002
|
-
* @returns {number}
|
|
48003
|
-
*/
|
|
48004
|
-
function v2_length_sqr(x, y) {
|
|
48005
|
-
return x * x + y * y;
|
|
48006
|
-
}
|
|
48007
|
-
|
|
48008
|
-
/**
|
|
48009
|
-
*
|
|
48010
|
-
* @param {number} x
|
|
48011
|
-
* @param {number} y
|
|
48012
|
-
* @returns {number}
|
|
48013
|
-
*/
|
|
48014
|
-
function v2_magnitude(x, y) {
|
|
48015
|
-
return Math.sqrt(v2_length_sqr(x, y));
|
|
48016
|
-
}
|
|
48017
|
-
|
|
48018
|
-
/**
|
|
48019
|
-
*
|
|
48020
|
-
* @param {number} x0
|
|
48021
|
-
* @param {number} y0
|
|
48022
|
-
* @param {number} x1
|
|
48023
|
-
* @param {number} y1
|
|
48024
|
-
* @returns {number}
|
|
48025
|
-
*/
|
|
48026
|
-
function v2_distance(x0, y0, x1, y1) {
|
|
48027
|
-
|
|
48028
|
-
return v2_magnitude(x1 - x0, y1 - y0);
|
|
48029
|
-
}
|
|
48030
|
-
|
|
48031
47997
|
Vector2._distance = v2_distance;
|
|
48032
47998
|
|
|
48033
47999
|
/**
|
|
@@ -116682,4 +116648,38 @@ function quat3_createFromAxisAngle(axis, angle, result) {
|
|
|
116682
116648
|
result.set(axis.x * s, axis.y * s, axis.z * s, Math.cos(halfAngle));
|
|
116683
116649
|
}
|
|
116684
116650
|
|
|
116685
|
-
|
|
116651
|
+
/**
|
|
116652
|
+
* https://math.stackexchange.com/questions/1596513/find-the-bearing-angle-between-two-points-in-a-2d-space
|
|
116653
|
+
* @param {number} x0
|
|
116654
|
+
* @param {number} y0
|
|
116655
|
+
* @param {number} x1
|
|
116656
|
+
* @param {number} y1
|
|
116657
|
+
* @returns {number}
|
|
116658
|
+
*/
|
|
116659
|
+
function v2_bearing_angle_towards(x0, y0, x1, y1) {
|
|
116660
|
+
const TWOPI = 6.2831853071795865;
|
|
116661
|
+
// if (a1 = b1 and a2 = b2) throw an error
|
|
116662
|
+
let theta = Math.atan2(x1 - x0, y0 - y1);
|
|
116663
|
+
if (theta < 0.0)
|
|
116664
|
+
theta += TWOPI;
|
|
116665
|
+
return theta;
|
|
116666
|
+
}
|
|
116667
|
+
|
|
116668
|
+
/**
|
|
116669
|
+
*
|
|
116670
|
+
* @param {number} x0
|
|
116671
|
+
* @param {number} y0
|
|
116672
|
+
* @param {number} x1
|
|
116673
|
+
* @param {number} y1
|
|
116674
|
+
* @returns {number}
|
|
116675
|
+
*/
|
|
116676
|
+
function v2_angle_between(x0, y0, x1, y1) {
|
|
116677
|
+
const d = v2_dot(x0, y0, x1, y1);
|
|
116678
|
+
const l = v2_magnitude(x0, y0) * v2_magnitude(x1, y1);
|
|
116679
|
+
|
|
116680
|
+
const theta = clamp$1(d / l, -1, 1);
|
|
116681
|
+
|
|
116682
|
+
return Math.acos(theta);
|
|
116683
|
+
}
|
|
116684
|
+
|
|
116685
|
+
export { AmbientOcclusionPostProcessEffect, Behavior, BehaviorStatus, Blackboard, Cache, EngineConfiguration, EngineHarness, ForwardPlusRenderingPlugin, HashMap, Light, ParallelBehavior, ParallelBehaviorPolicy, SGMesh, SGMeshSystem, SelectorBehavior, SequenceBehavior, ShadedGeometry, ShadedGeometrySystem, Signal, SignalBinding, Transform, dispatchViaProxy, findSignalHandlerIndexByHandle, findSignalHandlerIndexByHandleAndContext, find_path_on_grid_astar, quat3_createFromAxisAngle, v2_angle_between, v2_bearing_angle_towards, v2_distance, v2_dot, v2_length_sqr, v2_magnitude, v4_applyMatrix4, v4_distance_sqr, v4_dot, v4_length_sqr };
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { CanvasView } from "../../../src/view/elements/CanvasView.js";
|
|
2
|
-
import Vector3 from "../../../src/core/geom/Vector3.js";
|
|
3
|
-
import { compose_matrix4_array } from "../../../src/core/geom/3d/compose_matrix4_array.js";
|
|
4
1
|
import { mat4 } from "gl-matrix";
|
|
5
|
-
import { readPositionFromMouseEvent } from "../../../src/engine/input/devices/PointerDevice.js";
|
|
6
|
-
import Vector2, { v2_distance } from "../../../src/core/geom/Vector2.js";
|
|
7
2
|
import { Color } from "../../../src/core/color/Color.js";
|
|
8
|
-
import { inverseLerp } from "../../../src/core/math/inverseLerp.js";
|
|
9
|
-
import { clamp01 } from "../../../src/core/math/clamp01.js";
|
|
10
|
-
import { lerp } from "../../../src/core/math/lerp.js";
|
|
11
3
|
import Signal from "../../../src/core/events/signal/Signal.js";
|
|
4
|
+
import { compose_matrix4_array } from "../../../src/core/geom/3d/compose_matrix4_array.js";
|
|
12
5
|
import Quaternion from "../../../src/core/geom/Quaternion.js";
|
|
6
|
+
import { v2_distance } from "../../../src/core/geom/vec2/v2_distance.js";
|
|
7
|
+
import Vector2 from "../../../src/core/geom/Vector2.js";
|
|
8
|
+
import Vector3 from "../../../src/core/geom/Vector3.js";
|
|
9
|
+
import { clamp01 } from "../../../src/core/math/clamp01.js";
|
|
10
|
+
import { inverseLerp } from "../../../src/core/math/inverseLerp.js";
|
|
11
|
+
import { lerp } from "../../../src/core/math/lerp.js";
|
|
13
12
|
import { invertQuaternionOrientation } from "../../../src/engine/graphics/ecs/camera/InvertQuaternionOrientation.js";
|
|
13
|
+
import { readPositionFromMouseEvent } from "../../../src/engine/input/devices/PointerDevice.js";
|
|
14
|
+
import { CanvasView } from "../../../src/view/elements/CanvasView.js";
|
|
14
15
|
|
|
15
16
|
const scratch_color = new Color();
|
|
16
17
|
const scratch_quat = new Quaternion();
|
package/package.json
CHANGED
package/src/core/__module.d.ts
CHANGED
|
@@ -8,4 +8,10 @@ export * from "./events/signal/Signal.js";
|
|
|
8
8
|
export * from "./events/signal/SignalBinding.js";
|
|
9
9
|
export * from "./geom/Quaternion.js";
|
|
10
10
|
export { quat3_createFromAxisAngle } from "./geom/3d/quaternion/quat3_createFromAxisAngle.js";
|
|
11
|
+
export { v2_distance } from "./geom/vec2/v2_distance.js";
|
|
12
|
+
export { v2_magnitude } from "./geom/vec2/v2_magnitude.js";
|
|
13
|
+
export { v2_length_sqr } from "./geom/vec2/v2_length_sqr.js";
|
|
14
|
+
export { v2_dot } from "./geom/vec2/v2_dot.js";
|
|
15
|
+
export { v2_bearing_angle_towards } from "./geom/vec2/v2_bearing_angle_towards.js";
|
|
16
|
+
export { v2_angle_between } from "./geom/vec2/v2_angle_between.js";
|
|
11
17
|
//# sourceMappingURL=__module.d.ts.map
|
package/src/core/__module.js
CHANGED
|
@@ -10,3 +10,9 @@ export * from "./events/signal/Signal.js";
|
|
|
10
10
|
export * from "./events/signal/SignalBinding.js";
|
|
11
11
|
export * from "./geom/Quaternion.js";
|
|
12
12
|
export { quat3_createFromAxisAngle } from "./geom/3d/quaternion/quat3_createFromAxisAngle.js";
|
|
13
|
+
export { v2_distance } from "./geom/vec2/v2_distance.js";
|
|
14
|
+
export { v2_magnitude } from "./geom/vec2/v2_magnitude.js";
|
|
15
|
+
export { v2_length_sqr } from "./geom/vec2/v2_length_sqr.js";
|
|
16
|
+
export { v2_dot } from "./geom/vec2/v2_dot.js";
|
|
17
|
+
export { v2_bearing_angle_towards } from "./geom/vec2/v2_bearing_angle_towards.js";
|
|
18
|
+
export { v2_angle_between } from "./geom/vec2/v2_angle_between.js";
|
|
@@ -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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"}
|
package/src/core/geom/Vector2.js
CHANGED
|
@@ -12,6 +12,10 @@ import { lerp } from "../math/lerp.js";
|
|
|
12
12
|
import { max2 } from "../math/max2.js";
|
|
13
13
|
import { min2 } from "../math/min2.js";
|
|
14
14
|
import { computeHashFloat } from "../primitives/numbers/computeHashFloat.js";
|
|
15
|
+
import { v2_distance } from "./vec2/v2_distance.js";
|
|
16
|
+
import { v2_dot } from "./vec2/v2_dot.js";
|
|
17
|
+
import { v2_length_sqr } from "./vec2/v2_length_sqr.js";
|
|
18
|
+
import { v2_magnitude } from "./vec2/v2_magnitude.js";
|
|
15
19
|
|
|
16
20
|
class Vector2 {
|
|
17
21
|
/**
|
|
@@ -681,95 +685,6 @@ Vector2.one = Object.freeze(new Vector2(1, 1));
|
|
|
681
685
|
*/
|
|
682
686
|
Vector2.prototype.isVector2 = true;
|
|
683
687
|
|
|
684
|
-
/**
|
|
685
|
-
*
|
|
686
|
-
* @param {number} x0
|
|
687
|
-
* @param {number} y0
|
|
688
|
-
* @param {number} x1
|
|
689
|
-
* @param {number} y1
|
|
690
|
-
* @returns {number}
|
|
691
|
-
*/
|
|
692
|
-
export function v2_angleBetween(x0, y0, x1, y1) {
|
|
693
|
-
const d = v2_dot(x0, y0, x1, y1);
|
|
694
|
-
const l = v2_magnitude(x0, y0) * v2_magnitude(x1, y1);
|
|
695
|
-
|
|
696
|
-
const theta = clamp(d / l, -1, 1);
|
|
697
|
-
|
|
698
|
-
return Math.acos(theta);
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
/**
|
|
702
|
-
* https://math.stackexchange.com/questions/1596513/find-the-bearing-angle-between-two-points-in-a-2d-space
|
|
703
|
-
* @param {number} x0
|
|
704
|
-
* @param {number} y0
|
|
705
|
-
* @param {number} x1
|
|
706
|
-
* @param {number} y1
|
|
707
|
-
* @returns {number}
|
|
708
|
-
*/
|
|
709
|
-
export function v2_bearing_angle_towards(x0, y0, x1, y1) {
|
|
710
|
-
const TWOPI = 6.2831853071795865;
|
|
711
|
-
// if (a1 = b1 and a2 = b2) throw an error
|
|
712
|
-
let theta = Math.atan2(x1 - x0, y0 - y1);
|
|
713
|
-
if (theta < 0.0)
|
|
714
|
-
theta += TWOPI;
|
|
715
|
-
return theta;
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
/**
|
|
719
|
-
*
|
|
720
|
-
* @param {number} x0
|
|
721
|
-
* @param {number} y0
|
|
722
|
-
* @param {number} x1
|
|
723
|
-
* @param {number} y1
|
|
724
|
-
* @returns {number}
|
|
725
|
-
*/
|
|
726
|
-
export function v2_dot(x0, y0, x1, y1) {
|
|
727
|
-
assert.isNumber(x0, 'x0');
|
|
728
|
-
assert.isNumber(y0, 'y0');
|
|
729
|
-
assert.isNumber(x1, 'x1');
|
|
730
|
-
assert.isNumber(y1, 'y1');
|
|
731
|
-
|
|
732
|
-
return (x0 * x1 + y0 * y1);
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
/**
|
|
736
|
-
*
|
|
737
|
-
* @param {number} x
|
|
738
|
-
* @param {number} y
|
|
739
|
-
* @returns {number}
|
|
740
|
-
*/
|
|
741
|
-
export function v2_length_sqr(x, y) {
|
|
742
|
-
return x * x + y * y;
|
|
743
|
-
}
|
|
744
|
-
|
|
745
|
-
/**
|
|
746
|
-
*
|
|
747
|
-
* @param {number} x
|
|
748
|
-
* @param {number} y
|
|
749
|
-
* @returns {number}
|
|
750
|
-
*/
|
|
751
|
-
export function v2_magnitude(x, y) {
|
|
752
|
-
return Math.sqrt(v2_length_sqr(x, y));
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
/**
|
|
756
|
-
*
|
|
757
|
-
* @param {number} x0
|
|
758
|
-
* @param {number} y0
|
|
759
|
-
* @param {number} x1
|
|
760
|
-
* @param {number} y1
|
|
761
|
-
* @returns {number}
|
|
762
|
-
*/
|
|
763
|
-
export function v2_distance(x0, y0, x1, y1) {
|
|
764
|
-
|
|
765
|
-
assert.isNumber(x0, 'x0');
|
|
766
|
-
assert.isNumber(y0, 'x0');
|
|
767
|
-
assert.isNumber(x1, 'x0');
|
|
768
|
-
assert.isNumber(y1, 'x0');
|
|
769
|
-
|
|
770
|
-
return v2_magnitude(x1 - x0, y1 - y0);
|
|
771
|
-
}
|
|
772
|
-
|
|
773
688
|
Vector2._distance = v2_distance;
|
|
774
689
|
|
|
775
690
|
export default Vector2;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number} x0
|
|
4
|
+
* @param {number} y0
|
|
5
|
+
* @param {number} x1
|
|
6
|
+
* @param {number} y1
|
|
7
|
+
* @returns {number}
|
|
8
|
+
*/
|
|
9
|
+
export function v2_angle_between(x0: number, y0: number, x1: number, y1: number): number;
|
|
10
|
+
//# sourceMappingURL=v2_angle_between.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_angle_between.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_angle_between.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,qCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CASlB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { clamp } from "../../math/clamp.js";
|
|
2
|
+
import { v2_dot } from "./v2_dot.js";
|
|
3
|
+
import { v2_magnitude } from "./v2_magnitude.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param {number} x0
|
|
8
|
+
* @param {number} y0
|
|
9
|
+
* @param {number} x1
|
|
10
|
+
* @param {number} y1
|
|
11
|
+
* @returns {number}
|
|
12
|
+
*/
|
|
13
|
+
export function v2_angle_between(x0, y0, x1, y1) {
|
|
14
|
+
const d = v2_dot(x0, y0, x1, y1);
|
|
15
|
+
const l = v2_magnitude(x0, y0) * v2_magnitude(x1, y1);
|
|
16
|
+
|
|
17
|
+
const theta = clamp(d / l, -1, 1);
|
|
18
|
+
|
|
19
|
+
return Math.acos(theta);
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* https://math.stackexchange.com/questions/1596513/find-the-bearing-angle-between-two-points-in-a-2d-space
|
|
3
|
+
* @param {number} x0
|
|
4
|
+
* @param {number} y0
|
|
5
|
+
* @param {number} x1
|
|
6
|
+
* @param {number} y1
|
|
7
|
+
* @returns {number}
|
|
8
|
+
*/
|
|
9
|
+
export function v2_bearing_angle_towards(x0: number, y0: number, x1: number, y1: number): number;
|
|
10
|
+
//# sourceMappingURL=v2_bearing_angle_towards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_bearing_angle_towards.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_bearing_angle_towards.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,6CANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CASlB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* https://math.stackexchange.com/questions/1596513/find-the-bearing-angle-between-two-points-in-a-2d-space
|
|
3
|
+
* @param {number} x0
|
|
4
|
+
* @param {number} y0
|
|
5
|
+
* @param {number} x1
|
|
6
|
+
* @param {number} y1
|
|
7
|
+
* @returns {number}
|
|
8
|
+
*/
|
|
9
|
+
export function v2_bearing_angle_towards(x0, y0, x1, y1) {
|
|
10
|
+
const TWOPI = 6.2831853071795865;
|
|
11
|
+
// if (a1 = b1 and a2 = b2) throw an error
|
|
12
|
+
let theta = Math.atan2(x1 - x0, y0 - y1);
|
|
13
|
+
if (theta < 0.0)
|
|
14
|
+
theta += TWOPI;
|
|
15
|
+
return theta;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_distance.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_distance.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,gCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAUlB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { assert } from "../../assert.js";
|
|
2
|
+
|
|
3
|
+
import { v2_magnitude } from "./v2_magnitude.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param {number} x0
|
|
8
|
+
* @param {number} y0
|
|
9
|
+
* @param {number} x1
|
|
10
|
+
* @param {number} y1
|
|
11
|
+
* @returns {number}
|
|
12
|
+
*/
|
|
13
|
+
export function v2_distance(x0, y0, x1, y1) {
|
|
14
|
+
|
|
15
|
+
assert.isNumber(x0, 'x0');
|
|
16
|
+
assert.isNumber(y0, 'x0');
|
|
17
|
+
assert.isNumber(x1, 'x0');
|
|
18
|
+
assert.isNumber(y1, 'x0');
|
|
19
|
+
|
|
20
|
+
return v2_magnitude(x1 - x0, y1 - y0);
|
|
21
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_dot.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_dot.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,2BANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CASlB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { assert } from "../../assert.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number} x0
|
|
6
|
+
* @param {number} y0
|
|
7
|
+
* @param {number} x1
|
|
8
|
+
* @param {number} y1
|
|
9
|
+
* @returns {number}
|
|
10
|
+
*/
|
|
11
|
+
export function v2_dot(x0, y0, x1, y1) {
|
|
12
|
+
assert.isNumber(x0, 'x0');
|
|
13
|
+
assert.isNumber(y0, 'y0');
|
|
14
|
+
assert.isNumber(x1, 'x1');
|
|
15
|
+
assert.isNumber(y1, 'y1');
|
|
16
|
+
|
|
17
|
+
return (x0 * x1 + y0 * y1);
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_length_sqr.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_length_sqr.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,iCAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_magnitude.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_magnitude.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,gCAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircleLayout.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/layout/CircleLayout.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CircleLayout.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/layout/CircleLayout.js"],"names":[],"mappings":"AAiJA;;;;;GAKG;AACH,yCAJW,MAAM,EAAE,yBAER,OAAO,QAyEjB;AAsBD;;;;GAIG;AACH,kDAHW,MAAM,EAAE,UACR,OAAO,QAcjB;AAwTD,sGAsBC;AA4MD;;;;GAIG;AACH,8CAHW,MAAM,WACN,MAAM,EAAE,QAgBlB;AAED;;;;;GAKG;AACH,4CAJW,MAAM,EAAE,UACR,OAAO,YACP,MAAM,QAkBhB;AAED;;;;;GAKG;AACH,qDAJW,MAAM,WACN,MAAM,EAAE,GACP,MAAM,CA2EjB;mBAz5BkB,gCAAgC;oBAK/B,uBAAuB"}
|
|
@@ -4,7 +4,8 @@ import Circle from "../../geom/2d/circle/Circle.js";
|
|
|
4
4
|
import {
|
|
5
5
|
line_segment_line_segment_intersection_exists_2d
|
|
6
6
|
} from "../../geom/2d/line/line_segment_line_segment_intersection_exists_2d.js";
|
|
7
|
-
import
|
|
7
|
+
import { v2_distance } from "../../geom/vec2/v2_distance.js";
|
|
8
|
+
import Vector2 from "../../geom/Vector2.js";
|
|
8
9
|
import { max2 } from "../../math/max2.js";
|
|
9
10
|
import { min2 } from "../../math/min2.js";
|
|
10
11
|
import { applyCentralGravityAABB2 } from "./box/applyCentralGravityAABB2.js";
|