plotboilerplate 1.28.1 → 1.29.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/README.md +8 -0
- package/dist/index.esm.js +335 -39
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/plotboilerplate.browser.min.js +1 -1
- package/dist/plotboilerplate.browser.min.js.map +1 -1
- package/dist/plotboilerplate.js +335 -37
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +1 -1
- package/src/cjs/Circle.d.ts +70 -3
- package/src/cjs/Circle.js +159 -4
- package/src/cjs/Circle.js.map +1 -1
- package/src/cjs/Triangle.d.ts +40 -4
- package/src/cjs/Triangle.js +127 -31
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/VertTuple.d.ts +4 -1
- package/src/cjs/VertTuple.js +6 -1
- package/src/cjs/VertTuple.js.map +1 -1
- package/src/cjs/Vertex.d.ts +25 -2
- package/src/cjs/Vertex.js +43 -1
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/utils/algorithms/minimalContainingCircleFromPoints.d.ts +21 -0
- package/src/cjs/utils/algorithms/minimalContainingCircleFromPoints.js +73 -0
- package/src/cjs/utils/algorithms/minimalContainingCircleFromPoints.js.map +1 -0
- package/src/cjs/utils/algorithms/minimalEnclosingCircleFromPoints.d.ts +21 -0
- package/src/cjs/utils/algorithms/minimalEnclosingCircleFromPoints.js +73 -0
- package/src/cjs/utils/algorithms/minimalEnclosingCircleFromPoints.js.map +1 -0
- package/src/cjs/utils/algorithms/pointsMinimalContainingCircle.d.ts +21 -0
- package/src/cjs/utils/algorithms/pointsMinimalContainingCircle.js +73 -0
- package/src/cjs/utils/algorithms/pointsMinimalContainingCircle.js.map +1 -0
- package/src/cjs/utils/algorithms/solveApollonius3.d.ts +69 -0
- package/src/cjs/utils/algorithms/solveApollonius3.js +118 -0
- package/src/cjs/utils/algorithms/solveApollonius3.js.map +1 -0
- package/src/esm/Circle.d.ts +70 -3
- package/src/esm/Circle.js +159 -4
- package/src/esm/Circle.js.map +1 -1
- package/src/esm/Triangle.d.ts +40 -4
- package/src/esm/Triangle.js +128 -32
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/VertTuple.d.ts +4 -1
- package/src/esm/VertTuple.js +6 -1
- package/src/esm/VertTuple.js.map +1 -1
- package/src/esm/Vertex.d.ts +25 -2
- package/src/esm/Vertex.js +44 -2
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/utils/algorithms/minimalContainingCircleFromPoints.d.ts +21 -0
- package/src/esm/utils/algorithms/minimalContainingCircleFromPoints.js +69 -0
- package/src/esm/utils/algorithms/minimalContainingCircleFromPoints.js.map +1 -0
- package/src/esm/utils/algorithms/minimalEnclosingCircleFromPoints.d.ts +21 -0
- package/src/esm/utils/algorithms/minimalEnclosingCircleFromPoints.js +69 -0
- package/src/esm/utils/algorithms/minimalEnclosingCircleFromPoints.js.map +1 -0
- package/src/esm/utils/algorithms/pointsMinimalContainingCircle.d.ts +21 -0
- package/src/esm/utils/algorithms/pointsMinimalContainingCircle.js +69 -0
- package/src/esm/utils/algorithms/pointsMinimalContainingCircle.js.map +1 -0
- package/src/esm/utils/algorithms/solveApollonius3.d.ts +69 -0
- package/src/esm/utils/algorithms/solveApollonius3.js +114 -0
- package/src/esm/utils/algorithms/solveApollonius3.js.map +1 -0
- package/src/index-gl.js +5 -2
- package/src/index.js +25 -17
- package/src/ts/Circle.ts +178 -5
- package/src/ts/Triangle.ts +148 -41
- package/src/ts/VertTuple.ts +14 -1
- package/src/ts/Vertex.ts +44 -2
- package/src/ts/utils/algorithms/minimalEnclosingCircleFromPoints.ts +69 -0
- package/src/ts/utils/algorithms/solveApollonius3.ts +132 -0
package/src/esm/VertTuple.js
CHANGED
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
* @modified 2025-03-31 Added the `VertTuple.revert` method.
|
|
17
17
|
* @modified 2025-04-15 Changed param of `VertTuple.moveTo` method from `Vertex` to `XYCoords`.
|
|
18
18
|
* @modified 2025-04-15 Added method `VertTuple.move` method.
|
|
19
|
-
* @
|
|
19
|
+
* @modified 2026-06-10 Adding helper function `VertTuple.utils.calcCircumcircle`.
|
|
20
|
+
* @version 1.5.0
|
|
20
21
|
*/
|
|
21
22
|
import { Vertex } from "./Vertex";
|
|
22
23
|
import { UIDGenerator } from "./UIDGenerator";
|
|
@@ -338,6 +339,10 @@ export class VertTuple {
|
|
|
338
339
|
VertTuple.vtutils = {
|
|
339
340
|
dist2: (v, w) => {
|
|
340
341
|
return (v.x - w.x) * (v.x - w.x) + (v.y - w.y) * (v.y - w.y);
|
|
342
|
+
},
|
|
343
|
+
calcCircumcircle: (p1, p2) => {
|
|
344
|
+
const p1x = p1.x, p1y = p1.y, p2x = p2.x, p2y = p2.y, cx = 0.5 * (p1x + p2x), cy = 0.5 * (p1y + p2y);
|
|
345
|
+
return { center: { x: cx, y: cy }, radius: Math.sqrt((p1x - cx) * (p1x - cx) + (p1y - cy) * (p1y - cy)) };
|
|
341
346
|
}
|
|
342
347
|
};
|
|
343
348
|
//# sourceMappingURL=VertTuple.js.map
|
package/src/esm/VertTuple.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VertTuple.js","sourceRoot":"","sources":["../ts/VertTuple.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"VertTuple.js","sourceRoot":"","sources":["../ts/VertTuple.ts"],"names":[],"mappings":"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"}
|
package/src/esm/Vertex.d.ts
CHANGED
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
* @modified 2025-03-24 Making the second parameter `center` of the `Vertex.rotate` method optional.
|
|
37
37
|
* @modified 2025-04-13 Adding the `Vertex.move(amount: XYCoords)` method (does the same as `add`, added by naming convention).
|
|
38
38
|
* @modified 2025-05-07 Class `Vertex` is now implementing interface `IBounded` (to meet convention).
|
|
39
|
-
* @
|
|
39
|
+
* @modified 2026-06-10 Adding methods `Vertex.findClosestPoint` and `Vertex.findFarestPoint`.
|
|
40
|
+
* @version 2.12.0
|
|
40
41
|
*
|
|
41
42
|
* @file Vertex
|
|
42
43
|
* @public
|
|
@@ -435,6 +436,28 @@ export declare class Vertex implements IBounded, XYCoords, SVGSerializable {
|
|
|
435
436
|
* @return {Bounds} The rectangular bounds of this Vertex (width and height are zero).
|
|
436
437
|
**/
|
|
437
438
|
getBounds(): Bounds;
|
|
439
|
+
/**
|
|
440
|
+
* Find the one of two given points that's closest to this point.
|
|
441
|
+
*
|
|
442
|
+
* @method findClosestPoint
|
|
443
|
+
* @instance
|
|
444
|
+
* @memberof Vertex
|
|
445
|
+
* @param {XYCoords | Vertex} pointA
|
|
446
|
+
* @param {XYCoords | Vertex} pointB
|
|
447
|
+
* @returns {XYCoords | Vertex}
|
|
448
|
+
*/
|
|
449
|
+
findClosestPoint<T extends XYCoords | Vertex>(pointA: T, pointB: T): T;
|
|
450
|
+
/**
|
|
451
|
+
* Find the one of two given points that's farest from this point.
|
|
452
|
+
*
|
|
453
|
+
* @method findFarestPoint
|
|
454
|
+
* @instance
|
|
455
|
+
* @memberof Vertex
|
|
456
|
+
* @param {XYCoords | Vertex} pointA
|
|
457
|
+
* @param {XYCoords | Vertex} pointB
|
|
458
|
+
* @returns {XYCoords | Vertex}
|
|
459
|
+
*/
|
|
460
|
+
findFarestPoint<T extends XYCoords | Vertex>(pointA: T, pointB: T): T;
|
|
438
461
|
/**
|
|
439
462
|
* Get a string representation of this vertex.
|
|
440
463
|
*
|
|
@@ -493,6 +516,6 @@ export declare class Vertex implements IBounded, XYCoords, SVGSerializable {
|
|
|
493
516
|
* @param {number?} precision - (optional) The numeric precision to be used (number of precision digits).
|
|
494
517
|
* @returns {string}
|
|
495
518
|
*/
|
|
496
|
-
arrayToJSON(vertices: Array<XYCoords>, precision?: number)
|
|
519
|
+
arrayToJSON: (vertices: Array<XYCoords>, precision?: number) => string;
|
|
497
520
|
};
|
|
498
521
|
}
|
package/src/esm/Vertex.js
CHANGED
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
* @modified 2025-03-24 Making the second parameter `center` of the `Vertex.rotate` method optional.
|
|
37
37
|
* @modified 2025-04-13 Adding the `Vertex.move(amount: XYCoords)` method (does the same as `add`, added by naming convention).
|
|
38
38
|
* @modified 2025-05-07 Class `Vertex` is now implementing interface `IBounded` (to meet convention).
|
|
39
|
-
* @
|
|
39
|
+
* @modified 2026-06-10 Adding methods `Vertex.findClosestPoint` and `Vertex.findFarestPoint`.
|
|
40
|
+
* @version 2.12.0
|
|
40
41
|
*
|
|
41
42
|
* @file Vertex
|
|
42
43
|
* @public
|
|
@@ -601,6 +602,47 @@ export class Vertex {
|
|
|
601
602
|
return Bounds.computeFromVertices([this]);
|
|
602
603
|
}
|
|
603
604
|
//--- END --- Implement interface `IBounded`
|
|
605
|
+
/**
|
|
606
|
+
* Find the one of two given points that's closest to this point.
|
|
607
|
+
*
|
|
608
|
+
* @method findClosestPoint
|
|
609
|
+
* @instance
|
|
610
|
+
* @memberof Vertex
|
|
611
|
+
* @param {XYCoords | Vertex} pointA
|
|
612
|
+
* @param {XYCoords | Vertex} pointB
|
|
613
|
+
* @returns {XYCoords | Vertex}
|
|
614
|
+
*/
|
|
615
|
+
findClosestPoint(pointA, pointB) {
|
|
616
|
+
// TODO: put this implementation to geomutils?
|
|
617
|
+
var distA = this.distance(pointA);
|
|
618
|
+
var distB = this.distance(pointB);
|
|
619
|
+
if (distA < distB) {
|
|
620
|
+
return pointA;
|
|
621
|
+
}
|
|
622
|
+
else {
|
|
623
|
+
return pointB;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Find the one of two given points that's farest from this point.
|
|
628
|
+
*
|
|
629
|
+
* @method findFarestPoint
|
|
630
|
+
* @instance
|
|
631
|
+
* @memberof Vertex
|
|
632
|
+
* @param {XYCoords | Vertex} pointA
|
|
633
|
+
* @param {XYCoords | Vertex} pointB
|
|
634
|
+
* @returns {XYCoords | Vertex}
|
|
635
|
+
*/
|
|
636
|
+
findFarestPoint(pointA, pointB) {
|
|
637
|
+
var distA = this.distance(pointA);
|
|
638
|
+
var distB = this.distance(pointB);
|
|
639
|
+
if (distA > distB) {
|
|
640
|
+
return pointA;
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
return pointB;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
604
646
|
/**
|
|
605
647
|
* Get a string representation of this vertex.
|
|
606
648
|
*
|
|
@@ -687,7 +729,7 @@ Vertex.utils = {
|
|
|
687
729
|
* @param {number?} precision - (optional) The numeric precision to be used (number of precision digits).
|
|
688
730
|
* @returns {string}
|
|
689
731
|
*/
|
|
690
|
-
arrayToJSON(vertices, precision) {
|
|
732
|
+
arrayToJSON: (vertices, precision) => {
|
|
691
733
|
return JSON.stringify(vertices.map(function (vert) {
|
|
692
734
|
return typeof precision === undefined
|
|
693
735
|
? { x: vert.x, y: vert.y }
|
package/src/esm/Vertex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vertex.js","sourceRoot":"","sources":["../ts/Vertex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Vertex.js","sourceRoot":"","sources":["../ts/Vertex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the minimal containing circle from a set of points.
|
|
3
|
+
*
|
|
4
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
5
|
+
*
|
|
6
|
+
* Inspired by https://github.com/rowanwins/smallest-enclosing-circle.
|
|
7
|
+
*
|
|
8
|
+
* @param {XYCoords[]} points
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
import { Circle } from "../../Circle";
|
|
12
|
+
import { XYCoords } from "../../interfaces";
|
|
13
|
+
/**
|
|
14
|
+
* Calculate the minimal containing circle from a set of points.
|
|
15
|
+
*
|
|
16
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
17
|
+
*
|
|
18
|
+
* @param {XYCoords[]} points
|
|
19
|
+
* @returns {Circle | null} The minimal containing circle or null if the point count is lower than 2.
|
|
20
|
+
*/
|
|
21
|
+
export declare const minimalContainingCircleFromPoints: (points: XYCoords[]) => Circle | null;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the minimal containing circle from a set of points.
|
|
3
|
+
*
|
|
4
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
5
|
+
*
|
|
6
|
+
* Inspired by https://github.com/rowanwins/smallest-enclosing-circle.
|
|
7
|
+
*
|
|
8
|
+
* @param {XYCoords[]} points
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
import { Circle } from "../../Circle";
|
|
12
|
+
import { Triangle } from "../../Triangle";
|
|
13
|
+
import { VertTuple } from "../../VertTuple";
|
|
14
|
+
import { Vertex } from "../../Vertex";
|
|
15
|
+
/**
|
|
16
|
+
* Calculate the minimal containing circle from a set of points.
|
|
17
|
+
*
|
|
18
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
19
|
+
*
|
|
20
|
+
* @param {XYCoords[]} points
|
|
21
|
+
* @returns {Circle | null} The minimal containing circle or null if the point count is lower than 2.
|
|
22
|
+
*/
|
|
23
|
+
export const minimalContainingCircleFromPoints = (points) => {
|
|
24
|
+
if (points.length <= 1) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const circleObject = wetzlsAlgorithm(points);
|
|
28
|
+
return new Circle(new Vertex(circleObject.center.x, circleObject.center.y), circleObject.radius);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* This initiates the actual algorithm but return a shallow circle representation.
|
|
32
|
+
*
|
|
33
|
+
* @param points
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
const wetzlsAlgorithm = (points) => {
|
|
37
|
+
return minimumContainingCircle(points, points.length, [], 0);
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Pre: points.length >= 2
|
|
41
|
+
* @param {Vertex[]} points
|
|
42
|
+
* @param n
|
|
43
|
+
* @param boundary
|
|
44
|
+
* @param boundaryLength
|
|
45
|
+
* @returns
|
|
46
|
+
*/
|
|
47
|
+
const minimumContainingCircle = (points, n, boundary, boundaryLength) => {
|
|
48
|
+
if (boundaryLength === 3) {
|
|
49
|
+
return Triangle.utils.calcCircumcircle(boundary[0], boundary[1], boundary[2]);
|
|
50
|
+
}
|
|
51
|
+
else if (n === 1 && boundaryLength === 0) {
|
|
52
|
+
return { center: { x: points[0].x, y: points[0].y }, radius: 0 };
|
|
53
|
+
}
|
|
54
|
+
else if (n === 0 && boundaryLength === 2) {
|
|
55
|
+
return VertTuple.vtutils.calcCircumcircle(boundary[0], boundary[1]);
|
|
56
|
+
}
|
|
57
|
+
else if (n === 1 && boundaryLength === 1) {
|
|
58
|
+
return VertTuple.vtutils.calcCircumcircle(boundary[0], points[0]);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const localCircle = minimumContainingCircle(points, n - 1, boundary, boundaryLength);
|
|
62
|
+
if (!Circle.circleUtils.containsPoint(localCircle.center, localCircle.radius, points[n - 1])) {
|
|
63
|
+
boundary[boundaryLength++] = points[n - 1];
|
|
64
|
+
return minimumContainingCircle(points, n - 1, boundary, boundaryLength);
|
|
65
|
+
}
|
|
66
|
+
return localCircle;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=minimalContainingCircleFromPoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimalContainingCircleFromPoints.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/minimalContainingCircleFromPoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAW,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,MAAkB,EAAiB,EAAE;IACrF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACnG,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAC,MAAkB,EAAkB,EAAE;IAC7D,OAAO,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,CAAC,MAAkB,EAAE,CAAS,EAAE,QAAoB,EAAE,cAAsB,EAAW,EAAE;IACvH,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAY,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,OAAO,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the minimal containing circle from a set of points.
|
|
3
|
+
*
|
|
4
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
5
|
+
*
|
|
6
|
+
* Inspired by https://github.com/rowanwins/smallest-enclosing-circle.
|
|
7
|
+
*
|
|
8
|
+
* @param {XYCoords[]} points
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
import { Circle } from "../../Circle";
|
|
12
|
+
import { XYCoords } from "../../interfaces";
|
|
13
|
+
/**
|
|
14
|
+
* Calculate the minimal containing circle from a set of points.
|
|
15
|
+
*
|
|
16
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
17
|
+
*
|
|
18
|
+
* @param {XYCoords[]} points
|
|
19
|
+
* @returns {Circle | null} The minimal containing circle or null if the point count is lower than 2.
|
|
20
|
+
*/
|
|
21
|
+
export declare const minimalEnclosingCircleFromPoints: (points: XYCoords[]) => Circle | null;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the minimal containing circle from a set of points.
|
|
3
|
+
*
|
|
4
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
5
|
+
*
|
|
6
|
+
* Inspired by https://github.com/rowanwins/smallest-enclosing-circle.
|
|
7
|
+
*
|
|
8
|
+
* @param {XYCoords[]} points
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
import { Circle } from "../../Circle";
|
|
12
|
+
import { Triangle } from "../../Triangle";
|
|
13
|
+
import { VertTuple } from "../../VertTuple";
|
|
14
|
+
import { Vertex } from "../../Vertex";
|
|
15
|
+
/**
|
|
16
|
+
* Calculate the minimal containing circle from a set of points.
|
|
17
|
+
*
|
|
18
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
19
|
+
*
|
|
20
|
+
* @param {XYCoords[]} points
|
|
21
|
+
* @returns {Circle | null} The minimal containing circle or null if the point count is lower than 2.
|
|
22
|
+
*/
|
|
23
|
+
export const minimalEnclosingCircleFromPoints = (points) => {
|
|
24
|
+
if (points.length <= 1) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const circleObject = wetzlsAlgorithm(points);
|
|
28
|
+
return new Circle(new Vertex(circleObject.center.x, circleObject.center.y), circleObject.radius);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* This initiates the actual algorithm but return a shallow circle representation.
|
|
32
|
+
*
|
|
33
|
+
* @param points
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
const wetzlsAlgorithm = (points) => {
|
|
37
|
+
return minimumContainingCircle(points, points.length, [], 0);
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Pre: points.length >= 2
|
|
41
|
+
* @param {Vertex[]} points
|
|
42
|
+
* @param n
|
|
43
|
+
* @param boundary
|
|
44
|
+
* @param boundaryLength
|
|
45
|
+
* @returns
|
|
46
|
+
*/
|
|
47
|
+
const minimumContainingCircle = (points, n, boundary, boundaryLength) => {
|
|
48
|
+
if (boundaryLength === 3) {
|
|
49
|
+
return Triangle.utils.calcCircumcircle(boundary[0], boundary[1], boundary[2]);
|
|
50
|
+
}
|
|
51
|
+
else if (n === 1 && boundaryLength === 0) {
|
|
52
|
+
return { center: { x: points[0].x, y: points[0].y }, radius: 0 };
|
|
53
|
+
}
|
|
54
|
+
else if (n === 0 && boundaryLength === 2) {
|
|
55
|
+
return VertTuple.vtutils.calcCircumcircle(boundary[0], boundary[1]);
|
|
56
|
+
}
|
|
57
|
+
else if (n === 1 && boundaryLength === 1) {
|
|
58
|
+
return VertTuple.vtutils.calcCircumcircle(boundary[0], points[0]);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const localCircle = minimumContainingCircle(points, n - 1, boundary, boundaryLength);
|
|
62
|
+
if (!Circle.circleUtils.containsPoint(localCircle.center, localCircle.radius, points[n - 1])) {
|
|
63
|
+
boundary[boundaryLength++] = points[n - 1];
|
|
64
|
+
return minimumContainingCircle(points, n - 1, boundary, boundaryLength);
|
|
65
|
+
}
|
|
66
|
+
return localCircle;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=minimalEnclosingCircleFromPoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimalEnclosingCircleFromPoints.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/minimalEnclosingCircleFromPoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAW,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,MAAkB,EAAiB,EAAE;IACpF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACnG,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAC,MAAkB,EAAkB,EAAE;IAC7D,OAAO,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,CAAC,MAAkB,EAAE,CAAS,EAAE,QAAoB,EAAE,cAAsB,EAAW,EAAE;IACvH,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAY,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,OAAO,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the minimal containing circle from a set of points.
|
|
3
|
+
*
|
|
4
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
5
|
+
*
|
|
6
|
+
* Inspired by https://github.com/rowanwins/smallest-enclosing-circle.
|
|
7
|
+
*
|
|
8
|
+
* @param {XYCoords[]} points
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
import { Circle } from "../../Circle";
|
|
12
|
+
import { XYCoords } from "../../interfaces";
|
|
13
|
+
/**
|
|
14
|
+
* Calculate the minimal containing circle from a set of points.
|
|
15
|
+
*
|
|
16
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
17
|
+
*
|
|
18
|
+
* @param {XYCoords[]} points
|
|
19
|
+
* @returns {Circle | null} The minimal containing circle or null if the point count is lower than 2.
|
|
20
|
+
*/
|
|
21
|
+
export declare const pointsMinimalContainingCircle: (points: XYCoords[]) => Circle | null;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the minimal containing circle from a set of points.
|
|
3
|
+
*
|
|
4
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
5
|
+
*
|
|
6
|
+
* Inspired by https://github.com/rowanwins/smallest-enclosing-circle.
|
|
7
|
+
*
|
|
8
|
+
* @param {XYCoords[]} points
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
import { Circle } from "../../Circle";
|
|
12
|
+
import { Triangle } from "../../Triangle";
|
|
13
|
+
import { VertTuple } from "../../VertTuple";
|
|
14
|
+
import { Vertex } from "../../Vertex";
|
|
15
|
+
/**
|
|
16
|
+
* Calculate the minimal containing circle from a set of points.
|
|
17
|
+
*
|
|
18
|
+
* The number of points must be at least 2. Otherwise the function returns null.
|
|
19
|
+
*
|
|
20
|
+
* @param {XYCoords[]} points
|
|
21
|
+
* @returns {Circle | null} The minimal containing circle or null if the point count is lower than 2.
|
|
22
|
+
*/
|
|
23
|
+
export const pointsMinimalContainingCircle = (points) => {
|
|
24
|
+
if (points.length <= 1) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const circleObject = wetzlsAlgorithm(points);
|
|
28
|
+
return new Circle(new Vertex(circleObject.center.x, circleObject.center.y), circleObject.radius);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* This initiates the actual algorithm but return a shallow circle representation.
|
|
32
|
+
*
|
|
33
|
+
* @param points
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
const wetzlsAlgorithm = (points) => {
|
|
37
|
+
return minimumContainingCircle(points, points.length, [], 0);
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Pre: points.length >= 2
|
|
41
|
+
* @param {Vertex[]} points
|
|
42
|
+
* @param n
|
|
43
|
+
* @param boundary
|
|
44
|
+
* @param boundaryLength
|
|
45
|
+
* @returns
|
|
46
|
+
*/
|
|
47
|
+
const minimumContainingCircle = (points, n, boundary, boundaryLength) => {
|
|
48
|
+
if (boundaryLength === 3) {
|
|
49
|
+
return Triangle.utils.calcCircumcircle(boundary[0], boundary[1], boundary[2]);
|
|
50
|
+
}
|
|
51
|
+
else if (n === 1 && boundaryLength === 0) {
|
|
52
|
+
return { center: { x: points[0].x, y: points[0].y }, radius: 0 };
|
|
53
|
+
}
|
|
54
|
+
else if (n === 0 && boundaryLength === 2) {
|
|
55
|
+
return VertTuple.vtutils.calcCircumcircle(boundary[0], boundary[1]);
|
|
56
|
+
}
|
|
57
|
+
else if (n === 1 && boundaryLength === 1) {
|
|
58
|
+
return VertTuple.vtutils.calcCircumcircle(boundary[0], points[0]);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const localCircle = minimumContainingCircle(points, n - 1, boundary, boundaryLength);
|
|
62
|
+
if (!Circle.circleUtils.containsPoint(points[n - 1], localCircle)) {
|
|
63
|
+
boundary[boundaryLength++] = points[n - 1];
|
|
64
|
+
return minimumContainingCircle(points, n - 1, boundary, boundaryLength);
|
|
65
|
+
}
|
|
66
|
+
return localCircle;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=pointsMinimalContainingCircle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointsMinimalContainingCircle.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/pointsMinimalContainingCircle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAW,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAkB,EAAiB,EAAE;IACjF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACnG,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAC,MAAkB,EAAkB,EAAE;IAC7D,OAAO,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,CAAC,MAAkB,EAAE,CAAS,EAAE,QAAoB,EAAE,cAAsB,EAAW,EAAE;IACvH,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAY,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,OAAO,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A solver for the Apollonian circle problem:
|
|
3
|
+
* find the circle that touches three other circles in extactly one point (each).
|
|
4
|
+
* The solution is not necesarily unique.
|
|
5
|
+
*
|
|
6
|
+
* For each of the three circles a boolean attribute can be passed that determines if the
|
|
7
|
+
* resultint circle should touch the input circle should be touched on the inside or outside.
|
|
8
|
+
*
|
|
9
|
+
* Not that there can be condition when the circle cannot be calculated (e.g. all circles
|
|
10
|
+
* have the same size and are colinear).
|
|
11
|
+
*
|
|
12
|
+
* Found at
|
|
13
|
+
* https://stackoverflow.com/questions/79281573/algorithm-for-finding-enclosing-circles-for-3-other-circles
|
|
14
|
+
*
|
|
15
|
+
* solveApollonius(Coord c1, Coord c2, Coord c3, int s1, int s2, int s3) {
|
|
16
|
+
// https://github.com/DIKU-Steiner/ProGAL/blob/master/src/ProGAL/geom2d/ApolloniusSolver.java
|
|
17
|
+
|
|
18
|
+
var x1 = c1.x;
|
|
19
|
+
var y1 = c1.y;
|
|
20
|
+
var r1 = c1.z;
|
|
21
|
+
var x2 = c2.x;
|
|
22
|
+
var y2 = c2.y;
|
|
23
|
+
var r2 = c2.z;
|
|
24
|
+
var x3 = c3.x;
|
|
25
|
+
var y3 = c3.y;
|
|
26
|
+
var r3 = c3.z;
|
|
27
|
+
|
|
28
|
+
// Currently optimized for fewest multiplications.
|
|
29
|
+
var v11 = 2 * x2 - 2 * x1;
|
|
30
|
+
var v12 = 2 * y2 - 2 * y1;
|
|
31
|
+
var v13 = x1 * x1 - x2 * x2 + y1 * y1 - y2 * y2 - r1 * r1 + r2 * r2;
|
|
32
|
+
var v14 = 2 * s2 * r2 - 2 * s1 * r1;
|
|
33
|
+
|
|
34
|
+
var v21 = 2 * x3 - 2 * x2;
|
|
35
|
+
var v22 = 2 * y3 - 2 * y2;
|
|
36
|
+
var v23 = x2 * x2 - x3 * x3 + y2 * y2 - y3 * y3 - r2 * r2 + r3 * r3;
|
|
37
|
+
var v24 = 2 * s3 * r3 - 2 * s2 * r2;
|
|
38
|
+
|
|
39
|
+
var w12 = v12 / v11;
|
|
40
|
+
var w13 = v13 / v11;
|
|
41
|
+
var w14 = v14 / v11;
|
|
42
|
+
|
|
43
|
+
var w22 = v22 / v21 - w12;
|
|
44
|
+
var w23 = v23 / v21 - w13;
|
|
45
|
+
var w24 = v24 / v21 - w14;
|
|
46
|
+
|
|
47
|
+
var P = -w23 / w22;
|
|
48
|
+
var Q = w24 / w22;
|
|
49
|
+
var M = -w12 * P - w13;
|
|
50
|
+
var N = w14 - w12 * Q;
|
|
51
|
+
|
|
52
|
+
var a = N * N + Q * Q - 1;
|
|
53
|
+
var b = 2 * M * N - 2 * N * x1 + 2 * P * Q - 2 * Q * y1 + 2 * s1 * r1;
|
|
54
|
+
var c = x1 * x1 + M * M - 2 * M * x1 + P * P + y1 * y1 - 2 * P * y1 - r1 * r1;
|
|
55
|
+
|
|
56
|
+
// Find a root of a quadratic equation. This requires the circle centers not
|
|
57
|
+
// to be e.g. colinear
|
|
58
|
+
var D = b * b - 4 * a * c;
|
|
59
|
+
var rs = (-b - Math.sqrt(D)) / (2 * a);
|
|
60
|
+
var xs = M + N * rs;
|
|
61
|
+
var ys = P + Q * rs;
|
|
62
|
+
|
|
63
|
+
return (xs, ys, rs);
|
|
64
|
+
}
|
|
65
|
+
*
|
|
66
|
+
* @date 2026-07-03
|
|
67
|
+
*/
|
|
68
|
+
import { Circle, ICircle } from "../../Circle";
|
|
69
|
+
export declare const solveApollonius3: (c1: ICircle, c2: ICircle, c3: ICircle, circle1Inside?: boolean, circle2Inside?: boolean, circle3Inside?: boolean) => Circle;
|