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.
Files changed (213) hide show
  1. package/README.md +5 -1
  2. package/changelog.md +50 -0
  3. package/dist/index.esm.js +999 -510
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.esm.min.js +1 -1
  6. package/dist/index.esm.min.js.map +1 -1
  7. package/dist/plotboilerplate.browser.min.js +1 -1
  8. package/dist/plotboilerplate.browser.min.js.map +1 -1
  9. package/dist/plotboilerplate.js +1013 -509
  10. package/dist/plotboilerplate.min.js +1 -1
  11. package/package.json +1 -1
  12. package/src/cjs/BezierPath.d.ts +45 -2
  13. package/src/cjs/BezierPath.js +114 -18
  14. package/src/cjs/BezierPath.js.map +1 -1
  15. package/src/cjs/Circle.d.ts +25 -10
  16. package/src/cjs/Circle.js +38 -33
  17. package/src/cjs/Circle.js.map +1 -1
  18. package/src/cjs/CircleSector.d.ts +27 -13
  19. package/src/cjs/CircleSector.js +38 -23
  20. package/src/cjs/CircleSector.js.map +1 -1
  21. package/src/cjs/CubicBezierCurve.d.ts +17 -1
  22. package/src/cjs/CubicBezierCurve.js +78 -79
  23. package/src/cjs/CubicBezierCurve.js.map +1 -1
  24. package/src/cjs/KeyHandler.d.ts +10 -3
  25. package/src/cjs/KeyHandler.js +28 -23
  26. package/src/cjs/KeyHandler.js.map +1 -1
  27. package/src/cjs/Line.d.ts +2 -1
  28. package/src/cjs/Line.js +19 -18
  29. package/src/cjs/Line.js.map +1 -1
  30. package/src/cjs/MouseHandler.js +43 -53
  31. package/src/cjs/MouseHandler.js.map +1 -1
  32. package/src/cjs/PBImage.d.ts +16 -1
  33. package/src/cjs/PBImage.js +13 -3
  34. package/src/cjs/PBImage.js.map +1 -1
  35. package/src/cjs/PBText.d.ts +130 -0
  36. package/src/cjs/PBText.js +76 -0
  37. package/src/cjs/PBText.js.map +1 -0
  38. package/src/cjs/PlotBoilerplate.d.ts +2 -1
  39. package/src/cjs/PlotBoilerplate.js +44 -16
  40. package/src/cjs/PlotBoilerplate.js.map +1 -1
  41. package/src/cjs/Polygon.d.ts +37 -1
  42. package/src/cjs/Polygon.js +131 -54
  43. package/src/cjs/Polygon.js.map +1 -1
  44. package/src/cjs/Triangle.d.ts +16 -1
  45. package/src/cjs/Triangle.js +50 -54
  46. package/src/cjs/Triangle.js.map +1 -1
  47. package/src/cjs/VEllipse.d.ts +16 -1
  48. package/src/cjs/VEllipse.js +25 -12
  49. package/src/cjs/VEllipse.js.map +1 -1
  50. package/src/cjs/VEllipseSector.d.ts +15 -1
  51. package/src/cjs/VEllipseSector.js +11 -1
  52. package/src/cjs/VEllipseSector.js.map +1 -1
  53. package/src/cjs/Vector.d.ts +3 -1
  54. package/src/cjs/Vector.js +32 -36
  55. package/src/cjs/Vector.js.map +1 -1
  56. package/src/cjs/VertTuple.d.ts +15 -1
  57. package/src/cjs/VertTuple.js +14 -19
  58. package/src/cjs/VertTuple.js.map +1 -1
  59. package/src/cjs/Vertex.d.ts +66 -4
  60. package/src/cjs/Vertex.js +99 -17
  61. package/src/cjs/Vertex.js.map +1 -1
  62. package/src/cjs/VertexListeners.d.ts +12 -8
  63. package/src/cjs/VertexListeners.js +18 -25
  64. package/src/cjs/VertexListeners.js.map +1 -1
  65. package/src/cjs/draw.d.ts +30 -2
  66. package/src/cjs/draw.js +51 -6
  67. package/src/cjs/draw.js.map +1 -1
  68. package/src/cjs/drawgl.d.ts +29 -2
  69. package/src/cjs/drawgl.js +21 -4
  70. package/src/cjs/drawgl.js.map +1 -1
  71. package/src/cjs/drawutilssvg.d.ts +25 -7
  72. package/src/cjs/drawutilssvg.js +62 -14
  73. package/src/cjs/drawutilssvg.js.map +1 -1
  74. package/src/cjs/entry.js +1 -0
  75. package/src/cjs/index.d.ts +1 -0
  76. package/src/cjs/index.js +1 -0
  77. package/src/cjs/index.js.map +1 -1
  78. package/src/cjs/interfaces/DrawLib.d.ts +27 -6
  79. package/src/cjs/interfaces/DrawLib.js +3 -0
  80. package/src/cjs/interfaces/DrawLib.js.map +1 -1
  81. package/src/cjs/interfaces/core.d.ts +9 -1
  82. package/src/cjs/interfaces/core.js +1 -0
  83. package/src/cjs/interfaces/core.js.map +1 -1
  84. package/src/cjs/utils/creategui.js +1 -1
  85. package/src/cjs/utils/findInVertexArray.d.ts +19 -0
  86. package/src/cjs/utils/findInVertexArray.js +29 -0
  87. package/src/cjs/utils/findInVertexArray.js.map +1 -0
  88. package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
  89. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +55 -28
  90. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  91. package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
  92. package/src/cjs/utils/io/DndFileHandler.js +112 -0
  93. package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
  94. package/src/cjs/utils/io/FileDrop.d.ts +98 -0
  95. package/src/cjs/utils/io/FileDrop.js +142 -0
  96. package/src/cjs/utils/io/FileDrop.js.map +1 -0
  97. package/src/esm/BezierPath.d.ts +45 -2
  98. package/src/esm/BezierPath.js +114 -18
  99. package/src/esm/BezierPath.js.map +1 -1
  100. package/src/esm/Circle.d.ts +25 -10
  101. package/src/esm/Circle.js +38 -33
  102. package/src/esm/Circle.js.map +1 -1
  103. package/src/esm/CircleSector.d.ts +27 -13
  104. package/src/esm/CircleSector.js +38 -23
  105. package/src/esm/CircleSector.js.map +1 -1
  106. package/src/esm/CubicBezierCurve.d.ts +17 -1
  107. package/src/esm/CubicBezierCurve.js +78 -79
  108. package/src/esm/CubicBezierCurve.js.map +1 -1
  109. package/src/esm/KeyHandler.d.ts +10 -3
  110. package/src/esm/KeyHandler.js +28 -23
  111. package/src/esm/KeyHandler.js.map +1 -1
  112. package/src/esm/Line.d.ts +2 -1
  113. package/src/esm/Line.js +19 -18
  114. package/src/esm/Line.js.map +1 -1
  115. package/src/esm/MouseHandler.js +43 -53
  116. package/src/esm/MouseHandler.js.map +1 -1
  117. package/src/esm/PBImage.d.ts +16 -1
  118. package/src/esm/PBImage.js +13 -3
  119. package/src/esm/PBImage.js.map +1 -1
  120. package/src/esm/PBText.d.ts +130 -0
  121. package/src/esm/PBText.js +71 -0
  122. package/src/esm/PBText.js.map +1 -0
  123. package/src/esm/PlotBoilerplate.d.ts +2 -1
  124. package/src/esm/PlotBoilerplate.js +44 -16
  125. package/src/esm/PlotBoilerplate.js.map +1 -1
  126. package/src/esm/Polygon.d.ts +37 -1
  127. package/src/esm/Polygon.js +131 -54
  128. package/src/esm/Polygon.js.map +1 -1
  129. package/src/esm/Triangle.d.ts +16 -1
  130. package/src/esm/Triangle.js +50 -54
  131. package/src/esm/Triangle.js.map +1 -1
  132. package/src/esm/VEllipse.d.ts +16 -1
  133. package/src/esm/VEllipse.js +25 -12
  134. package/src/esm/VEllipse.js.map +1 -1
  135. package/src/esm/VEllipseSector.d.ts +15 -1
  136. package/src/esm/VEllipseSector.js +11 -1
  137. package/src/esm/VEllipseSector.js.map +1 -1
  138. package/src/esm/Vector.d.ts +3 -1
  139. package/src/esm/Vector.js +32 -36
  140. package/src/esm/Vector.js.map +1 -1
  141. package/src/esm/VertTuple.d.ts +15 -1
  142. package/src/esm/VertTuple.js +14 -19
  143. package/src/esm/VertTuple.js.map +1 -1
  144. package/src/esm/Vertex.d.ts +66 -4
  145. package/src/esm/Vertex.js +99 -17
  146. package/src/esm/Vertex.js.map +1 -1
  147. package/src/esm/VertexListeners.d.ts +12 -8
  148. package/src/esm/VertexListeners.js +18 -25
  149. package/src/esm/VertexListeners.js.map +1 -1
  150. package/src/esm/draw.d.ts +30 -2
  151. package/src/esm/draw.js +51 -6
  152. package/src/esm/draw.js.map +1 -1
  153. package/src/esm/drawgl.d.ts +29 -2
  154. package/src/esm/drawgl.js +21 -4
  155. package/src/esm/drawgl.js.map +1 -1
  156. package/src/esm/drawutilssvg.d.ts +25 -7
  157. package/src/esm/drawutilssvg.js +62 -14
  158. package/src/esm/drawutilssvg.js.map +1 -1
  159. package/src/esm/entry.js +1 -0
  160. package/src/esm/index.d.ts +1 -0
  161. package/src/esm/index.js +1 -0
  162. package/src/esm/index.js.map +1 -1
  163. package/src/esm/interfaces/DrawLib.d.ts +27 -6
  164. package/src/esm/interfaces/DrawLib.js +3 -0
  165. package/src/esm/interfaces/DrawLib.js.map +1 -1
  166. package/src/esm/interfaces/core.d.ts +9 -1
  167. package/src/esm/interfaces/core.js +1 -0
  168. package/src/esm/interfaces/core.js.map +1 -1
  169. package/src/esm/utils/findInVertexArray.d.ts +19 -0
  170. package/src/esm/utils/findInVertexArray.js +25 -0
  171. package/src/esm/utils/findInVertexArray.js.map +1 -0
  172. package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
  173. package/src/esm/utils/helpers/BezierPathInteractionHelper.js +54 -28
  174. package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  175. package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
  176. package/src/esm/utils/io/DndFileHandler.js +106 -0
  177. package/src/esm/utils/io/DndFileHandler.js.map +1 -0
  178. package/src/esm/utils/io/FileDrop.d.ts +98 -0
  179. package/src/esm/utils/io/FileDrop.js +136 -0
  180. package/src/esm/utils/io/FileDrop.js.map +1 -0
  181. package/src/ts/BezierPath.ts +133 -16
  182. package/src/ts/Circle.ts +213 -200
  183. package/src/ts/CircleSector.ts +171 -141
  184. package/src/ts/CubicBezierCurve.ts +777 -810
  185. package/src/ts/KeyHandler.ts +221 -212
  186. package/src/ts/Line.ts +77 -80
  187. package/src/ts/MouseHandler.ts +356 -368
  188. package/src/ts/PBImage.ts +81 -68
  189. package/src/ts/PBText.ts +166 -0
  190. package/src/ts/PlotBoilerplate.ts +48 -20
  191. package/src/ts/Polygon.ts +519 -451
  192. package/src/ts/Triangle.ts +484 -489
  193. package/src/ts/VEllipse.ts +36 -11
  194. package/src/ts/VEllipseSector.ts +20 -1
  195. package/src/ts/Vector.ts +164 -160
  196. package/src/ts/VertTuple.ts +333 -338
  197. package/src/ts/Vertex.ts +117 -16
  198. package/src/ts/VertexListeners.ts +248 -266
  199. package/src/ts/draw.ts +71 -8
  200. package/src/ts/drawgl.ts +48 -8
  201. package/src/ts/drawutilssvg.ts +94 -17
  202. package/src/ts/index.ts +1 -0
  203. package/src/ts/interfaces/DrawLib.ts +30 -4
  204. package/src/ts/interfaces/core.ts +9 -0
  205. package/src/ts/utils/findInVertexArray.ts +28 -0
  206. package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +61 -30
  207. package/src/ts/utils/io/FileDrop.ts +178 -0
  208. package/dist/plotboilerplate.browser.min.js.LICENSE.txt +0 -8
  209. package/src/ts/utils/algorithms/clearPolygonDuplicateVertices.ts~ +0 -5
  210. package/src/ts/utils/algorithms/findPolygonSelfIntersections.ts~ +0 -45
  211. package/src/ts/utils/algorithms/sh-tmp.ts~ +0 -59
  212. package/src/ts/utils/algorithms/splitPolygonToNonIntersecting.ts~ +0 -113
  213. 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
- * @version 1.3.0
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 = ((line.b.x - line.a.x) * a) - ((line.b.y - line.a.y) * b);
102
- var numerator2 = ((this.b.x - this.a.x) * a) - ((this.b.y - this.a.y) * b);
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 + (a * (this.b.x - this.a.x)), this.a.y + (a * (this.b.y - this.a.y)));
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('<g');
127
- if (options.className)
128
- buffer.push(' class="' + options.className + '"');
129
- buffer.push('>');
130
- buffer.push(' <line');
131
- buffer.push(' x1="' + this.a.x + '"');
132
- buffer.push(' y1="' + this.a.y + '"');
133
- buffer.push(' x2="' + vertices[0].x + '"');
134
- buffer.push(' y2="' + vertices[0].y + '"');
135
- buffer.push(' />');
136
- // Add arrow head
137
- buffer.push(' <polygon points="');
138
- for (var i = 0; i < vertices.length; i++) {
139
- if (i > 0)
140
- buffer.push(' ');
141
- buffer.push('' + vertices[i].x + ',' + vertices[i].y);
142
- }
143
- buffer.push('"/>');
144
- buffer.push('</g>');
145
- return buffer.join('');
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 - (headlen) * Math.cos(angle), zB.y * scaleY - (headlen) * Math.sin(angle)));
179
- 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)));
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 - (headlen * 1.35) * Math.cos(angle + Math.PI / 8), zB.y * scaleY - (headlen * 1.35) * Math.sin(angle + Math.PI / 8)));
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
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Vector.js","sourceRoot":"","sources":["../ts/Vector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;IAeI;AAEJ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;;;;IAQI;AACJ,MAAM,OAAO,MAAO,SAAQ,SAAiB;IAOzC;;;;;;;;QAQI;IACJ,YAAa,KAAY,EAAE,KAAY;QAC1C,KAAK,CAAC,KAAK,EAAC,KAAK,EAAC,CAAC,CAAQ,EAAC,CAAQ,EAAC,EAAE,CAAA,IAAI,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;QAfrD;;YAEI;QACK,cAAS,GAAY,QAAQ,CAAC;IAavC,CAAC;IAAA,CAAC;IAIF;;;;;QAKI;IACJ,IAAI;QACP,IAAI,CAAC,GAAY,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAE,CAAC;QAChB,CAAC,GAAG,IAAI,MAAM,CAAE,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;QACzD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAE,CAAC;QAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACN,CAAC;IAAA,CAAC;IAGF;;;;;;QAMI;IACJ,OAAO;QACV,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACb,OAAO,IAAI,CAAC;IACT,CAAC;IAAA,CAAC;IAGF;;;;QAII;IACJ,GAAG;QACN,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACT,CAAC;IAAA,CAAC;IAGF;;;;;;;;QAQI;IACJ,YAAY,CAAE,IAAW;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,WAAW,IAAI,CAAC;YAChB,OAAO,IAAI,CAAC;QAEhB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC,wBAAwB;QACtD,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC;QAE7B,QAAQ;QACR,6DAA6D;QAE7D,6EAA6E;QAC7E,OAAO,IAAI,MAAM,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpD,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;IAC3C,CAAC;IAAA,CAAC;IAGF;;;;;;;;;;QAUI;IACJ,WAAW,CAAE,OAA2B;QAC3C,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAE,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC;QACpB,IAAI,OAAO,CAAC,SAAS;YACjB,MAAM,CAAC,IAAI,CAAE,UAAU,GAAG,OAAO,CAAC,SAAS,GAAG,GAAG,CAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAE,UAAU,CAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAE,KAAK,CAAE,CAAC;QACrB,iBAAiB;QAEjB,MAAM,CAAC,IAAI,CAAE,sBAAsB,CAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAG;YACvC,IAAI,CAAC,GAAG,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;SAC3D;QACD,MAAM,CAAC,IAAI,CAAE,KAAK,CAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAE,MAAM,CAAE,CAAC;QACtB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAAA,CAAC;;AAEK,YAAK,GAAG;IAClB;;;;;;;;;;;;;;;;;;;;;;;;QAwBI;IACJ,cAAc,EAAG,CAAE,EAAS,EAAE,EAAS,EAAE,OAAc,EAAE,MAAa,EAAE,MAAa,EAAG,EAAE;QACtF,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,GAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,GAAC,MAAM,CAAE,CAAC;QACjE,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,MAAM,GAAC,CAAC,OAAO,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAC,MAAM,GAAC,CAAC,OAAO,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAC1G,QAAQ,CAAC,IAAI,CAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,MAAM,GAAC,CAAC,OAAO,GAAC,IAAI,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAC,MAAM,GAAC,CAAC,OAAO,GAAC,IAAI,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAE,CAAE,CAAC;QACzI,QAAQ,CAAC,IAAI,CAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAC,MAAM,CAAC,CAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,MAAM,GAAC,CAAC,OAAO,GAAC,IAAI,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAC,MAAM,GAAC,CAAC,OAAO,GAAC,IAAI,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC,CAAE,CAAC;QAExI,OAAO,QAAQ,CAAC;IACpB,CAAC;CACG,CAAA"}
1
+ {"version":3,"file":"Vector.js","sourceRoot":"","sources":["../ts/Vector.ts"],"names":[],"mappings":"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"}
@@ -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
- * @version 1.1.0
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
  **/
@@ -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
- * @version 1.1.0
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 == 'undefined') {
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 ((line.b.y - line.a.y) * (this.b.x - this.a.x)) - ((line.b.x - line.a.x) * (this.b.y - this.a.y));
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
@@ -1 +1 @@
1
- {"version":3,"file":"VertTuple.js","sourceRoot":"","sources":["../ts/VertTuple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VertTuple.js","sourceRoot":"","sources":["../ts/VertTuple.ts"],"names":[],"mappings":"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"}
@@ -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
- * @version 2.4.2
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 {Vertex=} center - The origin of scaling; default is (0,0).
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
- scale(factor: number, center?: Vertex): Vertex;
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
- * @version 2.4.2
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 {Vertex=} center - The origin of scaling; default is (0,0).
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
- if (!center || typeof center === "undefined")
380
- center = new Vertex(0, 0);
381
- this.x = center.x + (this.x - center.x) * factor;
382
- this.y = center.y + (this.y - center.y) * factor;
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
- buffer.push(' class="' + options.className + '"');
478
- buffer.push(' cx="' + this.x + '"');
479
- buffer.push(' cy="' + this.y + '"');
480
- buffer.push(' r="2"');
481
- buffer.push(" />");
482
- return buffer.join("");
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