plotboilerplate 1.23.2 → 1.24.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 +6 -0
- package/dist/index.esm.js +8351 -6928
- 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 +1590 -123
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +4 -2
- package/src/cjs/BezierPath.d.ts +41 -5
- package/src/cjs/BezierPath.js +52 -2
- package/src/cjs/BezierPath.js.map +1 -1
- package/src/cjs/Bounds.d.ts +67 -3
- package/src/cjs/Bounds.js +101 -3
- package/src/cjs/Bounds.js.map +1 -1
- package/src/cjs/Circle.d.ts +46 -4
- package/src/cjs/Circle.js +82 -3
- package/src/cjs/Circle.js.map +1 -1
- package/src/cjs/CircleSector.d.ts +51 -2
- package/src/cjs/CircleSector.js +112 -3
- package/src/cjs/CircleSector.js.map +1 -1
- package/src/cjs/CubicBezierCurve.d.ts +113 -7
- package/src/cjs/CubicBezierCurve.js +281 -33
- package/src/cjs/CubicBezierCurve.js.map +1 -1
- package/src/cjs/Line.d.ts +38 -3
- package/src/cjs/Line.js +64 -1
- package/src/cjs/Line.js.map +1 -1
- package/src/cjs/PlotBoilerplate.d.ts +4 -2
- package/src/cjs/PlotBoilerplate.js +9 -12
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.d.ts +153 -6
- package/src/cjs/Polygon.js +304 -23
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/Triangle.d.ts +73 -4
- package/src/cjs/Triangle.js +94 -2
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/VEllipse.d.ts +62 -3
- package/src/cjs/VEllipse.js +181 -17
- package/src/cjs/VEllipse.js.map +1 -1
- package/src/cjs/VEllipseSector.d.ts +86 -2
- package/src/cjs/VEllipseSector.js +148 -4
- package/src/cjs/VEllipseSector.js.map +1 -1
- package/src/cjs/Vector.d.ts +12 -2
- package/src/cjs/Vector.js +15 -2
- package/src/cjs/Vector.js.map +1 -1
- package/src/cjs/VertTuple.d.ts +39 -10
- package/src/cjs/VertTuple.js +49 -11
- package/src/cjs/VertTuple.js.map +1 -1
- package/src/cjs/Vertex.d.ts +18 -2
- package/src/cjs/Vertex.js +22 -2
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/draw.d.ts +1 -0
- package/src/cjs/draw.js +2 -1
- package/src/cjs/draw.js.map +1 -1
- package/src/cjs/drawutilssvg.js +24 -0
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/geomutils.d.ts +32 -1
- package/src/cjs/geomutils.js +47 -1
- package/src/cjs/geomutils.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +39 -0
- package/src/cjs/interfaces/core.js +2 -0
- package/src/cjs/interfaces/core.js.map +1 -1
- package/src/cjs/utils/algorithms/PolygonInset.d.ts +184 -0
- package/src/cjs/utils/algorithms/PolygonInset.js +431 -0
- package/src/cjs/utils/algorithms/PolygonInset.js.map +1 -0
- package/src/cjs/utils/algorithms/clearDuplicateVertices.d.ts +5 -4
- package/src/cjs/utils/algorithms/clearDuplicateVertices.js +6 -3
- package/src/cjs/utils/algorithms/clearDuplicateVertices.js.map +1 -1
- package/src/cjs/utils/algorithms/convexPolygonIncircle.d.ts +2 -1
- package/src/cjs/utils/algorithms/convexPolygonIncircle.js +14 -6
- package/src/cjs/utils/algorithms/convexPolygonIncircle.js.map +1 -1
- package/src/cjs/utils/algorithms/findPolygonSelfIntersections.d.ts +2 -1
- package/src/cjs/utils/algorithms/findPolygonSelfIntersections.js +3 -3
- package/src/cjs/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
- package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.d.ts +3 -2
- package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.js +11 -9
- package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
- package/src/cjs/utils/createRandomizedPolygon.d.ts +14 -0
- package/src/cjs/utils/createRandomizedPolygon.js +32 -0
- package/src/cjs/utils/createRandomizedPolygon.js.map +1 -0
- package/src/cjs/utils/detectDarkMode.js.map +1 -1
- package/src/cjs/utils/dom/guiSizeToggler.d.ts +2 -1
- package/src/cjs/utils/dom/guiSizeToggler.js +5 -3
- package/src/cjs/utils/dom/guiSizeToggler.js.map +1 -1
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +9 -7
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +37 -23
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/cjs/utils/helpers/CircleSectorHelper.d.ts +10 -1
- package/src/cjs/utils/helpers/CircleSectorHelper.js +19 -20
- package/src/cjs/utils/helpers/CircleSectorHelper.js.map +1 -1
- package/src/cjs/utils/helpers/VEllipseHelper.d.ts +30 -0
- package/src/cjs/utils/helpers/VEllipseHelper.js +86 -0
- package/src/cjs/utils/helpers/VEllipseHelper.js.map +1 -0
- package/src/cjs/utils/helpers/VEllipseSectorHelper.d.ts +42 -3
- package/src/cjs/utils/helpers/VEllipseSectorHelper.js +107 -25
- package/src/cjs/utils/helpers/VEllipseSectorHelper.js.map +1 -1
- package/src/createDemoDrawables.js +3 -1
- package/src/esm/BezierPath.d.ts +41 -5
- package/src/esm/BezierPath.js +50 -2
- package/src/esm/BezierPath.js.map +1 -1
- package/src/esm/Bounds.d.ts +67 -3
- package/src/esm/Bounds.js +101 -3
- package/src/esm/Bounds.js.map +1 -1
- package/src/esm/Circle.d.ts +46 -4
- package/src/esm/Circle.js +79 -3
- package/src/esm/Circle.js.map +1 -1
- package/src/esm/CircleSector.d.ts +51 -2
- package/src/esm/CircleSector.js +108 -3
- package/src/esm/CircleSector.js.map +1 -1
- package/src/esm/CubicBezierCurve.d.ts +113 -7
- package/src/esm/CubicBezierCurve.js +277 -33
- package/src/esm/CubicBezierCurve.js.map +1 -1
- package/src/esm/Line.d.ts +38 -3
- package/src/esm/Line.js +62 -1
- package/src/esm/Line.js.map +1 -1
- package/src/esm/PlotBoilerplate.d.ts +4 -2
- package/src/esm/PlotBoilerplate.js +9 -12
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.d.ts +153 -6
- package/src/esm/Polygon.js +301 -23
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/Triangle.d.ts +73 -4
- package/src/esm/Triangle.js +91 -2
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/VEllipse.d.ts +62 -3
- package/src/esm/VEllipse.js +178 -17
- package/src/esm/VEllipse.js.map +1 -1
- package/src/esm/VEllipseSector.d.ts +86 -2
- package/src/esm/VEllipseSector.js +146 -7
- package/src/esm/VEllipseSector.js.map +1 -1
- package/src/esm/Vector.d.ts +12 -2
- package/src/esm/Vector.js +15 -2
- package/src/esm/Vector.js.map +1 -1
- package/src/esm/VertTuple.d.ts +39 -10
- package/src/esm/VertTuple.js +49 -11
- package/src/esm/VertTuple.js.map +1 -1
- package/src/esm/Vertex.d.ts +18 -2
- package/src/esm/Vertex.js +22 -2
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/draw.d.ts +1 -0
- package/src/esm/draw.js +2 -1
- package/src/esm/draw.js.map +1 -1
- package/src/esm/drawutilssvg.js +24 -0
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/geomutils.d.ts +32 -1
- package/src/esm/geomutils.js +47 -1
- package/src/esm/geomutils.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +39 -0
- package/src/esm/interfaces/core.js +2 -0
- package/src/esm/interfaces/core.js.map +1 -1
- package/src/esm/utils/algorithms/PolygonInset.d.ts +184 -0
- package/src/esm/utils/algorithms/PolygonInset.js +424 -0
- package/src/esm/utils/algorithms/PolygonInset.js.map +1 -0
- package/src/esm/utils/algorithms/clearDuplicateVertices.d.ts +5 -4
- package/src/esm/utils/algorithms/clearDuplicateVertices.js +6 -3
- package/src/esm/utils/algorithms/clearDuplicateVertices.js.map +1 -1
- package/src/esm/utils/algorithms/convexPolygonIncircle.d.ts +2 -1
- package/src/esm/utils/algorithms/convexPolygonIncircle.js +15 -7
- package/src/esm/utils/algorithms/convexPolygonIncircle.js.map +1 -1
- package/src/esm/utils/algorithms/createRandomizedPolygon.d.ts +14 -0
- package/src/esm/utils/algorithms/createRandomizedPolygon.js +28 -0
- package/src/esm/utils/algorithms/createRandomizedPolygon.js.map +1 -0
- package/src/esm/utils/algorithms/findPolygonSelfIntersections.d.ts +2 -1
- package/src/esm/utils/algorithms/findPolygonSelfIntersections.js +3 -3
- package/src/esm/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
- package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.d.ts +3 -2
- package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.js +11 -9
- package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
- package/src/esm/utils/createRandomizedPolygon.d.ts +14 -0
- package/src/esm/utils/createRandomizedPolygon.js +28 -0
- package/src/esm/utils/createRandomizedPolygon.js.map +1 -0
- package/src/esm/utils/detectDarkMode.js.map +1 -1
- package/src/esm/utils/dom/guiSizeToggler.d.ts +2 -1
- package/src/esm/utils/dom/guiSizeToggler.js +4 -2
- package/src/esm/utils/dom/guiSizeToggler.js.map +1 -1
- package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +9 -7
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js +35 -22
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/esm/utils/helpers/CircleSectorHelper.d.ts +10 -1
- package/src/esm/utils/helpers/CircleSectorHelper.js +19 -20
- package/src/esm/utils/helpers/CircleSectorHelper.js.map +1 -1
- package/src/esm/utils/helpers/VEllipseHelper.d.ts +30 -0
- package/src/esm/utils/helpers/VEllipseHelper.js +81 -0
- package/src/esm/utils/helpers/VEllipseHelper.js.map +1 -0
- package/src/esm/utils/helpers/VEllipseSectorHelper.d.ts +42 -3
- package/src/esm/utils/helpers/VEllipseSectorHelper.js +106 -24
- package/src/esm/utils/helpers/VEllipseSectorHelper.js.map +1 -1
- package/src/ts/BezierPath.ts +58 -5
- package/src/ts/Bounds.ts +110 -6
- package/src/ts/Circle.ts +87 -5
- package/src/ts/CircleSector.ts +115 -5
- package/src/ts/CubicBezierCurve.ts +332 -42
- package/src/ts/Line.ts +66 -3
- package/src/ts/PlotBoilerplate.ts +10 -12
- package/src/ts/Polygon.ts +329 -27
- package/src/ts/Triangle.ts +101 -5
- package/src/ts/VEllipse.ts +214 -19
- package/src/ts/VEllipseSector.ts +154 -8
- package/src/ts/Vector.ts +16 -2
- package/src/ts/VertTuple.ts +53 -13
- package/src/ts/Vertex.ts +24 -3
- package/src/ts/draw.ts +2 -1
- package/src/ts/drawutilssvg.ts +29 -0
- package/src/ts/geomutils.ts +49 -1
- package/src/ts/interfaces/core.ts +42 -0
- package/src/ts/utils/algorithms/PolygonInset.ts +529 -0
- package/src/ts/utils/algorithms/clearDuplicateVertices.ts +11 -8
- package/src/ts/utils/algorithms/convexPolygonIncircle.ts +82 -78
- package/src/ts/utils/algorithms/findPolygonSelfIntersections.ts +25 -26
- package/src/ts/utils/algorithms/splitPolygonToNonIntersecting.ts +92 -99
- package/src/ts/utils/createRandomizedPolygon.ts +31 -0
- package/src/ts/utils/detectDarkMode.ts +1 -3
- package/src/ts/utils/dom/guiSizeToggler.ts +4 -2
- package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +45 -29
- package/src/ts/utils/helpers/CircleSectorHelper.ts +115 -125
- package/src/ts/utils/helpers/VEllipseHelper.ts +113 -0
- package/src/ts/utils/helpers/VEllipseSectorHelper.ts +142 -25
package/src/esm/Polygon.js
CHANGED
|
@@ -28,7 +28,15 @@
|
|
|
28
28
|
* @modified 2023-09-25 Added the `Polygon.lineIntersections(Line,boolean)` function.
|
|
29
29
|
* @modified 2023-09-29 Added the `Polygon.closestLineIntersection(Line,boolean)` function.
|
|
30
30
|
* @modified 2023-11-24 Added the `Polygon.containsPolygon(Polygon)' function.
|
|
31
|
-
* @
|
|
31
|
+
* @modified 2024-10-12 Added the `getEdgeAt` method.
|
|
32
|
+
* @modified 2024-10-30 Added the `getEdges` method.
|
|
33
|
+
* @modified 2024-12-02 Added the `elimitateColinearEdges` method.
|
|
34
|
+
* @modified 2025-02-12 Added the `containsVerts` method to test multiple vertices for containment.
|
|
35
|
+
* @modified 2025-03-28 Added the `Polygon.utils.locateLineIntersecion` static helper method.
|
|
36
|
+
* @modified 2025-03-28 Added the `Polygon.lineIntersectionTangents` method.
|
|
37
|
+
* @modified 2025-04-09 Added the `Polygon.getCentroid` method.
|
|
38
|
+
* @modified 2025-05-16 Class `Polygon` now implements `IBounded`.
|
|
39
|
+
* @version 1.15.0
|
|
32
40
|
*
|
|
33
41
|
* @file Polygon
|
|
34
42
|
* @public
|
|
@@ -36,8 +44,11 @@
|
|
|
36
44
|
import { BezierPath } from "./BezierPath";
|
|
37
45
|
import { Bounds } from "./Bounds";
|
|
38
46
|
import { Line } from "./Line";
|
|
47
|
+
import { Triangle } from "./Triangle";
|
|
39
48
|
import { UIDGenerator } from "./UIDGenerator";
|
|
49
|
+
import { Vector } from "./Vector";
|
|
40
50
|
import { Vertex } from "./Vertex";
|
|
51
|
+
import { geomutils } from "./geomutils";
|
|
41
52
|
/**
|
|
42
53
|
* @classdesc A polygon class. Any polygon consists of an array of vertices; polygons can be open or closed.
|
|
43
54
|
*
|
|
@@ -64,15 +75,16 @@ export class Polygon {
|
|
|
64
75
|
**/
|
|
65
76
|
this.className = "Polygon";
|
|
66
77
|
this.uid = UIDGenerator.next();
|
|
67
|
-
if (typeof vertices == "undefined")
|
|
78
|
+
if (typeof vertices == "undefined") {
|
|
68
79
|
vertices = [];
|
|
80
|
+
}
|
|
69
81
|
this.vertices = vertices;
|
|
70
82
|
this.isOpen = isOpen || false;
|
|
71
83
|
}
|
|
72
84
|
/**
|
|
73
85
|
* Add a vertex to the end of the `vertices` array.
|
|
74
86
|
*
|
|
75
|
-
* @method
|
|
87
|
+
* @method addVertex
|
|
76
88
|
* @param {Vertex} vert - The vertex to add.
|
|
77
89
|
* @instance
|
|
78
90
|
* @memberof Polygon
|
|
@@ -80,6 +92,108 @@ export class Polygon {
|
|
|
80
92
|
addVertex(vert) {
|
|
81
93
|
this.vertices.push(vert);
|
|
82
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Add a vertex at a particular position of the `vertices` array.
|
|
97
|
+
*
|
|
98
|
+
* @method addVertexAt
|
|
99
|
+
* @param {Vertex} vert - The vertex to add.
|
|
100
|
+
* @param {number} index - The position to add the vertex at. Will be handled modulo.
|
|
101
|
+
* @instance
|
|
102
|
+
* @memberof Polygon
|
|
103
|
+
**/
|
|
104
|
+
addVertexAt(vert, index) {
|
|
105
|
+
// var moduloIndex = index % (this.vertices.length + 1);
|
|
106
|
+
this.vertices.splice(index, 0, vert);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get a new instance of the line at the given start index. The returned line will consist
|
|
110
|
+
* of the vertex at `vertIndex` and `vertIndex+1` (will be handled modulo).
|
|
111
|
+
*
|
|
112
|
+
* @method getEdgeAt
|
|
113
|
+
* @param {number} vertIndex - The vertex index of the line to start.
|
|
114
|
+
* @instance
|
|
115
|
+
* @memberof Polygon
|
|
116
|
+
* @return {Line}
|
|
117
|
+
**/
|
|
118
|
+
getEdgeAt(vertIndex) {
|
|
119
|
+
return new Line(this.getVertexAt(vertIndex), this.getVertexAt(vertIndex + 1));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Converts this polygon into a sequence of lines. Please note that each time
|
|
123
|
+
* this method is called new lines are created. The underlying line vertices are no clones
|
|
124
|
+
* (instances).
|
|
125
|
+
*
|
|
126
|
+
* @method getEdges
|
|
127
|
+
* @instance
|
|
128
|
+
* @memberof Polygon
|
|
129
|
+
* @return {Array<Line>}
|
|
130
|
+
*/
|
|
131
|
+
getEdges() {
|
|
132
|
+
const lines = [];
|
|
133
|
+
for (var i = 0; i + 1 < this.vertices.length; i++) {
|
|
134
|
+
// var line = this.getLineAt(i).clone();
|
|
135
|
+
lines.push(this.getEdgeAt(i));
|
|
136
|
+
}
|
|
137
|
+
if (!this.isOpen && this.vertices.length > 0) {
|
|
138
|
+
lines.push(this.getEdgeAt(this.vertices.length - 1));
|
|
139
|
+
}
|
|
140
|
+
return lines;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Checks if the angle at the given polygon vertex (index) is acute. Please not that this is
|
|
144
|
+
* only working for clockwise polygons. If this polygon is not clockwise please use the
|
|
145
|
+
* `isClockwise` method and reverse polygon vertices if needed.
|
|
146
|
+
*
|
|
147
|
+
* @method isAngleAcute
|
|
148
|
+
* @instance
|
|
149
|
+
* @memberof Polygon
|
|
150
|
+
* @param {number} vertIndex - The index of the polygon vertex to check.
|
|
151
|
+
* @returns {boolean} `true` is angle is acute, `false` is obtuse.
|
|
152
|
+
*/
|
|
153
|
+
getInnerAngleAt(vertIndex) {
|
|
154
|
+
const p2 = this.vertices[vertIndex];
|
|
155
|
+
const p1 = this.vertices[(vertIndex + this.vertices.length - 1) % this.vertices.length].clone();
|
|
156
|
+
const p3 = this.vertices[(vertIndex + 1) % this.vertices.length].clone();
|
|
157
|
+
// See
|
|
158
|
+
// https://math.stackexchange.com/questions/149959/how-to-find-the-interior-angle-of-an-irregular-pentagon-or-polygon
|
|
159
|
+
// π−arccos((P2−P1)⋅(P3−P2)|P2−P1||P3−P2|)
|
|
160
|
+
// Check if triangle is acute (will be used later)
|
|
161
|
+
// Acute angles and obtuse angles need to be handled differently.
|
|
162
|
+
const isAcute = this.isAngleAcute(vertIndex);
|
|
163
|
+
// Differences
|
|
164
|
+
const zero = new Vertex(0, 0);
|
|
165
|
+
const p2mp1 = new Vertex(p2.x - p1.x, p2.y - p1.y);
|
|
166
|
+
const p3mp2 = new Vertex(p3.x - p2.x, p3.y - p2.y);
|
|
167
|
+
const p2mp1_len = zero.distance(p2mp1);
|
|
168
|
+
const p3mp2_len = zero.distance(p3mp2);
|
|
169
|
+
// Dot products
|
|
170
|
+
const dotProduct = geomutils.dotProduct(p2mp1, p3mp2);
|
|
171
|
+
const lengthProduct = p2mp1_len * p3mp2_len;
|
|
172
|
+
if (isAcute) {
|
|
173
|
+
return Math.PI - Math.acos(dotProduct / lengthProduct);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
return Math.PI + Math.acos(dotProduct / lengthProduct);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Checks if the angle at the given polygon vertex (index) is acute.
|
|
181
|
+
*
|
|
182
|
+
* @method isAngleAcute
|
|
183
|
+
* @instance
|
|
184
|
+
* @memberof Polygon
|
|
185
|
+
* @param {number} vertIndex - The index of the polygon vertex to check.
|
|
186
|
+
* @returns {boolean} `true` is angle is acute, `false` is obtuse.
|
|
187
|
+
*/
|
|
188
|
+
isAngleAcute(vertIndex) {
|
|
189
|
+
const A = this.vertices[(vertIndex + this.vertices.length - 1) % this.vertices.length].clone();
|
|
190
|
+
const B = this.vertices[vertIndex];
|
|
191
|
+
const C = this.vertices[(vertIndex + 1) % this.vertices.length].clone();
|
|
192
|
+
// Find local winding number for triangle A B C
|
|
193
|
+
const windingNumber = Triangle.utils.determinant(A, B, C);
|
|
194
|
+
// console.log("vertIndex", vertIndex, "windingNumber", windingNumber);
|
|
195
|
+
return windingNumber < 0;
|
|
196
|
+
}
|
|
83
197
|
/**
|
|
84
198
|
* Get the polygon vertex at the given position (index).
|
|
85
199
|
*
|
|
@@ -90,17 +204,19 @@ export class Polygon {
|
|
|
90
204
|
* - getVertexAt( vertices.length + k ) == getVertexAt( k )
|
|
91
205
|
* - getVertexAt( -k ) == getVertexAt( vertices.length -k )
|
|
92
206
|
*
|
|
93
|
-
* @
|
|
207
|
+
* @method getVertexAt
|
|
94
208
|
* @param {number} index - The index of the desired vertex.
|
|
95
209
|
* @instance
|
|
96
210
|
* @memberof Polygon
|
|
97
211
|
* @return {Vertex} At the given index.
|
|
98
212
|
**/
|
|
99
213
|
getVertexAt(index) {
|
|
100
|
-
if (index < 0)
|
|
214
|
+
if (index < 0) {
|
|
101
215
|
return this.vertices[this.vertices.length - (Math.abs(index) % this.vertices.length)];
|
|
102
|
-
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
103
218
|
return this.vertices[index % this.vertices.length];
|
|
219
|
+
}
|
|
104
220
|
}
|
|
105
221
|
/**
|
|
106
222
|
* Move the polygon's vertices by the given amount.
|
|
@@ -124,7 +240,7 @@ export class Polygon {
|
|
|
124
240
|
* https://stackoverflow.com/questions/22521982/check-if-point-inside-a-polygon
|
|
125
241
|
*
|
|
126
242
|
* @method containsVert
|
|
127
|
-
* @param {XYCoords} vert - The vertex to check.
|
|
243
|
+
* @param {XYCoords} vert - The vertex to check.
|
|
128
244
|
* @return {boolean} True if the passed vertex is inside this polygon. The polygon is considered closed.
|
|
129
245
|
* @instance
|
|
130
246
|
* @memberof Polygon
|
|
@@ -142,6 +258,20 @@ export class Polygon {
|
|
|
142
258
|
}
|
|
143
259
|
return inside;
|
|
144
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Check if all given vertices are inside this polygon.<br>
|
|
263
|
+
* <br>
|
|
264
|
+
* This method just uses the `Polygon.containsVert` method.
|
|
265
|
+
*
|
|
266
|
+
* @method containsVerts
|
|
267
|
+
* @param {XYCoords[]} verts - The vertices to check.
|
|
268
|
+
* @return {boolean} True if all passed vertices are inside this polygon. The polygon is considered closed.
|
|
269
|
+
* @instance
|
|
270
|
+
* @memberof Polygon
|
|
271
|
+
**/
|
|
272
|
+
containsVerts(verts) {
|
|
273
|
+
return verts.every((vert) => this.containsVert(vert));
|
|
274
|
+
}
|
|
145
275
|
/**
|
|
146
276
|
* Check if the passed polygon is completly contained inside this polygon.
|
|
147
277
|
*
|
|
@@ -204,7 +334,8 @@ export class Polygon {
|
|
|
204
334
|
* @return {boolean}
|
|
205
335
|
*/
|
|
206
336
|
isClockwise() {
|
|
207
|
-
return Polygon.utils.signedArea(this.vertices) < 0;
|
|
337
|
+
// return Polygon.utils.signedArea(this.vertices) < 0;
|
|
338
|
+
return Polygon.utils.isClockwise(this.vertices);
|
|
208
339
|
}
|
|
209
340
|
/**
|
|
210
341
|
* Get the perimeter of this polygon.
|
|
@@ -263,9 +394,66 @@ export class Polygon {
|
|
|
263
394
|
}
|
|
264
395
|
return this;
|
|
265
396
|
}
|
|
397
|
+
/**
|
|
398
|
+
* Get the mean `center` of this polygon by calculating the mean value of all vertices.
|
|
399
|
+
*
|
|
400
|
+
* Mean: (v[0] + v[1] + ... v[n-1]) / n
|
|
401
|
+
*
|
|
402
|
+
* @method getMeanCenter
|
|
403
|
+
* @instance
|
|
404
|
+
* @memberof Polygon
|
|
405
|
+
* @return {Vertex|null} `null` is no vertices are available.
|
|
406
|
+
*/
|
|
407
|
+
getMeanCenter() {
|
|
408
|
+
if (this.vertices.length === 0) {
|
|
409
|
+
return null;
|
|
410
|
+
}
|
|
411
|
+
const center = this.vertices[0].clone();
|
|
412
|
+
for (var i = 1; i < this.vertices.length; i++) {
|
|
413
|
+
center.add(this.vertices[i]);
|
|
414
|
+
}
|
|
415
|
+
center.x /= this.vertices.length;
|
|
416
|
+
center.y /= this.vertices.length;
|
|
417
|
+
return center;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Get centroid.
|
|
421
|
+
* Centroids define the barycenter of any non self-intersecting convex polygon.
|
|
422
|
+
*
|
|
423
|
+
* If the polygon is self intersecting or non konvex then the barycenter is not well defined.
|
|
424
|
+
*
|
|
425
|
+
* https://mathworld.wolfram.com/PolygonCentroid.html
|
|
426
|
+
*
|
|
427
|
+
* @method getCentroid
|
|
428
|
+
* @instance
|
|
429
|
+
* @memberof Polygon
|
|
430
|
+
* @returns {Vertex|null}
|
|
431
|
+
*/
|
|
432
|
+
getCentroid() {
|
|
433
|
+
if (this.vertices.length === 0) {
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
const center = new Vertex(0.0, 0.0);
|
|
437
|
+
const n = this.vertices.length;
|
|
438
|
+
for (var i = 0; i < n; i++) {
|
|
439
|
+
// center.add(this.vertices[i]);
|
|
440
|
+
const cur = this.vertices[i];
|
|
441
|
+
const next = this.vertices[(i + 1) % n];
|
|
442
|
+
var factor = cur.x * next.y - next.x * cur.y;
|
|
443
|
+
center.x += (cur.x + next.x) * factor;
|
|
444
|
+
center.y += (cur.y + next.y) * factor;
|
|
445
|
+
}
|
|
446
|
+
const area = this.area();
|
|
447
|
+
center.x *= 1 / (6 * area);
|
|
448
|
+
center.y *= 1 / (6 * area);
|
|
449
|
+
return center;
|
|
450
|
+
}
|
|
451
|
+
//--- BEGIN --- Implement interface `Intersectable`
|
|
266
452
|
/**
|
|
267
453
|
* Get all line intersections with this polygon.
|
|
268
454
|
*
|
|
455
|
+
* This method returns all intersections (as vertices) with this shape. The returned array of vertices is in no specific order.
|
|
456
|
+
*
|
|
269
457
|
* See demo `47-closest-vector-projection-on-polygon` for how it works.
|
|
270
458
|
*
|
|
271
459
|
* @param {VertTuple} line - The line to find intersections with.
|
|
@@ -274,21 +462,27 @@ export class Polygon {
|
|
|
274
462
|
*/
|
|
275
463
|
lineIntersections(line, inVectorBoundsOnly = false) {
|
|
276
464
|
// Find the intersections of all lines inside the edge bounds
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
const intersection = polyLine.intersection(line);
|
|
281
|
-
// true => only inside bounds
|
|
282
|
-
// ignore last edge if open
|
|
283
|
-
if ((!this.isOpen || i + 1 !== this.vertices.length) &&
|
|
284
|
-
intersection !== null &&
|
|
285
|
-
polyLine.hasPoint(intersection, true) &&
|
|
286
|
-
(!inVectorBoundsOnly || line.hasPoint(intersection, inVectorBoundsOnly))) {
|
|
287
|
-
intersectionPoints.push(intersection);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
return intersectionPoints;
|
|
465
|
+
return Polygon.utils
|
|
466
|
+
.locateLineIntersecion(line, this.vertices, this.isOpen, inVectorBoundsOnly)
|
|
467
|
+
.map(intersectionTuple => intersectionTuple.intersectionPoint);
|
|
291
468
|
}
|
|
469
|
+
/**
|
|
470
|
+
* Get all line intersections of this polygon and their tangents along the shape.
|
|
471
|
+
*
|
|
472
|
+
* This method returns all intersection tangents (as vectors) with this shape. The returned array of vectors is in no specific order.
|
|
473
|
+
*
|
|
474
|
+
* @param line
|
|
475
|
+
* @param inVectorBoundsOnly
|
|
476
|
+
* @returns
|
|
477
|
+
*/
|
|
478
|
+
lineIntersectionTangents(line, inVectorBoundsOnly = false) {
|
|
479
|
+
// Find the intersection tangents of all lines inside the edge bounds
|
|
480
|
+
return Polygon.utils.locateLineIntersecion(line, this.vertices, this.isOpen, inVectorBoundsOnly).map(intersectionTuple => {
|
|
481
|
+
const polyLine = this.getEdgeAt(intersectionTuple.edgeIndex);
|
|
482
|
+
return new Vector(polyLine.a.clone(), polyLine.b.clone()).moveTo(intersectionTuple.intersectionPoint);
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
//--- END --- Implement interface `Intersectable`
|
|
292
486
|
/**
|
|
293
487
|
* Get the closest line-polygon-intersection point (closest the line point A).
|
|
294
488
|
*
|
|
@@ -389,6 +583,7 @@ export class Polygon {
|
|
|
389
583
|
}
|
|
390
584
|
return result;
|
|
391
585
|
}
|
|
586
|
+
//--- BEGIN --- Implement interface `IBounded`
|
|
392
587
|
/**
|
|
393
588
|
* Get the bounding box (bounds) of this polygon.
|
|
394
589
|
*
|
|
@@ -400,14 +595,67 @@ export class Polygon {
|
|
|
400
595
|
getBounds() {
|
|
401
596
|
return Bounds.computeFromVertices(this.vertices);
|
|
402
597
|
}
|
|
598
|
+
//--- END --- Implement interface `IBounded`
|
|
403
599
|
/**
|
|
404
600
|
* Create a deep copy of this polygon.
|
|
405
601
|
*
|
|
602
|
+
* @method clone
|
|
603
|
+
* @instance
|
|
604
|
+
* @memberof Polygon
|
|
406
605
|
* @return {Polygon} The cloned polygon.
|
|
407
606
|
*/
|
|
408
607
|
clone() {
|
|
409
608
|
return new Polygon(this.vertices.map(vert => vert.clone()), this.isOpen);
|
|
410
609
|
}
|
|
610
|
+
/**
|
|
611
|
+
* Create a new polygon without colinear adjacent edges. This method does not midify the current polygon
|
|
612
|
+
* but creates a new one.
|
|
613
|
+
*
|
|
614
|
+
* Please note that this method does NOT create deep clones of the vertices. Use Polygon.clone() if you need to.
|
|
615
|
+
*
|
|
616
|
+
* Please also note that the `tolerance` may become really large here, as the denominator of two closely
|
|
617
|
+
* parallel lines is usually pretty large. See the demo `57-eliminate-colinear-polygon-edges` to get
|
|
618
|
+
* an impression of how denominators work.
|
|
619
|
+
*
|
|
620
|
+
* @method elimitateColinearEdges
|
|
621
|
+
* @instance
|
|
622
|
+
* @memberof Polygon
|
|
623
|
+
* @param {number?} tolerance - (default is 1.0) The epsilon to detect co-linear edges.
|
|
624
|
+
* @return {Polygon} A new polygon without co-linear adjacent edges – respective the given epsilon.
|
|
625
|
+
*/
|
|
626
|
+
elimitateColinearEdges(tolerance) {
|
|
627
|
+
const eps = typeof tolerance === "undefined" ? 1.0 : tolerance;
|
|
628
|
+
const verts = this.vertices.slice(); // Creates a shallow copy
|
|
629
|
+
let i = 0;
|
|
630
|
+
var lineA = new Line(new Vertex(), new Vertex());
|
|
631
|
+
var lineB = new Line(new Vertex(), new Vertex());
|
|
632
|
+
while (i + 1 < verts.length && verts.length > 2) {
|
|
633
|
+
const vertA = verts[i];
|
|
634
|
+
const vertB = verts[(i + 1) % verts.length];
|
|
635
|
+
lineA.a = vertA;
|
|
636
|
+
lineA.b = vertB;
|
|
637
|
+
lineB.a = vertB;
|
|
638
|
+
let areColinear = false;
|
|
639
|
+
let j = i + 2;
|
|
640
|
+
do {
|
|
641
|
+
let vertC = verts[j % verts.length];
|
|
642
|
+
lineB.b = vertC;
|
|
643
|
+
areColinear = lineA.colinear(lineB, eps);
|
|
644
|
+
// console.log("are colinear?", i, i + 1, j, areColinear);
|
|
645
|
+
if (areColinear) {
|
|
646
|
+
j++;
|
|
647
|
+
}
|
|
648
|
+
} while (areColinear);
|
|
649
|
+
// Now j points to the first vertex that's NOT colinear to the current lineA
|
|
650
|
+
// -> delete all vertices in between
|
|
651
|
+
if (j - i > 2) {
|
|
652
|
+
// Means: there have been 'colinear vertices' in between
|
|
653
|
+
verts.splice(i + 1, j - i - 2);
|
|
654
|
+
}
|
|
655
|
+
i++;
|
|
656
|
+
}
|
|
657
|
+
return new Polygon(verts, this.isOpen);
|
|
658
|
+
}
|
|
411
659
|
/**
|
|
412
660
|
* Convert this polygon to a sequence of quadratic Bézier curves.<br>
|
|
413
661
|
* <br>
|
|
@@ -507,8 +755,9 @@ export class Polygon {
|
|
|
507
755
|
**/
|
|
508
756
|
toCubicBezierSVGString(threshold) {
|
|
509
757
|
var qdata = this.toCubicBezierData(threshold);
|
|
510
|
-
if (qdata.length == 0)
|
|
758
|
+
if (qdata.length == 0) {
|
|
511
759
|
return "";
|
|
760
|
+
}
|
|
512
761
|
var buffer = ["M " + qdata[0].x + " " + qdata[0].y];
|
|
513
762
|
for (var i = 1; i < qdata.length; i += 3) {
|
|
514
763
|
buffer.push("C " +
|
|
@@ -579,6 +828,9 @@ Polygon.utils = {
|
|
|
579
828
|
}
|
|
580
829
|
return Math.abs(total);
|
|
581
830
|
},
|
|
831
|
+
isClockwise(vertices) {
|
|
832
|
+
return Polygon.utils.signedArea(vertices) < 0;
|
|
833
|
+
},
|
|
582
834
|
/**
|
|
583
835
|
* Calulate the signed polyon area by interpreting the polygon as a matrix
|
|
584
836
|
* and calculating its determinant.
|
|
@@ -594,6 +846,32 @@ Polygon.utils = {
|
|
|
594
846
|
sum += (vertices[j].x - vertices[i].x) * (vertices[i].y + vertices[j].y);
|
|
595
847
|
}
|
|
596
848
|
return sum;
|
|
849
|
+
},
|
|
850
|
+
/**
|
|
851
|
+
* Find intersections of a line with a polygon (vertices).
|
|
852
|
+
*
|
|
853
|
+
* @param {VertTuple<any>} line - The line to find intersections with.
|
|
854
|
+
* @param {Array<Vertex>} vertices - The polygon's vertices.
|
|
855
|
+
* @param {boolean} isOpen - True if the polygon is open, false otherwise.
|
|
856
|
+
* @param {boolean} inVectorBoundsOnly - If only intersections in strict vector bounds should be returned.
|
|
857
|
+
* @returns
|
|
858
|
+
*/
|
|
859
|
+
locateLineIntersecion(line, vertices, isOpen, inVectorBoundsOnly) {
|
|
860
|
+
// Find the intersections of all lines inside the edge bounds
|
|
861
|
+
const intersectionPoints = [];
|
|
862
|
+
var n = isOpen ? vertices.length - 1 : vertices.length;
|
|
863
|
+
for (var i = 0; i < n; i++) {
|
|
864
|
+
const polyLine = new Line(vertices[i % n], vertices[(i + 1) % n]);
|
|
865
|
+
const intersection = polyLine.intersection(line);
|
|
866
|
+
// true => only inside bounds
|
|
867
|
+
// ignore last edge if open
|
|
868
|
+
if (intersection !== null &&
|
|
869
|
+
polyLine.hasPoint(intersection, true) &&
|
|
870
|
+
(!inVectorBoundsOnly || line.hasPoint(intersection, inVectorBoundsOnly))) {
|
|
871
|
+
intersectionPoints.push({ edgeIndex: i, intersectionPoint: intersection });
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
return intersectionPoints;
|
|
597
875
|
}
|
|
598
876
|
};
|
|
599
877
|
//# sourceMappingURL=Polygon.js.map
|
package/src/esm/Polygon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../ts/Polygon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../ts/Polygon.ts"],"names":[],"mappings":"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"}
|
package/src/esm/Triangle.d.ts
CHANGED
|
@@ -21,7 +21,13 @@
|
|
|
21
21
|
* @modified 2021-01-22 Always updating circumcircle when retieving it.
|
|
22
22
|
* @modified 2022-02-02 Added the `destroy` method.
|
|
23
23
|
* @modified 2022-02-02 Cleared the `Triangle.toSVGString` function (deprecated). Use `drawutilssvg` instead.
|
|
24
|
-
* @
|
|
24
|
+
* @modified 2024-11-22 Added static utility function Triangle.utils.determinant; adapted method `determinant`.
|
|
25
|
+
* @modified 2024-11-22 Changing visibility of `Triangle.utils` from `private` to `public`.
|
|
26
|
+
* @modified 2025-14-16 Class `Triangle` now implements interface `Intersectable`.
|
|
27
|
+
* @modified 2025-14-16 Class `Triangle` now implements interface `IBounded`.
|
|
28
|
+
* @modified 2025-14-16 Class `Triangle` now implements interface `Intersectable`.
|
|
29
|
+
* @modified 2025-14-16 Added method `Triangle.move`.
|
|
30
|
+
* @version 2.10.0
|
|
25
31
|
*
|
|
26
32
|
* @file Triangle
|
|
27
33
|
* @fileoverview A simple triangle class: three vertices.
|
|
@@ -29,9 +35,12 @@
|
|
|
29
35
|
**/
|
|
30
36
|
import { Bounds } from "./Bounds";
|
|
31
37
|
import { Circle } from "./Circle";
|
|
38
|
+
import { Line } from "./Line";
|
|
32
39
|
import { Polygon } from "./Polygon";
|
|
40
|
+
import { Vector } from "./Vector";
|
|
41
|
+
import { VertTuple } from "./VertTuple";
|
|
33
42
|
import { Vertex } from "./Vertex";
|
|
34
|
-
import { SVGSerializable, UID } from "./interfaces";
|
|
43
|
+
import { IBounded, Intersectable, SVGSerializable, UID, XYCoords } from "./interfaces";
|
|
35
44
|
/**
|
|
36
45
|
* @classdesc A triangle class for triangulations.
|
|
37
46
|
*
|
|
@@ -49,7 +58,7 @@ import { SVGSerializable, UID } from "./interfaces";
|
|
|
49
58
|
* @requires geomutils
|
|
50
59
|
*
|
|
51
60
|
*/
|
|
52
|
-
export declare class Triangle implements SVGSerializable {
|
|
61
|
+
export declare class Triangle implements IBounded, SVGSerializable, Intersectable {
|
|
53
62
|
/**
|
|
54
63
|
* Required to generate proper CSS classes and other class related IDs.
|
|
55
64
|
**/
|
|
@@ -173,6 +182,25 @@ export declare class Triangle implements SVGSerializable {
|
|
|
173
182
|
* @memberof Triangle
|
|
174
183
|
*/
|
|
175
184
|
scaleToCentroid(factor: number): Triangle;
|
|
185
|
+
/**
|
|
186
|
+
* Get the bounding box (bounds) of this Triangle.
|
|
187
|
+
*
|
|
188
|
+
* @method getBounds
|
|
189
|
+
* @instance
|
|
190
|
+
* @memberof Triangle
|
|
191
|
+
* @return {Bounds} The rectangular bounds of this Triangle.
|
|
192
|
+
**/
|
|
193
|
+
getBounds(): Bounds;
|
|
194
|
+
/**
|
|
195
|
+
* Move the Triangle's vertices by the given amount.
|
|
196
|
+
*
|
|
197
|
+
* @method move
|
|
198
|
+
* @param {XYCoords} amount - The amount to move.
|
|
199
|
+
* @instance
|
|
200
|
+
* @memberof Triangle
|
|
201
|
+
* @return {Triangle} this for chaining
|
|
202
|
+
**/
|
|
203
|
+
move(amount: XYCoords): Triangle;
|
|
176
204
|
/**
|
|
177
205
|
* Get the circumcircle of this triangle.
|
|
178
206
|
*
|
|
@@ -248,6 +276,29 @@ export declare class Triangle implements SVGSerializable {
|
|
|
248
276
|
* @memberof Triangle
|
|
249
277
|
*/
|
|
250
278
|
bounds(): Bounds;
|
|
279
|
+
/**
|
|
280
|
+
* Get all line intersections with this polygon.
|
|
281
|
+
*
|
|
282
|
+
* This method returns all intersections (as vertices) with this shape. The returned array of vertices is in no specific order.
|
|
283
|
+
*
|
|
284
|
+
* See demo `47-closest-vector-projection-on-polygon` for how it works.
|
|
285
|
+
*
|
|
286
|
+
* @param {VertTuple} line - The line to find intersections with.
|
|
287
|
+
* @param {boolean} inVectorBoundsOnly - If set to true only intersecion points on the passed vector are returned (located strictly between start and end vertex).
|
|
288
|
+
* @returns {Array<Vertex>} - An array of all intersections within the polygon bounds.
|
|
289
|
+
*/
|
|
290
|
+
lineIntersections(line: VertTuple<any>, inVectorBoundsOnly?: boolean): Array<Vertex>;
|
|
291
|
+
/**
|
|
292
|
+
* Get all line intersections of this polygon and their tangents along the shape.
|
|
293
|
+
*
|
|
294
|
+
* This method returns all intersection tangents (as vectors) with this shape. The returned array of vectors is in no specific order.
|
|
295
|
+
*
|
|
296
|
+
* @param line
|
|
297
|
+
* @param inVectorBoundsOnly
|
|
298
|
+
* @returns
|
|
299
|
+
*/
|
|
300
|
+
lineIntersectionTangents(line: VertTuple<any>, inVectorBoundsOnly?: boolean): Array<Vector>;
|
|
301
|
+
getEdgeAt(edgeIndex: number): Line;
|
|
251
302
|
/**
|
|
252
303
|
* Convert this triangle to a polygon instance.
|
|
253
304
|
*
|
|
@@ -319,5 +370,23 @@ export declare class Triangle implements SVGSerializable {
|
|
|
319
370
|
* should not be used.
|
|
320
371
|
*/
|
|
321
372
|
destroy(): void;
|
|
322
|
-
|
|
373
|
+
static utils: {
|
|
374
|
+
max3(a: number, b: number, c: number): number;
|
|
375
|
+
min3(a: number, b: number, c: number): number;
|
|
376
|
+
signedArea(p0x: number, p0y: number, p1x: number, p1y: number, p2x: number, p2y: number): number;
|
|
377
|
+
/**
|
|
378
|
+
* Used by the containsPoint() function.
|
|
379
|
+
*
|
|
380
|
+
* @private
|
|
381
|
+
**/
|
|
382
|
+
pointIsInTriangle(px: number, py: number, p0x: number, p0y: number, p1x: number, p1y: number, p2x: number, p2y: number): boolean;
|
|
383
|
+
/**
|
|
384
|
+
* Calculate the determinant of the three vertices a, b and c (in this order).
|
|
385
|
+
* @param {XYCords} a - The first vertex.
|
|
386
|
+
* @param {XYCords} b - The first vertex.
|
|
387
|
+
* @param {XYCords} c - The first vertex.
|
|
388
|
+
* @returns {nmber}
|
|
389
|
+
*/
|
|
390
|
+
determinant(a: XYCoords, b: XYCoords, c: XYCoords): number;
|
|
391
|
+
};
|
|
323
392
|
}
|