plotboilerplate 1.12.10 → 1.16.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 +5 -1
- package/changelog.md +50 -0
- package/dist/index.esm.js +999 -510
- 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 +1013 -509
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +1 -1
- package/src/cjs/BezierPath.d.ts +45 -2
- package/src/cjs/BezierPath.js +114 -18
- package/src/cjs/BezierPath.js.map +1 -1
- package/src/cjs/Circle.d.ts +25 -10
- package/src/cjs/Circle.js +38 -33
- package/src/cjs/Circle.js.map +1 -1
- package/src/cjs/CircleSector.d.ts +27 -13
- package/src/cjs/CircleSector.js +38 -23
- package/src/cjs/CircleSector.js.map +1 -1
- package/src/cjs/CubicBezierCurve.d.ts +17 -1
- package/src/cjs/CubicBezierCurve.js +78 -79
- package/src/cjs/CubicBezierCurve.js.map +1 -1
- package/src/cjs/KeyHandler.d.ts +10 -3
- package/src/cjs/KeyHandler.js +28 -23
- package/src/cjs/KeyHandler.js.map +1 -1
- package/src/cjs/Line.d.ts +2 -1
- package/src/cjs/Line.js +19 -18
- package/src/cjs/Line.js.map +1 -1
- package/src/cjs/MouseHandler.js +43 -53
- package/src/cjs/MouseHandler.js.map +1 -1
- package/src/cjs/PBImage.d.ts +16 -1
- package/src/cjs/PBImage.js +13 -3
- package/src/cjs/PBImage.js.map +1 -1
- package/src/cjs/PBText.d.ts +130 -0
- package/src/cjs/PBText.js +76 -0
- package/src/cjs/PBText.js.map +1 -0
- package/src/cjs/PlotBoilerplate.d.ts +2 -1
- package/src/cjs/PlotBoilerplate.js +44 -16
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.d.ts +37 -1
- package/src/cjs/Polygon.js +131 -54
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/Triangle.d.ts +16 -1
- package/src/cjs/Triangle.js +50 -54
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/VEllipse.d.ts +16 -1
- package/src/cjs/VEllipse.js +25 -12
- package/src/cjs/VEllipse.js.map +1 -1
- package/src/cjs/VEllipseSector.d.ts +15 -1
- package/src/cjs/VEllipseSector.js +11 -1
- package/src/cjs/VEllipseSector.js.map +1 -1
- package/src/cjs/Vector.d.ts +3 -1
- package/src/cjs/Vector.js +32 -36
- package/src/cjs/Vector.js.map +1 -1
- package/src/cjs/VertTuple.d.ts +15 -1
- package/src/cjs/VertTuple.js +14 -19
- package/src/cjs/VertTuple.js.map +1 -1
- package/src/cjs/Vertex.d.ts +66 -4
- package/src/cjs/Vertex.js +99 -17
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/VertexListeners.d.ts +12 -8
- package/src/cjs/VertexListeners.js +18 -25
- package/src/cjs/VertexListeners.js.map +1 -1
- package/src/cjs/draw.d.ts +30 -2
- package/src/cjs/draw.js +51 -6
- package/src/cjs/draw.js.map +1 -1
- package/src/cjs/drawgl.d.ts +29 -2
- package/src/cjs/drawgl.js +21 -4
- package/src/cjs/drawgl.js.map +1 -1
- package/src/cjs/drawutilssvg.d.ts +25 -7
- package/src/cjs/drawutilssvg.js +62 -14
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/entry.js +1 -0
- package/src/cjs/index.d.ts +1 -0
- package/src/cjs/index.js +1 -0
- package/src/cjs/index.js.map +1 -1
- package/src/cjs/interfaces/DrawLib.d.ts +27 -6
- package/src/cjs/interfaces/DrawLib.js +3 -0
- package/src/cjs/interfaces/DrawLib.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +9 -1
- package/src/cjs/interfaces/core.js +1 -0
- package/src/cjs/interfaces/core.js.map +1 -1
- package/src/cjs/utils/creategui.js +1 -1
- package/src/cjs/utils/findInVertexArray.d.ts +19 -0
- package/src/cjs/utils/findInVertexArray.js +29 -0
- package/src/cjs/utils/findInVertexArray.js.map +1 -0
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +55 -28
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
- package/src/cjs/utils/io/DndFileHandler.js +112 -0
- package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
- package/src/cjs/utils/io/FileDrop.d.ts +98 -0
- package/src/cjs/utils/io/FileDrop.js +142 -0
- package/src/cjs/utils/io/FileDrop.js.map +1 -0
- package/src/esm/BezierPath.d.ts +45 -2
- package/src/esm/BezierPath.js +114 -18
- package/src/esm/BezierPath.js.map +1 -1
- package/src/esm/Circle.d.ts +25 -10
- package/src/esm/Circle.js +38 -33
- package/src/esm/Circle.js.map +1 -1
- package/src/esm/CircleSector.d.ts +27 -13
- package/src/esm/CircleSector.js +38 -23
- package/src/esm/CircleSector.js.map +1 -1
- package/src/esm/CubicBezierCurve.d.ts +17 -1
- package/src/esm/CubicBezierCurve.js +78 -79
- package/src/esm/CubicBezierCurve.js.map +1 -1
- package/src/esm/KeyHandler.d.ts +10 -3
- package/src/esm/KeyHandler.js +28 -23
- package/src/esm/KeyHandler.js.map +1 -1
- package/src/esm/Line.d.ts +2 -1
- package/src/esm/Line.js +19 -18
- package/src/esm/Line.js.map +1 -1
- package/src/esm/MouseHandler.js +43 -53
- package/src/esm/MouseHandler.js.map +1 -1
- package/src/esm/PBImage.d.ts +16 -1
- package/src/esm/PBImage.js +13 -3
- package/src/esm/PBImage.js.map +1 -1
- package/src/esm/PBText.d.ts +130 -0
- package/src/esm/PBText.js +71 -0
- package/src/esm/PBText.js.map +1 -0
- package/src/esm/PlotBoilerplate.d.ts +2 -1
- package/src/esm/PlotBoilerplate.js +44 -16
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.d.ts +37 -1
- package/src/esm/Polygon.js +131 -54
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/Triangle.d.ts +16 -1
- package/src/esm/Triangle.js +50 -54
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/VEllipse.d.ts +16 -1
- package/src/esm/VEllipse.js +25 -12
- package/src/esm/VEllipse.js.map +1 -1
- package/src/esm/VEllipseSector.d.ts +15 -1
- package/src/esm/VEllipseSector.js +11 -1
- package/src/esm/VEllipseSector.js.map +1 -1
- package/src/esm/Vector.d.ts +3 -1
- package/src/esm/Vector.js +32 -36
- package/src/esm/Vector.js.map +1 -1
- package/src/esm/VertTuple.d.ts +15 -1
- package/src/esm/VertTuple.js +14 -19
- package/src/esm/VertTuple.js.map +1 -1
- package/src/esm/Vertex.d.ts +66 -4
- package/src/esm/Vertex.js +99 -17
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/VertexListeners.d.ts +12 -8
- package/src/esm/VertexListeners.js +18 -25
- package/src/esm/VertexListeners.js.map +1 -1
- package/src/esm/draw.d.ts +30 -2
- package/src/esm/draw.js +51 -6
- package/src/esm/draw.js.map +1 -1
- package/src/esm/drawgl.d.ts +29 -2
- package/src/esm/drawgl.js +21 -4
- package/src/esm/drawgl.js.map +1 -1
- package/src/esm/drawutilssvg.d.ts +25 -7
- package/src/esm/drawutilssvg.js +62 -14
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/entry.js +1 -0
- package/src/esm/index.d.ts +1 -0
- package/src/esm/index.js +1 -0
- package/src/esm/index.js.map +1 -1
- package/src/esm/interfaces/DrawLib.d.ts +27 -6
- package/src/esm/interfaces/DrawLib.js +3 -0
- package/src/esm/interfaces/DrawLib.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +9 -1
- package/src/esm/interfaces/core.js +1 -0
- package/src/esm/interfaces/core.js.map +1 -1
- package/src/esm/utils/findInVertexArray.d.ts +19 -0
- package/src/esm/utils/findInVertexArray.js +25 -0
- package/src/esm/utils/findInVertexArray.js.map +1 -0
- package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js +54 -28
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
- package/src/esm/utils/io/DndFileHandler.js +106 -0
- package/src/esm/utils/io/DndFileHandler.js.map +1 -0
- package/src/esm/utils/io/FileDrop.d.ts +98 -0
- package/src/esm/utils/io/FileDrop.js +136 -0
- package/src/esm/utils/io/FileDrop.js.map +1 -0
- package/src/ts/BezierPath.ts +133 -16
- package/src/ts/Circle.ts +213 -200
- package/src/ts/CircleSector.ts +171 -141
- package/src/ts/CubicBezierCurve.ts +777 -810
- package/src/ts/KeyHandler.ts +221 -212
- package/src/ts/Line.ts +77 -80
- package/src/ts/MouseHandler.ts +356 -368
- package/src/ts/PBImage.ts +81 -68
- package/src/ts/PBText.ts +166 -0
- package/src/ts/PlotBoilerplate.ts +48 -20
- package/src/ts/Polygon.ts +519 -451
- package/src/ts/Triangle.ts +484 -489
- package/src/ts/VEllipse.ts +36 -11
- package/src/ts/VEllipseSector.ts +20 -1
- package/src/ts/Vector.ts +164 -160
- package/src/ts/VertTuple.ts +333 -338
- package/src/ts/Vertex.ts +117 -16
- package/src/ts/VertexListeners.ts +248 -266
- package/src/ts/draw.ts +71 -8
- package/src/ts/drawgl.ts +48 -8
- package/src/ts/drawutilssvg.ts +94 -17
- package/src/ts/index.ts +1 -0
- package/src/ts/interfaces/DrawLib.ts +30 -4
- package/src/ts/interfaces/core.ts +9 -0
- package/src/ts/utils/findInVertexArray.ts +28 -0
- package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +61 -30
- package/src/ts/utils/io/FileDrop.ts +178 -0
- package/dist/plotboilerplate.browser.min.js.LICENSE.txt +0 -8
- package/src/ts/utils/algorithms/clearPolygonDuplicateVertices.ts~ +0 -5
- package/src/ts/utils/algorithms/findPolygonSelfIntersections.ts~ +0 -45
- package/src/ts/utils/algorithms/sh-tmp.ts~ +0 -59
- package/src/ts/utils/algorithms/splitPolygonToNonIntersecting.ts~ +0 -113
- package/src/ts/utils/algorithms/sutherlandHodgman.ts~ +0 -88
package/src/esm/Vector.js
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* @modified 2019-12-04 Added the Vector.inv() function.
|
|
10
10
|
* @modified 2020-03-23 Ported to Typescript from JS.
|
|
11
11
|
* @modified 2021-01-20 Added UID.
|
|
12
|
-
* @
|
|
12
|
+
* @modified 2022-02-02 Added the `destroy` method.
|
|
13
|
+
* @modified 2022-02-02 Cleared the `Vector.toSVGString` function (deprecated). Use `drawutilssvg` instead.
|
|
14
|
+
* @version 1.4.0
|
|
13
15
|
*
|
|
14
16
|
* @file Vector
|
|
15
17
|
* @public
|
|
@@ -42,7 +44,6 @@ export class Vector extends VertTuple {
|
|
|
42
44
|
**/
|
|
43
45
|
this.className = "Vector";
|
|
44
46
|
}
|
|
45
|
-
;
|
|
46
47
|
/**
|
|
47
48
|
* Get the perpendicular of this vector which is located at a.
|
|
48
49
|
*
|
|
@@ -57,7 +58,6 @@ export class Vector extends VertTuple {
|
|
|
57
58
|
v.b.add(this.a);
|
|
58
59
|
return v;
|
|
59
60
|
}
|
|
60
|
-
;
|
|
61
61
|
/**
|
|
62
62
|
* The inverse of a vector is a vector witht the same magnitude but oppose direction.
|
|
63
63
|
*
|
|
@@ -71,7 +71,6 @@ export class Vector extends VertTuple {
|
|
|
71
71
|
this.b = tmp;
|
|
72
72
|
return this;
|
|
73
73
|
}
|
|
74
|
-
;
|
|
75
74
|
/**
|
|
76
75
|
* This function computes the inverse of the vector, which means 'a' stays untouched.
|
|
77
76
|
*
|
|
@@ -82,7 +81,6 @@ export class Vector extends VertTuple {
|
|
|
82
81
|
this.b.y = this.a.y - (this.b.y - this.a.y);
|
|
83
82
|
return this;
|
|
84
83
|
}
|
|
85
|
-
;
|
|
86
84
|
/**
|
|
87
85
|
* Get the intersection if this vector and the specified vector.
|
|
88
86
|
*
|
|
@@ -98,16 +96,15 @@ export class Vector extends VertTuple {
|
|
|
98
96
|
return null;
|
|
99
97
|
var a = this.a.y - line.a.y;
|
|
100
98
|
var b = this.a.x - line.a.x;
|
|
101
|
-
var numerator1 = (
|
|
102
|
-
var numerator2 = (
|
|
99
|
+
var numerator1 = (line.b.x - line.a.x) * a - (line.b.y - line.a.y) * b;
|
|
100
|
+
var numerator2 = (this.b.x - this.a.x) * a - (this.b.y - this.a.y) * b;
|
|
103
101
|
a = numerator1 / denominator; // NaN if parallel lines
|
|
104
102
|
b = numerator2 / denominator;
|
|
105
103
|
// TODO:
|
|
106
104
|
// FOR A VECTOR THE LINE-INTERSECTION MUST BE ON BOTH VECTORS
|
|
107
105
|
// if we cast these lines infinitely in both directions, they intersect here:
|
|
108
|
-
return new Vertex(this.a.x +
|
|
106
|
+
return new Vertex(this.a.x + a * (this.b.x - this.a.x), this.a.y + a * (this.b.y - this.a.y));
|
|
109
107
|
}
|
|
110
|
-
;
|
|
111
108
|
/**
|
|
112
109
|
* Create an SVG representation of this line.
|
|
113
110
|
*
|
|
@@ -120,31 +117,30 @@ export class Vector extends VertTuple {
|
|
|
120
117
|
* @memberof Vector
|
|
121
118
|
**/
|
|
122
119
|
toSVGString(options) {
|
|
123
|
-
options = options || {};
|
|
124
|
-
var buffer = [];
|
|
125
|
-
var vertices = Vector.utils.buildArrowHead(this.a, this.b, 8, 1.0, 1.0);
|
|
126
|
-
buffer.push(
|
|
127
|
-
if (options.className)
|
|
128
|
-
|
|
129
|
-
buffer.push(
|
|
130
|
-
buffer.push('
|
|
131
|
-
buffer.push('
|
|
132
|
-
buffer.push('
|
|
133
|
-
buffer.push('
|
|
134
|
-
buffer.push(
|
|
135
|
-
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
buffer.
|
|
144
|
-
|
|
145
|
-
return
|
|
120
|
+
// options = options || {};
|
|
121
|
+
// var buffer = [];
|
|
122
|
+
// var vertices = Vector.utils.buildArrowHead(this.a, this.b, 8, 1.0, 1.0);
|
|
123
|
+
// buffer.push("<g");
|
|
124
|
+
// if (options.className) buffer.push(' class="' + options.className + '"');
|
|
125
|
+
// buffer.push(">");
|
|
126
|
+
// buffer.push(" <line");
|
|
127
|
+
// buffer.push(' x1="' + this.a.x + '"');
|
|
128
|
+
// buffer.push(' y1="' + this.a.y + '"');
|
|
129
|
+
// buffer.push(' x2="' + vertices[0].x + '"');
|
|
130
|
+
// buffer.push(' y2="' + vertices[0].y + '"');
|
|
131
|
+
// buffer.push(" />");
|
|
132
|
+
// // Add arrow head
|
|
133
|
+
// buffer.push(' <polygon points="');
|
|
134
|
+
// for (var i = 0; i < vertices.length; i++) {
|
|
135
|
+
// if (i > 0) buffer.push(" ");
|
|
136
|
+
// buffer.push("" + vertices[i].x + "," + vertices[i].y);
|
|
137
|
+
// }
|
|
138
|
+
// buffer.push('"/>');
|
|
139
|
+
// buffer.push("</g>");
|
|
140
|
+
// return buffer.join("");
|
|
141
|
+
console.warn("[Deprecation] Warning: the Vector.toSVGString method is deprecated and does not return and valid SVG data any more. Please use `drawutilssvg` instead.");
|
|
142
|
+
return "";
|
|
146
143
|
}
|
|
147
|
-
;
|
|
148
144
|
}
|
|
149
145
|
Vector.utils = {
|
|
150
146
|
/**
|
|
@@ -175,10 +171,10 @@ Vector.utils = {
|
|
|
175
171
|
buildArrowHead: (zA, zB, headlen, scaleX, scaleY) => {
|
|
176
172
|
var angle = Math.atan2((zB.y - zA.y) * scaleY, (zB.x - zA.x) * scaleX);
|
|
177
173
|
var vertices = [];
|
|
178
|
-
vertices.push(new Vertex(zB.x * scaleX -
|
|
179
|
-
vertices.push(new Vertex(zB.x * scaleX -
|
|
174
|
+
vertices.push(new Vertex(zB.x * scaleX - headlen * Math.cos(angle), zB.y * scaleY - headlen * Math.sin(angle)));
|
|
175
|
+
vertices.push(new Vertex(zB.x * scaleX - headlen * 1.35 * Math.cos(angle - Math.PI / 8), zB.y * scaleY - headlen * 1.35 * Math.sin(angle - Math.PI / 8)));
|
|
180
176
|
vertices.push(new Vertex(zB.x * scaleX, zB.y * scaleY));
|
|
181
|
-
vertices.push(new Vertex(zB.x * scaleX -
|
|
177
|
+
vertices.push(new Vertex(zB.x * scaleX - headlen * 1.35 * Math.cos(angle + Math.PI / 8), zB.y * scaleY - headlen * 1.35 * Math.sin(angle + Math.PI / 8)));
|
|
182
178
|
return vertices;
|
|
183
179
|
}
|
|
184
180
|
};
|
package/src/esm/Vector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector.js","sourceRoot":"","sources":["../ts/Vector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Vector.js","sourceRoot":"","sources":["../ts/Vector.ts"],"names":[],"mappings":"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"}
|
package/src/esm/VertTuple.d.ts
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* @modified 2020-12-04 Changed `getClosestT` param from `Vertex` to `XYCoords` (generalized).
|
|
9
9
|
* @modified 2020-12-04 Added the `hasPoint(XYCoords)` function.
|
|
10
10
|
* @modified 2021-01-20 Added UID.
|
|
11
|
-
* @
|
|
11
|
+
* @modified 2022-02-02 Added the `destroy` method.
|
|
12
|
+
* @version 1.2.0
|
|
12
13
|
*/
|
|
13
14
|
import { Vertex } from "./Vertex";
|
|
14
15
|
import { XYCoords, UID } from "./interfaces";
|
|
@@ -41,6 +42,13 @@ export declare class VertTuple<T extends VertTuple<T>> {
|
|
|
41
42
|
* @instance
|
|
42
43
|
*/
|
|
43
44
|
b: Vertex;
|
|
45
|
+
/**
|
|
46
|
+
* @member isDestroyed
|
|
47
|
+
* @memberof VertTuple
|
|
48
|
+
* @type {boolean}
|
|
49
|
+
* @instance
|
|
50
|
+
*/
|
|
51
|
+
isDestroyed: boolean;
|
|
44
52
|
/**
|
|
45
53
|
* The factory is used by the `clone` method.
|
|
46
54
|
*/
|
|
@@ -231,6 +239,12 @@ export declare class VertTuple<T extends VertTuple<T>> {
|
|
|
231
239
|
* @memberof VertTuple
|
|
232
240
|
**/
|
|
233
241
|
toString(): string;
|
|
242
|
+
/**
|
|
243
|
+
* This function should invalidate any installed listeners and invalidate this object.
|
|
244
|
+
* After calling this function the object might not hold valid data any more and
|
|
245
|
+
* should not be used.
|
|
246
|
+
*/
|
|
247
|
+
destroy(): void;
|
|
234
248
|
/**
|
|
235
249
|
* @private
|
|
236
250
|
**/
|
package/src/esm/VertTuple.js
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* @modified 2020-12-04 Changed `getClosestT` param from `Vertex` to `XYCoords` (generalized).
|
|
9
9
|
* @modified 2020-12-04 Added the `hasPoint(XYCoords)` function.
|
|
10
10
|
* @modified 2021-01-20 Added UID.
|
|
11
|
-
* @
|
|
11
|
+
* @modified 2022-02-02 Added the `destroy` method.
|
|
12
|
+
* @version 1.2.0
|
|
12
13
|
*/
|
|
13
14
|
import { Vertex } from "./Vertex";
|
|
14
15
|
import { UIDGenerator } from "./UIDGenerator";
|
|
@@ -44,7 +45,6 @@ export class VertTuple {
|
|
|
44
45
|
length() {
|
|
45
46
|
return Math.sqrt(Math.pow(this.b.x - this.a.x, 2) + Math.pow(this.b.y - this.a.y, 2));
|
|
46
47
|
}
|
|
47
|
-
;
|
|
48
48
|
/**
|
|
49
49
|
* Set the length of this vector to the given amount. This only works if this
|
|
50
50
|
* vector is not a null vector.
|
|
@@ -57,7 +57,6 @@ export class VertTuple {
|
|
|
57
57
|
setLength(length) {
|
|
58
58
|
return this.scale(length / this.length());
|
|
59
59
|
}
|
|
60
|
-
;
|
|
61
60
|
/**
|
|
62
61
|
* Substract the given vertex from this line's end points.
|
|
63
62
|
*
|
|
@@ -72,7 +71,6 @@ export class VertTuple {
|
|
|
72
71
|
this.b.sub(amount);
|
|
73
72
|
return this;
|
|
74
73
|
}
|
|
75
|
-
;
|
|
76
74
|
/**
|
|
77
75
|
* Add the given vertex to this line's end points.
|
|
78
76
|
*
|
|
@@ -87,7 +85,6 @@ export class VertTuple {
|
|
|
87
85
|
this.b.add(amount);
|
|
88
86
|
return this;
|
|
89
87
|
}
|
|
90
|
-
;
|
|
91
88
|
/**
|
|
92
89
|
* Normalize this line (set to length 1).
|
|
93
90
|
*
|
|
@@ -100,7 +97,6 @@ export class VertTuple {
|
|
|
100
97
|
this.b.set(this.a.x + (this.b.x - this.a.x) / this.length(), this.a.y + (this.b.y - this.a.y) / this.length());
|
|
101
98
|
return this;
|
|
102
99
|
}
|
|
103
|
-
;
|
|
104
100
|
/**
|
|
105
101
|
* Scale this line by the given factor.
|
|
106
102
|
*
|
|
@@ -114,7 +110,6 @@ export class VertTuple {
|
|
|
114
110
|
this.b.set(this.a.x + (this.b.x - this.a.x) * factor, this.a.y + (this.b.y - this.a.y) * factor);
|
|
115
111
|
return this;
|
|
116
112
|
}
|
|
117
|
-
;
|
|
118
113
|
/**
|
|
119
114
|
* Move this line to a new location.
|
|
120
115
|
*
|
|
@@ -130,7 +125,6 @@ export class VertTuple {
|
|
|
130
125
|
this.b.add(diff);
|
|
131
126
|
return this;
|
|
132
127
|
}
|
|
133
|
-
;
|
|
134
128
|
/**
|
|
135
129
|
* Get the angle between this and the passed line (in radians).
|
|
136
130
|
*
|
|
@@ -141,7 +135,7 @@ export class VertTuple {
|
|
|
141
135
|
* @memberof VertTuple
|
|
142
136
|
**/
|
|
143
137
|
angle(line) {
|
|
144
|
-
if (line == null || typeof line ==
|
|
138
|
+
if (line == null || typeof line == "undefined") {
|
|
145
139
|
line = this.factory(new Vertex(0, 0), new Vertex(100, 0));
|
|
146
140
|
}
|
|
147
141
|
// Compute the angle from x axis and the return the difference :)
|
|
@@ -151,7 +145,6 @@ export class VertTuple {
|
|
|
151
145
|
// The result might be negative, but isn't it usually nicer to determine angles in positive values only?
|
|
152
146
|
return Math.atan2(v1.x, v1.y) - Math.atan2(v0.x, v0.y);
|
|
153
147
|
}
|
|
154
|
-
;
|
|
155
148
|
/**
|
|
156
149
|
* Get line point at position t in [0 ... 1]:<br>
|
|
157
150
|
* <pre>[P(0)]=[A]--------------------[P(t)]------[B]=[P(1)]</pre><br>
|
|
@@ -167,7 +160,6 @@ export class VertTuple {
|
|
|
167
160
|
vertAt(t) {
|
|
168
161
|
return new Vertex(this.a.x + (this.b.x - this.a.x) * t, this.a.y + (this.b.y - this.a.y) * t);
|
|
169
162
|
}
|
|
170
|
-
;
|
|
171
163
|
/**
|
|
172
164
|
* Get the denominator of this and the given line.
|
|
173
165
|
*
|
|
@@ -181,9 +173,8 @@ export class VertTuple {
|
|
|
181
173
|
**/
|
|
182
174
|
denominator(line) {
|
|
183
175
|
// http://jsfiddle.net/justin_c_rounds/Gd2S2/
|
|
184
|
-
return (
|
|
176
|
+
return (line.b.y - line.a.y) * (this.b.x - this.a.x) - (line.b.x - line.a.x) * (this.b.y - this.a.y);
|
|
185
177
|
}
|
|
186
|
-
;
|
|
187
178
|
/**
|
|
188
179
|
* Checks if this and the given line are co-linear.
|
|
189
180
|
*
|
|
@@ -198,7 +189,6 @@ export class VertTuple {
|
|
|
198
189
|
colinear(line) {
|
|
199
190
|
return Math.abs(this.denominator(line)) < Vertex.EPSILON;
|
|
200
191
|
}
|
|
201
|
-
;
|
|
202
192
|
/**
|
|
203
193
|
* Get the closest position T from this line to the specified point.
|
|
204
194
|
*
|
|
@@ -221,7 +211,6 @@ export class VertTuple {
|
|
|
221
211
|
// t = Math.max(0, Math.min(1, t));
|
|
222
212
|
return t;
|
|
223
213
|
}
|
|
224
|
-
;
|
|
225
214
|
/**
|
|
226
215
|
* Check if the given point is located on this line. Optionally also check if
|
|
227
216
|
* that point is located between point `a` and `b`.
|
|
@@ -257,7 +246,6 @@ export class VertTuple {
|
|
|
257
246
|
var t = this.getClosestT(p);
|
|
258
247
|
return this.vertAt(t);
|
|
259
248
|
}
|
|
260
|
-
;
|
|
261
249
|
/**
|
|
262
250
|
* The the minimal distance between this line and the specified point.
|
|
263
251
|
*
|
|
@@ -272,7 +260,6 @@ export class VertTuple {
|
|
|
272
260
|
// https://stackoverflow.com/questions/849211/shortest-distance-between-a-point-and-a-line-segment
|
|
273
261
|
return Math.sqrt(VertTuple.vtutils.dist2(p, this.vertAt(this.getClosestT(p))));
|
|
274
262
|
}
|
|
275
|
-
;
|
|
276
263
|
/**
|
|
277
264
|
* Create a deep clone of this instance.
|
|
278
265
|
*
|
|
@@ -284,7 +271,6 @@ export class VertTuple {
|
|
|
284
271
|
clone() {
|
|
285
272
|
return this.factory(this.a.clone(), this.b.clone());
|
|
286
273
|
}
|
|
287
|
-
;
|
|
288
274
|
/**
|
|
289
275
|
* Create a string representation of this line.
|
|
290
276
|
*
|
|
@@ -296,7 +282,16 @@ export class VertTuple {
|
|
|
296
282
|
toString() {
|
|
297
283
|
return "{ a : " + this.a.toString() + ", b : " + this.b.toString() + " }";
|
|
298
284
|
}
|
|
299
|
-
|
|
285
|
+
/**
|
|
286
|
+
* This function should invalidate any installed listeners and invalidate this object.
|
|
287
|
+
* After calling this function the object might not hold valid data any more and
|
|
288
|
+
* should not be used.
|
|
289
|
+
*/
|
|
290
|
+
destroy() {
|
|
291
|
+
this.a.destroy();
|
|
292
|
+
this.b.destroy();
|
|
293
|
+
this.isDestroyed = true;
|
|
294
|
+
}
|
|
300
295
|
}
|
|
301
296
|
/**
|
|
302
297
|
* @private
|
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":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;;GAMG;AACH,MAAM,OAAO,SAAS;IAsCpB;;;;;;;QAOI;IACJ,YAAY,CAAS,EAAE,CAAS,EAAE,OAAoC;QACpE,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;QAMI;IACJ,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED;;;;;;;;QAQI;IACJ,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;QAQI;IACJ,GAAG,CAAC,MAAgB;QAClB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;QAQI;IACJ,GAAG,CAAC,MAAgB;QAClB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;QAOI;IACJ,SAAS;QACP,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;QAQI;IACJ,KAAK,CAAC,MAAc;QAClB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;QAQI;IACJ,MAAM,CAAC,IAAY;QACjB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;QAQI;IACJ,KAAK,CAAC,IAAqB;QACzB,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,WAAW,EAAE;YAC9C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,iEAAiE;QACjE,MAAM,EAAE,GAAW,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAW,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,2FAA2F;QAC3F,wGAAwG;QACxG,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;QAWI;IACJ,MAAM,CAAC,CAAS;QACd,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;;;;;;;;QAUI;IACJ,WAAW,CAAC,IAAkB;QAC5B,6CAA6C;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAkB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;QAWI;IACJ,WAAW,CAAC,CAAW;QACrB,IAAI,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACnG,6BAA6B;QAC7B,sCAAsC;QACtC,mCAAmC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,KAAe,EAAE,gBAA0B;QAClD,MAAM,CAAC,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1C,4BAA4B;QAC5B,IAAI,OAAO,gBAAgB,KAAK,WAAW,IAAI,gBAAgB,EAAE;YAC/D,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtD;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;IACH,CAAC;IAED;;;;;;;;QAQI;IACJ,eAAe,CAAC,CAAS;QACvB,IAAI,CAAC,GAAW,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;QAQI;IACJ,aAAa,CAAC,CAAS;QACrB,cAAc;QACd,kGAAkG;QAClG,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;QAOI;IACJ,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;QAOI;IACJ,QAAQ;QACN,OAAO,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;;AAED;;IAEI;AACG,iBAAO,GAAG;IACf,KAAK,EAAE,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE;QAClC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF,CAAC"}
|
package/src/esm/Vertex.d.ts
CHANGED
|
@@ -22,7 +22,13 @@
|
|
|
22
22
|
* @modified 2020-05-26 Added functions addX(number) and addY(number).
|
|
23
23
|
* @modified 2020-10-30 Changed the warnings in `sub(...)` and `add(...)` into real errors.
|
|
24
24
|
* @modified 2021-03-01 Changed the second param `center` in the `rotate` function from Vertex to XYCoords.
|
|
25
|
-
* @
|
|
25
|
+
* @modified 2021-12-01 Changed the type of param of `scale` to XYCoords.
|
|
26
|
+
* @modified 2021-12-01 Added function `scaleXY` for non uniform scaling.
|
|
27
|
+
* @modified 2021-12-17 Added the functions `lerp` and `lerpAbs` for linear interpolations.
|
|
28
|
+
* @modified 2022-01-31 Added `Vertex.utils.arrayToJSON`.
|
|
29
|
+
* @modified 2022-02-02 Added the `destroy` method.
|
|
30
|
+
* @modified 2022-02-02 Cleared the `Vertex.toSVGString` function (deprecated). Use `drawutilssvg` instead.
|
|
31
|
+
* @version 2.7.0
|
|
26
32
|
*
|
|
27
33
|
* @file Vertex
|
|
28
34
|
* @public
|
|
@@ -90,6 +96,13 @@ export declare class Vertex implements XYCoords, SVGSerializable {
|
|
|
90
96
|
* @instance
|
|
91
97
|
**/
|
|
92
98
|
listeners: VertexListeners;
|
|
99
|
+
/**
|
|
100
|
+
* @member isDestroyed
|
|
101
|
+
* @memberof Vertex
|
|
102
|
+
* @type {boolean}
|
|
103
|
+
* @instance
|
|
104
|
+
*/
|
|
105
|
+
isDestroyed: boolean;
|
|
93
106
|
/**
|
|
94
107
|
* The constructor for the vertex class.
|
|
95
108
|
*
|
|
@@ -262,16 +275,51 @@ export declare class Vertex implements XYCoords, SVGSerializable {
|
|
|
262
275
|
difference(vert: XYCoords): Vertex;
|
|
263
276
|
/**
|
|
264
277
|
* This is a vector-like behavior and 'scales' this vertex
|
|
265
|
-
* towards/from a given center.
|
|
278
|
+
* towards/from a given center by one uniform scale factor.
|
|
279
|
+
*
|
|
280
|
+
* @method scale
|
|
281
|
+
* @param {number} factor - The factor to 'scale' this vertex; 1.0 means no change.
|
|
282
|
+
* @param {XYCoords=} center - The origin of scaling; default is (0,0).
|
|
283
|
+
* @return {Vertex} this
|
|
284
|
+
* @instance
|
|
285
|
+
* @memberof Vertex
|
|
286
|
+
**/
|
|
287
|
+
scale(factor: number, center?: XYCoords): Vertex;
|
|
288
|
+
/**
|
|
289
|
+
* Perform a linear interpolation towards the given target vertex.
|
|
290
|
+
* The amount value `t` is relative, `t=0.0` means no change, `t=1.0`
|
|
291
|
+
* means this point will be moved to the exact target position.
|
|
292
|
+
*
|
|
293
|
+
* `t=0.5` will move this point to the middle of the connecting
|
|
294
|
+
* linear segment.
|
|
295
|
+
*
|
|
296
|
+
* @param {XYCoords} target - The target position to lerp this vertex to.
|
|
297
|
+
* @param {number} t - The relative amount, usually in [0..1], but other values will work, too.
|
|
298
|
+
* @returns
|
|
299
|
+
*/
|
|
300
|
+
lerp(target: XYCoords, t: number): Vertex;
|
|
301
|
+
/**
|
|
302
|
+
* Perform a linear interpolation towards the given target vertex (absolute variant).
|
|
303
|
+
* The amount value `t` is absolute, which means the lerp amount is a direct distance
|
|
304
|
+
* value. This point will have move the amount of the passed distance `u`.
|
|
305
|
+
*
|
|
306
|
+
* @param {XYCoords} target - The target position to lerp this vertex to.
|
|
307
|
+
* @param {number} t - The absolute move amount to use to lerping.
|
|
308
|
+
* @returns
|
|
309
|
+
*/
|
|
310
|
+
lerpAbs(target: XYCoords, u: number): Vertex;
|
|
311
|
+
/**
|
|
312
|
+
* This is a vector-like behavior and 'scales' this vertex
|
|
313
|
+
* towards/from a given center by two independent x- and y- scale factors.
|
|
266
314
|
*
|
|
267
315
|
* @method scale
|
|
268
316
|
* @param {number} factor - The factor to 'scale' this vertex; 1.0 means no change.
|
|
269
|
-
* @param {
|
|
317
|
+
* @param {XYCoords=} center - The origin of scaling; default is (0,0).
|
|
270
318
|
* @return {Vertex} this
|
|
271
319
|
* @instance
|
|
272
320
|
* @memberof Vertex
|
|
273
321
|
**/
|
|
274
|
-
|
|
322
|
+
scaleXY(factors: XYCoords, center?: XYCoords): Vertex;
|
|
275
323
|
/**
|
|
276
324
|
* This is a vector-like behavior and 'rotates' this vertex
|
|
277
325
|
* around given center.
|
|
@@ -333,10 +381,17 @@ export declare class Vertex implements XYCoords, SVGSerializable {
|
|
|
333
381
|
* @return {string} A string representing the SVG code for this vertex.
|
|
334
382
|
* @instance
|
|
335
383
|
* @memberof Vertex
|
|
384
|
+
* @deprecated
|
|
336
385
|
**/
|
|
337
386
|
toSVGString(options: {
|
|
338
387
|
className?: string;
|
|
339
388
|
}): string;
|
|
389
|
+
/**
|
|
390
|
+
* This function should invalidate any installed listeners and invalidate this object.
|
|
391
|
+
* After calling this function the object might not hold valid data any more and
|
|
392
|
+
* should not be used.
|
|
393
|
+
*/
|
|
394
|
+
destroy(): void;
|
|
340
395
|
/**
|
|
341
396
|
* Create a new random vertex inside the given viewport.
|
|
342
397
|
*
|
|
@@ -374,5 +429,12 @@ export declare class Vertex implements XYCoords, SVGSerializable {
|
|
|
374
429
|
* @param {number} scaleY - the vertical scaling during draw.
|
|
375
430
|
**/
|
|
376
431
|
buildArrowHead: (zA: Vertex, zB: Vertex, headlen: number, scaleX: number, scaleY: number) => Array<Vertex>;
|
|
432
|
+
/**
|
|
433
|
+
* Convert the given vertices (array) to a JSON string.
|
|
434
|
+
*
|
|
435
|
+
* @param {number?} precision - (optional) The numeric precision to be used (number of precision digits).
|
|
436
|
+
* @returns {string}
|
|
437
|
+
*/
|
|
438
|
+
arrayToJSON(vertices: Array<XYCoords>, precision?: number): string;
|
|
377
439
|
};
|
|
378
440
|
}
|
package/src/esm/Vertex.js
CHANGED
|
@@ -22,7 +22,13 @@
|
|
|
22
22
|
* @modified 2020-05-26 Added functions addX(number) and addY(number).
|
|
23
23
|
* @modified 2020-10-30 Changed the warnings in `sub(...)` and `add(...)` into real errors.
|
|
24
24
|
* @modified 2021-03-01 Changed the second param `center` in the `rotate` function from Vertex to XYCoords.
|
|
25
|
-
* @
|
|
25
|
+
* @modified 2021-12-01 Changed the type of param of `scale` to XYCoords.
|
|
26
|
+
* @modified 2021-12-01 Added function `scaleXY` for non uniform scaling.
|
|
27
|
+
* @modified 2021-12-17 Added the functions `lerp` and `lerpAbs` for linear interpolations.
|
|
28
|
+
* @modified 2022-01-31 Added `Vertex.utils.arrayToJSON`.
|
|
29
|
+
* @modified 2022-02-02 Added the `destroy` method.
|
|
30
|
+
* @modified 2022-02-02 Cleared the `Vertex.toSVGString` function (deprecated). Use `drawutilssvg` instead.
|
|
31
|
+
* @version 2.7.0
|
|
26
32
|
*
|
|
27
33
|
* @file Vertex
|
|
28
34
|
* @public
|
|
@@ -366,20 +372,72 @@ export class Vertex {
|
|
|
366
372
|
}
|
|
367
373
|
/**
|
|
368
374
|
* This is a vector-like behavior and 'scales' this vertex
|
|
369
|
-
* towards/from a given center.
|
|
375
|
+
* towards/from a given center by one uniform scale factor.
|
|
370
376
|
*
|
|
371
377
|
* @method scale
|
|
372
378
|
* @param {number} factor - The factor to 'scale' this vertex; 1.0 means no change.
|
|
373
|
-
* @param {
|
|
379
|
+
* @param {XYCoords=} center - The origin of scaling; default is (0,0).
|
|
374
380
|
* @return {Vertex} this
|
|
375
381
|
* @instance
|
|
376
382
|
* @memberof Vertex
|
|
377
383
|
**/
|
|
378
384
|
scale(factor, center) {
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
385
|
+
return this.scaleXY({ x: factor, y: factor }, center);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Perform a linear interpolation towards the given target vertex.
|
|
389
|
+
* The amount value `t` is relative, `t=0.0` means no change, `t=1.0`
|
|
390
|
+
* means this point will be moved to the exact target position.
|
|
391
|
+
*
|
|
392
|
+
* `t=0.5` will move this point to the middle of the connecting
|
|
393
|
+
* linear segment.
|
|
394
|
+
*
|
|
395
|
+
* @param {XYCoords} target - The target position to lerp this vertex to.
|
|
396
|
+
* @param {number} t - The relative amount, usually in [0..1], but other values will work, too.
|
|
397
|
+
* @returns
|
|
398
|
+
*/
|
|
399
|
+
lerp(target, t) {
|
|
400
|
+
var diff = this.difference(target);
|
|
401
|
+
// return new Vertex(this.x + diff.x * t, this.y + diff.y * t);
|
|
402
|
+
this.x += diff.x * t;
|
|
403
|
+
this.y += diff.y * t;
|
|
404
|
+
return this;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Perform a linear interpolation towards the given target vertex (absolute variant).
|
|
408
|
+
* The amount value `t` is absolute, which means the lerp amount is a direct distance
|
|
409
|
+
* value. This point will have move the amount of the passed distance `u`.
|
|
410
|
+
*
|
|
411
|
+
* @param {XYCoords} target - The target position to lerp this vertex to.
|
|
412
|
+
* @param {number} t - The absolute move amount to use to lerping.
|
|
413
|
+
* @returns
|
|
414
|
+
*/
|
|
415
|
+
lerpAbs(target, u) {
|
|
416
|
+
var dist = this.distance(target);
|
|
417
|
+
var diff = this.difference(target);
|
|
418
|
+
var step = { x: diff.x / dist, y: diff.y / dist };
|
|
419
|
+
// return new Vertex(this.x + step.x * u, this.y + step.y * u);
|
|
420
|
+
this.x += step.x * u;
|
|
421
|
+
this.y += step.y * u;
|
|
422
|
+
return this;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* This is a vector-like behavior and 'scales' this vertex
|
|
426
|
+
* towards/from a given center by two independent x- and y- scale factors.
|
|
427
|
+
*
|
|
428
|
+
* @method scale
|
|
429
|
+
* @param {number} factor - The factor to 'scale' this vertex; 1.0 means no change.
|
|
430
|
+
* @param {XYCoords=} center - The origin of scaling; default is (0,0).
|
|
431
|
+
* @return {Vertex} this
|
|
432
|
+
* @instance
|
|
433
|
+
* @memberof Vertex
|
|
434
|
+
**/
|
|
435
|
+
scaleXY(factors, center) {
|
|
436
|
+
if (!center || typeof center === "undefined") {
|
|
437
|
+
center = { x: 0, y: 0 };
|
|
438
|
+
}
|
|
439
|
+
this.x = center.x + (this.x - center.x) * factors.x;
|
|
440
|
+
this.y = center.y + (this.y - center.y) * factors.y;
|
|
383
441
|
return this;
|
|
384
442
|
}
|
|
385
443
|
/**
|
|
@@ -468,20 +526,31 @@ export class Vertex {
|
|
|
468
526
|
* @return {string} A string representing the SVG code for this vertex.
|
|
469
527
|
* @instance
|
|
470
528
|
* @memberof Vertex
|
|
529
|
+
* @deprecated
|
|
471
530
|
**/
|
|
472
531
|
toSVGString(options) {
|
|
473
|
-
options = options || {};
|
|
474
|
-
var buffer = [];
|
|
475
|
-
buffer.push("<circle");
|
|
476
|
-
if (options.className)
|
|
477
|
-
|
|
478
|
-
buffer.push('
|
|
479
|
-
buffer.push('
|
|
480
|
-
buffer.push(
|
|
481
|
-
buffer.
|
|
482
|
-
return
|
|
532
|
+
// options = options || {};
|
|
533
|
+
// var buffer = [];
|
|
534
|
+
// buffer.push("<circle");
|
|
535
|
+
// if (options.className) buffer.push(' class="' + options.className + '"');
|
|
536
|
+
// buffer.push(' cx="' + this.x + '"');
|
|
537
|
+
// buffer.push(' cy="' + this.y + '"');
|
|
538
|
+
// buffer.push(' r="2"');
|
|
539
|
+
// buffer.push(" />");
|
|
540
|
+
// return buffer.join("");
|
|
541
|
+
console.warn("[Deprecation] Warning: the Vertex.toSVGString method is deprecated and does not return and valid SVG data any more. Please use `drawutilssvg` instead.");
|
|
542
|
+
return "";
|
|
483
543
|
}
|
|
484
544
|
// END Vertex
|
|
545
|
+
/**
|
|
546
|
+
* This function should invalidate any installed listeners and invalidate this object.
|
|
547
|
+
* After calling this function the object might not hold valid data any more and
|
|
548
|
+
* should not be used.
|
|
549
|
+
*/
|
|
550
|
+
destroy() {
|
|
551
|
+
this.listeners.removeAllListeners();
|
|
552
|
+
this.isDestroyed = true;
|
|
553
|
+
}
|
|
485
554
|
/**
|
|
486
555
|
* Create a new random vertex inside the given viewport.
|
|
487
556
|
*
|
|
@@ -536,6 +605,19 @@ Vertex.utils = {
|
|
|
536
605
|
vertices.push(new Vertex(zB.x * scaleX, zB.y * scaleY));
|
|
537
606
|
vertices.push(new Vertex(zB.x * scaleX - headlen * 1.35 * Math.cos(angle + Math.PI / 8), zB.y * scaleY - headlen * 1.35 * Math.sin(angle + Math.PI / 8)));
|
|
538
607
|
return vertices;
|
|
608
|
+
},
|
|
609
|
+
/**
|
|
610
|
+
* Convert the given vertices (array) to a JSON string.
|
|
611
|
+
*
|
|
612
|
+
* @param {number?} precision - (optional) The numeric precision to be used (number of precision digits).
|
|
613
|
+
* @returns {string}
|
|
614
|
+
*/
|
|
615
|
+
arrayToJSON(vertices, precision) {
|
|
616
|
+
return JSON.stringify(vertices.map(function (vert) {
|
|
617
|
+
return typeof precision === undefined
|
|
618
|
+
? { x: vert.x, y: vert.y }
|
|
619
|
+
: { x: Number(vert.x.toFixed(precision)), y: Number(vert.y.toFixed(precision)) };
|
|
620
|
+
}));
|
|
539
621
|
}
|
|
540
622
|
};
|
|
541
623
|
//# sourceMappingURL=Vertex.js.map
|