@tldraw/editor 5.5.0-next.f9308d324e1c → 5.5.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/dist-cjs/index.d.ts +49 -23
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/TldrawEditor.js +16 -12
- package/dist-cjs/lib/TldrawEditor.js.map +2 -2
- package/dist-cjs/lib/components/MenuClickCapture.js +42 -3
- package/dist-cjs/lib/components/MenuClickCapture.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js +5 -1
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +2 -5
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +3 -3
- package/dist-cjs/lib/components/default-components/DefaultSpinner.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +168 -181
- package/dist-cjs/lib/editor/Editor.js.map +3 -3
- package/dist-cjs/lib/editor/derivations/bindingsIndex.js +2 -0
- package/dist-cjs/lib/editor/derivations/bindingsIndex.js.map +2 -2
- package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +3 -2
- package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/EditorManager.js +11 -2
- package/dist-cjs/lib/editor/managers/EditorManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/PerformanceManager/PerformanceManager.js +49 -63
- package/dist-cjs/lib/editor/managers/PerformanceManager/PerformanceManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js +1 -1
- package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js +24 -24
- package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js +7 -1
- package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js +4 -3
- package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +4 -4
- package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +14 -6
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +3 -3
- package/dist-cjs/lib/editor/types/external-content.js.map +1 -1
- package/dist-cjs/lib/exports/ExportDelay.js +10 -2
- package/dist-cjs/lib/exports/ExportDelay.js.map +2 -2
- package/dist-cjs/lib/exports/FontEmbedder.js +25 -11
- package/dist-cjs/lib/exports/FontEmbedder.js.map +2 -2
- package/dist-cjs/lib/exports/StyleEmbedder.js +9 -4
- package/dist-cjs/lib/exports/StyleEmbedder.js.map +2 -2
- package/dist-cjs/lib/exports/fetchCache.js +3 -0
- package/dist-cjs/lib/exports/fetchCache.js.map +2 -2
- package/dist-cjs/lib/exports/getSvgAsImage.js +10 -4
- package/dist-cjs/lib/exports/getSvgAsImage.js.map +2 -2
- package/dist-cjs/lib/exports/getSvgJsx.js +18 -9
- package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
- package/dist-cjs/lib/exports/parseCss.js +1 -1
- package/dist-cjs/lib/exports/parseCss.js.map +1 -1
- package/dist-cjs/lib/hooks/EditorComponentsContext.js.map +2 -2
- package/dist-cjs/lib/hooks/useCanvasEvents.js +24 -0
- package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
- package/dist-cjs/lib/hooks/useIdentity.js +6 -2
- package/dist-cjs/lib/hooks/useIdentity.js.map +3 -3
- package/dist-cjs/lib/license/LicenseManager.js +9 -1
- package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
- package/dist-cjs/lib/license/LicenseProvider.js +12 -4
- package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
- package/dist-cjs/lib/utils/debug-flags.js +0 -6
- package/dist-cjs/lib/utils/debug-flags.js.map +2 -2
- package/dist-cjs/lib/utils/deepLinks.js +2 -1
- package/dist-cjs/lib/utils/deepLinks.js.map +2 -2
- package/dist-cjs/lib/utils/sync/LocalIndexedDb.js +32 -25
- package/dist-cjs/lib/utils/sync/LocalIndexedDb.js.map +2 -2
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +81 -40
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +49 -23
- package/dist-esm/index.mjs +4 -2
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/TldrawEditor.mjs +17 -13
- package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
- package/dist-esm/lib/components/MenuClickCapture.mjs +42 -3
- package/dist-esm/lib/components/MenuClickCapture.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +5 -1
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +2 -5
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +3 -3
- package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +168 -181
- package/dist-esm/lib/editor/Editor.mjs.map +3 -3
- package/dist-esm/lib/editor/derivations/bindingsIndex.mjs +2 -0
- package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +3 -2
- package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/EditorManager.mjs +11 -2
- package/dist-esm/lib/editor/managers/EditorManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/PerformanceManager/PerformanceManager.mjs +49 -63
- package/dist-esm/lib/editor/managers/PerformanceManager/PerformanceManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs +1 -1
- package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs +24 -24
- package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs +7 -1
- package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs +4 -3
- package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +4 -4
- package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +14 -6
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +3 -3
- package/dist-esm/lib/exports/ExportDelay.mjs +11 -3
- package/dist-esm/lib/exports/ExportDelay.mjs.map +2 -2
- package/dist-esm/lib/exports/FontEmbedder.mjs +25 -11
- package/dist-esm/lib/exports/FontEmbedder.mjs.map +2 -2
- package/dist-esm/lib/exports/StyleEmbedder.mjs +9 -4
- package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
- package/dist-esm/lib/exports/fetchCache.mjs +3 -0
- package/dist-esm/lib/exports/fetchCache.mjs.map +2 -2
- package/dist-esm/lib/exports/getSvgAsImage.mjs +10 -4
- package/dist-esm/lib/exports/getSvgAsImage.mjs.map +2 -2
- package/dist-esm/lib/exports/getSvgJsx.mjs +18 -9
- package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
- package/dist-esm/lib/exports/parseCss.mjs +1 -1
- package/dist-esm/lib/exports/parseCss.mjs.map +1 -1
- package/dist-esm/lib/hooks/EditorComponentsContext.mjs.map +2 -2
- package/dist-esm/lib/hooks/useCanvasEvents.mjs +24 -0
- package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
- package/dist-esm/lib/hooks/useIdentity.mjs +7 -3
- package/dist-esm/lib/hooks/useIdentity.mjs.map +3 -3
- package/dist-esm/lib/license/LicenseManager.mjs +9 -1
- package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
- package/dist-esm/lib/license/LicenseProvider.mjs +13 -5
- package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
- package/dist-esm/lib/utils/debug-flags.mjs +0 -6
- package/dist-esm/lib/utils/debug-flags.mjs.map +2 -2
- package/dist-esm/lib/utils/deepLinks.mjs +2 -1
- package/dist-esm/lib/utils/deepLinks.mjs.map +2 -2
- package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs +32 -25
- package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs.map +2 -2
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +81 -40
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/editor.css +9 -1
- package/package.json +8 -11
- package/src/index.ts +5 -1
- package/src/lib/TldrawEditor.tsx +35 -21
- package/src/lib/components/MenuClickCapture.tsx +55 -4
- package/src/lib/components/default-components/DefaultCanvas.tsx +7 -1
- package/src/lib/components/default-components/DefaultErrorFallback.tsx +13 -5
- package/src/lib/components/default-components/DefaultSpinner.tsx +4 -1
- package/src/lib/editor/Editor.test.ts +65 -0
- package/src/lib/editor/Editor.ts +261 -294
- package/src/lib/editor/derivations/bindingsIndex.ts +3 -0
- package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +1 -0
- package/src/lib/editor/managers/ClickManager/ClickManager.ts +3 -2
- package/src/lib/editor/managers/EditorManager.test.ts +32 -1
- package/src/lib/editor/managers/EditorManager.ts +15 -3
- package/src/lib/editor/managers/PerformanceManager/PerformanceManager.test.ts +80 -0
- package/src/lib/editor/managers/PerformanceManager/PerformanceManager.ts +54 -81
- package/src/lib/editor/managers/ScribbleManager/ScribbleManager.ts +1 -1
- package/src/lib/editor/managers/SnapManager/BoundsSnaps.ts +32 -36
- package/src/lib/editor/managers/SnapManager/HandleSnaps.ts +13 -2
- package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +13 -0
- package/src/lib/editor/managers/SnapManager/SnapManager.ts +6 -4
- package/src/lib/editor/managers/TextManager/TextManager.test.ts +74 -0
- package/src/lib/editor/managers/TextManager/TextManager.ts +6 -5
- package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +23 -8
- package/src/lib/editor/types/external-content.ts +5 -0
- package/src/lib/exports/ExportDelay.tsx +16 -4
- package/src/lib/exports/FontEmbedder.test.ts +99 -0
- package/src/lib/exports/FontEmbedder.ts +32 -11
- package/src/lib/exports/StyleEmbedder.ts +13 -4
- package/src/lib/exports/fetchCache.test.ts +22 -0
- package/src/lib/exports/fetchCache.ts +4 -0
- package/src/lib/exports/getSvgAsImage.ts +13 -5
- package/src/lib/exports/getSvgJsx.test.ts +43 -1
- package/src/lib/exports/getSvgJsx.tsx +28 -16
- package/src/lib/exports/parseCss.test.ts +4 -0
- package/src/lib/exports/parseCss.ts +2 -2
- package/src/lib/hooks/EditorComponentsContext.tsx +2 -1
- package/src/lib/hooks/useCanvasEvents.ts +42 -0
- package/src/lib/hooks/useIdentity.tsx +12 -1
- package/src/lib/license/LicenseManager.ts +13 -1
- package/src/lib/license/LicenseProvider.test.tsx +76 -0
- package/src/lib/license/LicenseProvider.tsx +19 -5
- package/src/lib/test/preserveFocus.test.tsx +81 -0
- package/src/lib/utils/debug-flags.ts +0 -6
- package/src/lib/utils/deepLinks.test.ts +15 -0
- package/src/lib/utils/deepLinks.ts +8 -3
- package/src/lib/utils/sync/LocalIndexedDb.test.ts +121 -1
- package/src/lib/utils/sync/LocalIndexedDb.ts +41 -28
- package/src/lib/utils/sync/TLLocalSyncClient.test.ts +257 -1
- package/src/lib/utils/sync/TLLocalSyncClient.ts +112 -54
- package/src/version.ts +3 -3
- package/dist-cjs/lib/primitives/geometry/geometry.bench.js +0 -133
- package/dist-cjs/lib/primitives/geometry/geometry.bench.js.map +0 -7
- package/dist-esm/lib/primitives/geometry/geometry.bench.mjs +0 -132
- package/dist-esm/lib/primitives/geometry/geometry.bench.mjs.map +0 -7
- package/src/lib/primitives/geometry/geometry.bench.ts +0 -179
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var import_vitest = require("vitest");
|
|
3
|
-
var import_Vec = require("../Vec");
|
|
4
|
-
var import_Arc2d = require("./Arc2d");
|
|
5
|
-
var import_Circle2d = require("./Circle2d");
|
|
6
|
-
var import_Edge2d = require("./Edge2d");
|
|
7
|
-
var import_Polyline2d = require("./Polyline2d");
|
|
8
|
-
var import_Rectangle2d = require("./Rectangle2d");
|
|
9
|
-
var import_intersect = require("../intersect");
|
|
10
|
-
const lsA = new import_Vec.Vec(0, 0);
|
|
11
|
-
const lsB = new import_Vec.Vec(100, 50);
|
|
12
|
-
const lsP = new import_Vec.Vec(30, 60);
|
|
13
|
-
(0, import_vitest.describe)("Vec line segment", () => {
|
|
14
|
-
(0, import_vitest.bench)("NearestPointOnLineSegment", () => {
|
|
15
|
-
import_Vec.Vec.NearestPointOnLineSegment(lsA, lsB, lsP, true);
|
|
16
|
-
});
|
|
17
|
-
(0, import_vitest.bench)("DistanceToLineSegment", () => {
|
|
18
|
-
import_Vec.Vec.DistanceToLineSegment(lsA, lsB, lsP, true);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
const vecA = new import_Vec.Vec(3, 4);
|
|
22
|
-
const vecB = new import_Vec.Vec(-1, 2);
|
|
23
|
-
const lineOrigin = new import_Vec.Vec(10, 10);
|
|
24
|
-
const lineDir = new import_Vec.Vec(0.7071, 0.7071);
|
|
25
|
-
const lineTestP = new import_Vec.Vec(20, 15);
|
|
26
|
-
(0, import_vitest.describe)("Vec utilities", () => {
|
|
27
|
-
(0, import_vitest.bench)("Lrp", () => {
|
|
28
|
-
import_Vec.Vec.Lrp(lsA, lsB, 0.35);
|
|
29
|
-
});
|
|
30
|
-
(0, import_vitest.bench)("AngleBetween", () => {
|
|
31
|
-
import_Vec.Vec.AngleBetween(vecA, vecB);
|
|
32
|
-
});
|
|
33
|
-
(0, import_vitest.bench)("NearestPointOnLineThroughPoint", () => {
|
|
34
|
-
import_Vec.Vec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP);
|
|
35
|
-
});
|
|
36
|
-
(0, import_vitest.bench)("DistanceToLineThroughPoint", () => {
|
|
37
|
-
import_Vec.Vec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
const intA1 = new import_Vec.Vec(0, 0);
|
|
41
|
-
const intA2 = new import_Vec.Vec(100, 100);
|
|
42
|
-
const intB1 = new import_Vec.Vec(100, 0);
|
|
43
|
-
const intB2 = new import_Vec.Vec(0, 100);
|
|
44
|
-
const intB1Miss = new import_Vec.Vec(200, 0);
|
|
45
|
-
const intB2Miss = new import_Vec.Vec(200, 100);
|
|
46
|
-
const intCenter = new import_Vec.Vec(50, 50);
|
|
47
|
-
(0, import_vitest.describe)("Intersections", () => {
|
|
48
|
-
(0, import_vitest.bench)("lineSegment-lineSegment (hit)", () => {
|
|
49
|
-
(0, import_intersect.intersectLineSegmentLineSegment)(intA1, intA2, intB1, intB2);
|
|
50
|
-
});
|
|
51
|
-
(0, import_vitest.bench)("lineSegment-lineSegment (miss)", () => {
|
|
52
|
-
(0, import_intersect.intersectLineSegmentLineSegment)(intA1, intA2, intB1Miss, intB2Miss);
|
|
53
|
-
});
|
|
54
|
-
(0, import_vitest.bench)("lineSegment-circle (hit)", () => {
|
|
55
|
-
(0, import_intersect.intersectLineSegmentCircle)(intA1, intA2, intCenter, 30);
|
|
56
|
-
});
|
|
57
|
-
(0, import_vitest.bench)("lineSegment-circle (miss)", () => {
|
|
58
|
-
(0, import_intersect.intersectLineSegmentCircle)(intA1, intA2, intCenter, 5);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
const edge = new import_Edge2d.Edge2d({ start: new import_Vec.Vec(0, 0), end: new import_Vec.Vec(100, 50) });
|
|
62
|
-
const edgePoint = new import_Vec.Vec(30, 60);
|
|
63
|
-
(0, import_vitest.describe)("Edge2d", () => {
|
|
64
|
-
(0, import_vitest.bench)("nearestPoint", () => {
|
|
65
|
-
edge.nearestPoint(edgePoint);
|
|
66
|
-
});
|
|
67
|
-
(0, import_vitest.bench)("distanceToPoint", () => {
|
|
68
|
-
edge.distanceToPoint(edgePoint);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
const circle = new import_Circle2d.Circle2d({ radius: 50, isFilled: true });
|
|
72
|
-
const circlePoint = new import_Vec.Vec(80, 60);
|
|
73
|
-
const circlePointInside = new import_Vec.Vec(50, 50);
|
|
74
|
-
(0, import_vitest.describe)("Circle2d", () => {
|
|
75
|
-
(0, import_vitest.bench)("nearestPoint", () => {
|
|
76
|
-
circle.nearestPoint(circlePoint);
|
|
77
|
-
});
|
|
78
|
-
(0, import_vitest.bench)("distanceToPoint", () => {
|
|
79
|
-
circle.distanceToPoint(circlePoint);
|
|
80
|
-
});
|
|
81
|
-
(0, import_vitest.bench)("hitTestPoint (outside)", () => {
|
|
82
|
-
circle.hitTestPoint(circlePoint, 5);
|
|
83
|
-
});
|
|
84
|
-
(0, import_vitest.bench)("hitTestPoint (inside)", () => {
|
|
85
|
-
circle.hitTestPoint(circlePointInside, 5, true);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
const arc = new import_Arc2d.Arc2d({
|
|
89
|
-
center: new import_Vec.Vec(50, 50),
|
|
90
|
-
start: new import_Vec.Vec(100, 50),
|
|
91
|
-
end: new import_Vec.Vec(50, 100),
|
|
92
|
-
sweepFlag: 1,
|
|
93
|
-
largeArcFlag: 0
|
|
94
|
-
});
|
|
95
|
-
const arcPoint = new import_Vec.Vec(90, 90);
|
|
96
|
-
(0, import_vitest.describe)("Arc2d", () => {
|
|
97
|
-
(0, import_vitest.bench)("nearestPoint", () => {
|
|
98
|
-
arc.nearestPoint(arcPoint);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
const polyPoints = [];
|
|
102
|
-
for (let i = 0; i <= 20; i++) {
|
|
103
|
-
const t = i / 20;
|
|
104
|
-
polyPoints.push(new import_Vec.Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50));
|
|
105
|
-
}
|
|
106
|
-
const polyline = new import_Polyline2d.Polyline2d({ points: polyPoints });
|
|
107
|
-
const polyPoint = new import_Vec.Vec(100, 80);
|
|
108
|
-
(0, import_vitest.describe)("Polyline2d", () => {
|
|
109
|
-
(0, import_vitest.bench)("nearestPoint", () => {
|
|
110
|
-
polyline.nearestPoint(polyPoint);
|
|
111
|
-
});
|
|
112
|
-
(0, import_vitest.bench)("distanceToPoint", () => {
|
|
113
|
-
polyline.distanceToPoint(polyPoint);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
const rect = new import_Rectangle2d.Rectangle2d({ width: 100, height: 80, isFilled: true });
|
|
117
|
-
const rectPointOutside = new import_Vec.Vec(120, 40);
|
|
118
|
-
const rectPointInside = new import_Vec.Vec(50, 40);
|
|
119
|
-
(0, import_vitest.describe)("Rectangle2d (Geometry2d)", () => {
|
|
120
|
-
(0, import_vitest.bench)("hitTestPoint (outside)", () => {
|
|
121
|
-
rect.hitTestPoint(rectPointOutside, 5);
|
|
122
|
-
});
|
|
123
|
-
(0, import_vitest.bench)("hitTestPoint (inside)", () => {
|
|
124
|
-
rect.hitTestPoint(rectPointInside, 5, true);
|
|
125
|
-
});
|
|
126
|
-
(0, import_vitest.bench)("distanceToPoint (outside)", () => {
|
|
127
|
-
rect.distanceToPoint(rectPointOutside);
|
|
128
|
-
});
|
|
129
|
-
(0, import_vitest.bench)("distanceToPoint (inside)", () => {
|
|
130
|
-
rect.distanceToPoint(rectPointInside, true);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
//# sourceMappingURL=geometry.bench.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/lib/primitives/geometry/geometry.bench.ts"],
|
|
4
|
-
"sourcesContent": ["import { bench, describe } from 'vitest'\nimport { Vec } from '../Vec'\nimport { Arc2d } from './Arc2d'\nimport { Circle2d } from './Circle2d'\nimport { Edge2d } from './Edge2d'\nimport { Polyline2d } from './Polyline2d'\nimport { Rectangle2d } from './Rectangle2d'\n\n// --- Vec line segment utilities ---\n\nconst lsA = new Vec(0, 0)\nconst lsB = new Vec(100, 50)\nconst lsP = new Vec(30, 60)\n\ndescribe('Vec line segment', () => {\n\tbench('NearestPointOnLineSegment', () => {\n\t\tVec.NearestPointOnLineSegment(lsA, lsB, lsP, true)\n\t})\n\n\tbench('DistanceToLineSegment', () => {\n\t\tVec.DistanceToLineSegment(lsA, lsB, lsP, true)\n\t})\n})\n\n// --- Vec utilities ---\n\nconst vecA = new Vec(3, 4)\nconst vecB = new Vec(-1, 2)\nconst lineOrigin = new Vec(10, 10)\nconst lineDir = new Vec(0.7071, 0.7071) // ~unit vector at 45\u00B0\nconst lineTestP = new Vec(20, 15)\n\ndescribe('Vec utilities', () => {\n\tbench('Lrp', () => {\n\t\tVec.Lrp(lsA, lsB, 0.35)\n\t})\n\n\tbench('AngleBetween', () => {\n\t\tVec.AngleBetween(vecA, vecB)\n\t})\n\n\tbench('NearestPointOnLineThroughPoint', () => {\n\t\tVec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n\n\tbench('DistanceToLineThroughPoint', () => {\n\t\tVec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n})\n\n// --- Intersections ---\n\nimport { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from '../intersect'\n\nconst intA1 = new Vec(0, 0)\nconst intA2 = new Vec(100, 100)\nconst intB1 = new Vec(100, 0)\nconst intB2 = new Vec(0, 100)\nconst intB1Miss = new Vec(200, 0)\nconst intB2Miss = new Vec(200, 100)\nconst intCenter = new Vec(50, 50)\n\ndescribe('Intersections', () => {\n\tbench('lineSegment-lineSegment (hit)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1, intB2)\n\t})\n\n\tbench('lineSegment-lineSegment (miss)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss)\n\t})\n\n\tbench('lineSegment-circle (hit)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 30)\n\t})\n\n\tbench('lineSegment-circle (miss)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 5)\n\t})\n})\n\n// --- Edge2d ---\n\nconst edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) })\nconst edgePoint = new Vec(30, 60)\n\ndescribe('Edge2d', () => {\n\tbench('nearestPoint', () => {\n\t\tedge.nearestPoint(edgePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tedge.distanceToPoint(edgePoint)\n\t})\n})\n\n// --- Circle2d ---\n\nconst circle = new Circle2d({ radius: 50, isFilled: true })\nconst circlePoint = new Vec(80, 60)\nconst circlePointInside = new Vec(50, 50)\n\ndescribe('Circle2d', () => {\n\tbench('nearestPoint', () => {\n\t\tcircle.nearestPoint(circlePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tcircle.distanceToPoint(circlePoint)\n\t})\n\n\tbench('hitTestPoint (outside)', () => {\n\t\tcircle.hitTestPoint(circlePoint, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\tcircle.hitTestPoint(circlePointInside, 5, true)\n\t})\n})\n\n// --- Arc2d ---\n\nconst arc = new Arc2d({\n\tcenter: new Vec(50, 50),\n\tstart: new Vec(100, 50),\n\tend: new Vec(50, 100),\n\tsweepFlag: 1,\n\tlargeArcFlag: 0,\n})\nconst arcPoint = new Vec(90, 90)\n\ndescribe('Arc2d', () => {\n\tbench('nearestPoint', () => {\n\t\tarc.nearestPoint(arcPoint)\n\t})\n})\n\n// --- Polyline2d (20 segments) ---\n\nconst polyPoints: Vec[] = []\nfor (let i = 0; i <= 20; i++) {\n\tconst t = i / 20\n\tpolyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50))\n}\nconst polyline = new Polyline2d({ points: polyPoints })\nconst polyPoint = new Vec(100, 80)\n\ndescribe('Polyline2d', () => {\n\tbench('nearestPoint', () => {\n\t\tpolyline.nearestPoint(polyPoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tpolyline.distanceToPoint(polyPoint)\n\t})\n})\n\n// --- Rectangle2d (Geometry2d base) ---\n\nconst rect = new Rectangle2d({ width: 100, height: 80, isFilled: true })\nconst rectPointOutside = new Vec(120, 40)\nconst rectPointInside = new Vec(50, 40)\n\ndescribe('Rectangle2d (Geometry2d)', () => {\n\tbench('hitTestPoint (outside)', () => {\n\t\trect.hitTestPoint(rectPointOutside, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\trect.hitTestPoint(rectPointInside, 5, true)\n\t})\n\n\tbench('distanceToPoint (outside)', () => {\n\t\trect.distanceToPoint(rectPointOutside)\n\t})\n\n\tbench('distanceToPoint (inside)', () => {\n\t\trect.distanceToPoint(rectPointInside, true)\n\t})\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { bench, describe } from "vitest";
|
|
2
|
-
import { Vec } from "../Vec.mjs";
|
|
3
|
-
import { Arc2d } from "./Arc2d.mjs";
|
|
4
|
-
import { Circle2d } from "./Circle2d.mjs";
|
|
5
|
-
import { Edge2d } from "./Edge2d.mjs";
|
|
6
|
-
import { Polyline2d } from "./Polyline2d.mjs";
|
|
7
|
-
import { Rectangle2d } from "./Rectangle2d.mjs";
|
|
8
|
-
const lsA = new Vec(0, 0);
|
|
9
|
-
const lsB = new Vec(100, 50);
|
|
10
|
-
const lsP = new Vec(30, 60);
|
|
11
|
-
describe("Vec line segment", () => {
|
|
12
|
-
bench("NearestPointOnLineSegment", () => {
|
|
13
|
-
Vec.NearestPointOnLineSegment(lsA, lsB, lsP, true);
|
|
14
|
-
});
|
|
15
|
-
bench("DistanceToLineSegment", () => {
|
|
16
|
-
Vec.DistanceToLineSegment(lsA, lsB, lsP, true);
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
const vecA = new Vec(3, 4);
|
|
20
|
-
const vecB = new Vec(-1, 2);
|
|
21
|
-
const lineOrigin = new Vec(10, 10);
|
|
22
|
-
const lineDir = new Vec(0.7071, 0.7071);
|
|
23
|
-
const lineTestP = new Vec(20, 15);
|
|
24
|
-
describe("Vec utilities", () => {
|
|
25
|
-
bench("Lrp", () => {
|
|
26
|
-
Vec.Lrp(lsA, lsB, 0.35);
|
|
27
|
-
});
|
|
28
|
-
bench("AngleBetween", () => {
|
|
29
|
-
Vec.AngleBetween(vecA, vecB);
|
|
30
|
-
});
|
|
31
|
-
bench("NearestPointOnLineThroughPoint", () => {
|
|
32
|
-
Vec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP);
|
|
33
|
-
});
|
|
34
|
-
bench("DistanceToLineThroughPoint", () => {
|
|
35
|
-
Vec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
import { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from "../intersect.mjs";
|
|
39
|
-
const intA1 = new Vec(0, 0);
|
|
40
|
-
const intA2 = new Vec(100, 100);
|
|
41
|
-
const intB1 = new Vec(100, 0);
|
|
42
|
-
const intB2 = new Vec(0, 100);
|
|
43
|
-
const intB1Miss = new Vec(200, 0);
|
|
44
|
-
const intB2Miss = new Vec(200, 100);
|
|
45
|
-
const intCenter = new Vec(50, 50);
|
|
46
|
-
describe("Intersections", () => {
|
|
47
|
-
bench("lineSegment-lineSegment (hit)", () => {
|
|
48
|
-
intersectLineSegmentLineSegment(intA1, intA2, intB1, intB2);
|
|
49
|
-
});
|
|
50
|
-
bench("lineSegment-lineSegment (miss)", () => {
|
|
51
|
-
intersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss);
|
|
52
|
-
});
|
|
53
|
-
bench("lineSegment-circle (hit)", () => {
|
|
54
|
-
intersectLineSegmentCircle(intA1, intA2, intCenter, 30);
|
|
55
|
-
});
|
|
56
|
-
bench("lineSegment-circle (miss)", () => {
|
|
57
|
-
intersectLineSegmentCircle(intA1, intA2, intCenter, 5);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
const edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) });
|
|
61
|
-
const edgePoint = new Vec(30, 60);
|
|
62
|
-
describe("Edge2d", () => {
|
|
63
|
-
bench("nearestPoint", () => {
|
|
64
|
-
edge.nearestPoint(edgePoint);
|
|
65
|
-
});
|
|
66
|
-
bench("distanceToPoint", () => {
|
|
67
|
-
edge.distanceToPoint(edgePoint);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
const circle = new Circle2d({ radius: 50, isFilled: true });
|
|
71
|
-
const circlePoint = new Vec(80, 60);
|
|
72
|
-
const circlePointInside = new Vec(50, 50);
|
|
73
|
-
describe("Circle2d", () => {
|
|
74
|
-
bench("nearestPoint", () => {
|
|
75
|
-
circle.nearestPoint(circlePoint);
|
|
76
|
-
});
|
|
77
|
-
bench("distanceToPoint", () => {
|
|
78
|
-
circle.distanceToPoint(circlePoint);
|
|
79
|
-
});
|
|
80
|
-
bench("hitTestPoint (outside)", () => {
|
|
81
|
-
circle.hitTestPoint(circlePoint, 5);
|
|
82
|
-
});
|
|
83
|
-
bench("hitTestPoint (inside)", () => {
|
|
84
|
-
circle.hitTestPoint(circlePointInside, 5, true);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
const arc = new Arc2d({
|
|
88
|
-
center: new Vec(50, 50),
|
|
89
|
-
start: new Vec(100, 50),
|
|
90
|
-
end: new Vec(50, 100),
|
|
91
|
-
sweepFlag: 1,
|
|
92
|
-
largeArcFlag: 0
|
|
93
|
-
});
|
|
94
|
-
const arcPoint = new Vec(90, 90);
|
|
95
|
-
describe("Arc2d", () => {
|
|
96
|
-
bench("nearestPoint", () => {
|
|
97
|
-
arc.nearestPoint(arcPoint);
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
const polyPoints = [];
|
|
101
|
-
for (let i = 0; i <= 20; i++) {
|
|
102
|
-
const t = i / 20;
|
|
103
|
-
polyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50));
|
|
104
|
-
}
|
|
105
|
-
const polyline = new Polyline2d({ points: polyPoints });
|
|
106
|
-
const polyPoint = new Vec(100, 80);
|
|
107
|
-
describe("Polyline2d", () => {
|
|
108
|
-
bench("nearestPoint", () => {
|
|
109
|
-
polyline.nearestPoint(polyPoint);
|
|
110
|
-
});
|
|
111
|
-
bench("distanceToPoint", () => {
|
|
112
|
-
polyline.distanceToPoint(polyPoint);
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
const rect = new Rectangle2d({ width: 100, height: 80, isFilled: true });
|
|
116
|
-
const rectPointOutside = new Vec(120, 40);
|
|
117
|
-
const rectPointInside = new Vec(50, 40);
|
|
118
|
-
describe("Rectangle2d (Geometry2d)", () => {
|
|
119
|
-
bench("hitTestPoint (outside)", () => {
|
|
120
|
-
rect.hitTestPoint(rectPointOutside, 5);
|
|
121
|
-
});
|
|
122
|
-
bench("hitTestPoint (inside)", () => {
|
|
123
|
-
rect.hitTestPoint(rectPointInside, 5, true);
|
|
124
|
-
});
|
|
125
|
-
bench("distanceToPoint (outside)", () => {
|
|
126
|
-
rect.distanceToPoint(rectPointOutside);
|
|
127
|
-
});
|
|
128
|
-
bench("distanceToPoint (inside)", () => {
|
|
129
|
-
rect.distanceToPoint(rectPointInside, true);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
//# sourceMappingURL=geometry.bench.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/lib/primitives/geometry/geometry.bench.ts"],
|
|
4
|
-
"sourcesContent": ["import { bench, describe } from 'vitest'\nimport { Vec } from '../Vec'\nimport { Arc2d } from './Arc2d'\nimport { Circle2d } from './Circle2d'\nimport { Edge2d } from './Edge2d'\nimport { Polyline2d } from './Polyline2d'\nimport { Rectangle2d } from './Rectangle2d'\n\n// --- Vec line segment utilities ---\n\nconst lsA = new Vec(0, 0)\nconst lsB = new Vec(100, 50)\nconst lsP = new Vec(30, 60)\n\ndescribe('Vec line segment', () => {\n\tbench('NearestPointOnLineSegment', () => {\n\t\tVec.NearestPointOnLineSegment(lsA, lsB, lsP, true)\n\t})\n\n\tbench('DistanceToLineSegment', () => {\n\t\tVec.DistanceToLineSegment(lsA, lsB, lsP, true)\n\t})\n})\n\n// --- Vec utilities ---\n\nconst vecA = new Vec(3, 4)\nconst vecB = new Vec(-1, 2)\nconst lineOrigin = new Vec(10, 10)\nconst lineDir = new Vec(0.7071, 0.7071) // ~unit vector at 45\u00B0\nconst lineTestP = new Vec(20, 15)\n\ndescribe('Vec utilities', () => {\n\tbench('Lrp', () => {\n\t\tVec.Lrp(lsA, lsB, 0.35)\n\t})\n\n\tbench('AngleBetween', () => {\n\t\tVec.AngleBetween(vecA, vecB)\n\t})\n\n\tbench('NearestPointOnLineThroughPoint', () => {\n\t\tVec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n\n\tbench('DistanceToLineThroughPoint', () => {\n\t\tVec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n})\n\n// --- Intersections ---\n\nimport { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from '../intersect'\n\nconst intA1 = new Vec(0, 0)\nconst intA2 = new Vec(100, 100)\nconst intB1 = new Vec(100, 0)\nconst intB2 = new Vec(0, 100)\nconst intB1Miss = new Vec(200, 0)\nconst intB2Miss = new Vec(200, 100)\nconst intCenter = new Vec(50, 50)\n\ndescribe('Intersections', () => {\n\tbench('lineSegment-lineSegment (hit)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1, intB2)\n\t})\n\n\tbench('lineSegment-lineSegment (miss)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss)\n\t})\n\n\tbench('lineSegment-circle (hit)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 30)\n\t})\n\n\tbench('lineSegment-circle (miss)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 5)\n\t})\n})\n\n// --- Edge2d ---\n\nconst edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) })\nconst edgePoint = new Vec(30, 60)\n\ndescribe('Edge2d', () => {\n\tbench('nearestPoint', () => {\n\t\tedge.nearestPoint(edgePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tedge.distanceToPoint(edgePoint)\n\t})\n})\n\n// --- Circle2d ---\n\nconst circle = new Circle2d({ radius: 50, isFilled: true })\nconst circlePoint = new Vec(80, 60)\nconst circlePointInside = new Vec(50, 50)\n\ndescribe('Circle2d', () => {\n\tbench('nearestPoint', () => {\n\t\tcircle.nearestPoint(circlePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tcircle.distanceToPoint(circlePoint)\n\t})\n\n\tbench('hitTestPoint (outside)', () => {\n\t\tcircle.hitTestPoint(circlePoint, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\tcircle.hitTestPoint(circlePointInside, 5, true)\n\t})\n})\n\n// --- Arc2d ---\n\nconst arc = new Arc2d({\n\tcenter: new Vec(50, 50),\n\tstart: new Vec(100, 50),\n\tend: new Vec(50, 100),\n\tsweepFlag: 1,\n\tlargeArcFlag: 0,\n})\nconst arcPoint = new Vec(90, 90)\n\ndescribe('Arc2d', () => {\n\tbench('nearestPoint', () => {\n\t\tarc.nearestPoint(arcPoint)\n\t})\n})\n\n// --- Polyline2d (20 segments) ---\n\nconst polyPoints: Vec[] = []\nfor (let i = 0; i <= 20; i++) {\n\tconst t = i / 20\n\tpolyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50))\n}\nconst polyline = new Polyline2d({ points: polyPoints })\nconst polyPoint = new Vec(100, 80)\n\ndescribe('Polyline2d', () => {\n\tbench('nearestPoint', () => {\n\t\tpolyline.nearestPoint(polyPoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tpolyline.distanceToPoint(polyPoint)\n\t})\n})\n\n// --- Rectangle2d (Geometry2d base) ---\n\nconst rect = new Rectangle2d({ width: 100, height: 80, isFilled: true })\nconst rectPointOutside = new Vec(120, 40)\nconst rectPointInside = new Vec(50, 40)\n\ndescribe('Rectangle2d (Geometry2d)', () => {\n\tbench('hitTestPoint (outside)', () => {\n\t\trect.hitTestPoint(rectPointOutside, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\trect.hitTestPoint(rectPointInside, 5, true)\n\t})\n\n\tbench('distanceToPoint (outside)', () => {\n\t\trect.distanceToPoint(rectPointOutside)\n\t})\n\n\tbench('distanceToPoint (inside)', () => {\n\t\trect.distanceToPoint(rectPointInside, true)\n\t})\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { bench, describe } from 'vitest'
|
|
2
|
-
import { Vec } from '../Vec'
|
|
3
|
-
import { Arc2d } from './Arc2d'
|
|
4
|
-
import { Circle2d } from './Circle2d'
|
|
5
|
-
import { Edge2d } from './Edge2d'
|
|
6
|
-
import { Polyline2d } from './Polyline2d'
|
|
7
|
-
import { Rectangle2d } from './Rectangle2d'
|
|
8
|
-
|
|
9
|
-
// --- Vec line segment utilities ---
|
|
10
|
-
|
|
11
|
-
const lsA = new Vec(0, 0)
|
|
12
|
-
const lsB = new Vec(100, 50)
|
|
13
|
-
const lsP = new Vec(30, 60)
|
|
14
|
-
|
|
15
|
-
describe('Vec line segment', () => {
|
|
16
|
-
bench('NearestPointOnLineSegment', () => {
|
|
17
|
-
Vec.NearestPointOnLineSegment(lsA, lsB, lsP, true)
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
bench('DistanceToLineSegment', () => {
|
|
21
|
-
Vec.DistanceToLineSegment(lsA, lsB, lsP, true)
|
|
22
|
-
})
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
// --- Vec utilities ---
|
|
26
|
-
|
|
27
|
-
const vecA = new Vec(3, 4)
|
|
28
|
-
const vecB = new Vec(-1, 2)
|
|
29
|
-
const lineOrigin = new Vec(10, 10)
|
|
30
|
-
const lineDir = new Vec(0.7071, 0.7071) // ~unit vector at 45°
|
|
31
|
-
const lineTestP = new Vec(20, 15)
|
|
32
|
-
|
|
33
|
-
describe('Vec utilities', () => {
|
|
34
|
-
bench('Lrp', () => {
|
|
35
|
-
Vec.Lrp(lsA, lsB, 0.35)
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
bench('AngleBetween', () => {
|
|
39
|
-
Vec.AngleBetween(vecA, vecB)
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
bench('NearestPointOnLineThroughPoint', () => {
|
|
43
|
-
Vec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP)
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
bench('DistanceToLineThroughPoint', () => {
|
|
47
|
-
Vec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP)
|
|
48
|
-
})
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
// --- Intersections ---
|
|
52
|
-
|
|
53
|
-
import { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from '../intersect'
|
|
54
|
-
|
|
55
|
-
const intA1 = new Vec(0, 0)
|
|
56
|
-
const intA2 = new Vec(100, 100)
|
|
57
|
-
const intB1 = new Vec(100, 0)
|
|
58
|
-
const intB2 = new Vec(0, 100)
|
|
59
|
-
const intB1Miss = new Vec(200, 0)
|
|
60
|
-
const intB2Miss = new Vec(200, 100)
|
|
61
|
-
const intCenter = new Vec(50, 50)
|
|
62
|
-
|
|
63
|
-
describe('Intersections', () => {
|
|
64
|
-
bench('lineSegment-lineSegment (hit)', () => {
|
|
65
|
-
intersectLineSegmentLineSegment(intA1, intA2, intB1, intB2)
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
bench('lineSegment-lineSegment (miss)', () => {
|
|
69
|
-
intersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss)
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
bench('lineSegment-circle (hit)', () => {
|
|
73
|
-
intersectLineSegmentCircle(intA1, intA2, intCenter, 30)
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
bench('lineSegment-circle (miss)', () => {
|
|
77
|
-
intersectLineSegmentCircle(intA1, intA2, intCenter, 5)
|
|
78
|
-
})
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
// --- Edge2d ---
|
|
82
|
-
|
|
83
|
-
const edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) })
|
|
84
|
-
const edgePoint = new Vec(30, 60)
|
|
85
|
-
|
|
86
|
-
describe('Edge2d', () => {
|
|
87
|
-
bench('nearestPoint', () => {
|
|
88
|
-
edge.nearestPoint(edgePoint)
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
bench('distanceToPoint', () => {
|
|
92
|
-
edge.distanceToPoint(edgePoint)
|
|
93
|
-
})
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
// --- Circle2d ---
|
|
97
|
-
|
|
98
|
-
const circle = new Circle2d({ radius: 50, isFilled: true })
|
|
99
|
-
const circlePoint = new Vec(80, 60)
|
|
100
|
-
const circlePointInside = new Vec(50, 50)
|
|
101
|
-
|
|
102
|
-
describe('Circle2d', () => {
|
|
103
|
-
bench('nearestPoint', () => {
|
|
104
|
-
circle.nearestPoint(circlePoint)
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
bench('distanceToPoint', () => {
|
|
108
|
-
circle.distanceToPoint(circlePoint)
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
bench('hitTestPoint (outside)', () => {
|
|
112
|
-
circle.hitTestPoint(circlePoint, 5)
|
|
113
|
-
})
|
|
114
|
-
|
|
115
|
-
bench('hitTestPoint (inside)', () => {
|
|
116
|
-
circle.hitTestPoint(circlePointInside, 5, true)
|
|
117
|
-
})
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
// --- Arc2d ---
|
|
121
|
-
|
|
122
|
-
const arc = new Arc2d({
|
|
123
|
-
center: new Vec(50, 50),
|
|
124
|
-
start: new Vec(100, 50),
|
|
125
|
-
end: new Vec(50, 100),
|
|
126
|
-
sweepFlag: 1,
|
|
127
|
-
largeArcFlag: 0,
|
|
128
|
-
})
|
|
129
|
-
const arcPoint = new Vec(90, 90)
|
|
130
|
-
|
|
131
|
-
describe('Arc2d', () => {
|
|
132
|
-
bench('nearestPoint', () => {
|
|
133
|
-
arc.nearestPoint(arcPoint)
|
|
134
|
-
})
|
|
135
|
-
})
|
|
136
|
-
|
|
137
|
-
// --- Polyline2d (20 segments) ---
|
|
138
|
-
|
|
139
|
-
const polyPoints: Vec[] = []
|
|
140
|
-
for (let i = 0; i <= 20; i++) {
|
|
141
|
-
const t = i / 20
|
|
142
|
-
polyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50))
|
|
143
|
-
}
|
|
144
|
-
const polyline = new Polyline2d({ points: polyPoints })
|
|
145
|
-
const polyPoint = new Vec(100, 80)
|
|
146
|
-
|
|
147
|
-
describe('Polyline2d', () => {
|
|
148
|
-
bench('nearestPoint', () => {
|
|
149
|
-
polyline.nearestPoint(polyPoint)
|
|
150
|
-
})
|
|
151
|
-
|
|
152
|
-
bench('distanceToPoint', () => {
|
|
153
|
-
polyline.distanceToPoint(polyPoint)
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
// --- Rectangle2d (Geometry2d base) ---
|
|
158
|
-
|
|
159
|
-
const rect = new Rectangle2d({ width: 100, height: 80, isFilled: true })
|
|
160
|
-
const rectPointOutside = new Vec(120, 40)
|
|
161
|
-
const rectPointInside = new Vec(50, 40)
|
|
162
|
-
|
|
163
|
-
describe('Rectangle2d (Geometry2d)', () => {
|
|
164
|
-
bench('hitTestPoint (outside)', () => {
|
|
165
|
-
rect.hitTestPoint(rectPointOutside, 5)
|
|
166
|
-
})
|
|
167
|
-
|
|
168
|
-
bench('hitTestPoint (inside)', () => {
|
|
169
|
-
rect.hitTestPoint(rectPointInside, 5, true)
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
bench('distanceToPoint (outside)', () => {
|
|
173
|
-
rect.distanceToPoint(rectPointOutside)
|
|
174
|
-
})
|
|
175
|
-
|
|
176
|
-
bench('distanceToPoint (inside)', () => {
|
|
177
|
-
rect.distanceToPoint(rectPointInside, true)
|
|
178
|
-
})
|
|
179
|
-
})
|