plotboilerplate 1.21.0 → 1.23.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 (325) hide show
  1. package/README.md +2 -0
  2. package/dist/index.esm.js +252 -77
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.esm.min.js +1 -1
  5. package/dist/index.esm.min.js.map +1 -1
  6. package/dist/plotboilerplate.browser.min.js +1 -1
  7. package/dist/plotboilerplate.browser.min.js.map +1 -1
  8. package/dist/plotboilerplate.js +522 -338
  9. package/dist/plotboilerplate.min.js +1 -1
  10. package/package.json +7 -5
  11. package/src/cjs/BezierPath.js.map +1 -1
  12. package/src/cjs/Bounds.js +1 -1
  13. package/src/cjs/Bounds.js.map +1 -1
  14. package/src/cjs/Circle.js.map +1 -1
  15. package/src/cjs/CircleSector.d.ts +64 -1
  16. package/src/cjs/CircleSector.js +121 -1
  17. package/src/cjs/CircleSector.js.map +1 -1
  18. package/src/cjs/CubicBezierCurve.js +2 -2
  19. package/src/cjs/CubicBezierCurve.js.map +1 -1
  20. package/src/cjs/Grid.js.map +1 -1
  21. package/src/cjs/KeyHandler.d.ts +1 -1
  22. package/src/cjs/KeyHandler.js +13 -13
  23. package/src/cjs/KeyHandler.js.map +1 -1
  24. package/src/cjs/Line.js +2 -0
  25. package/src/cjs/Line.js.map +1 -1
  26. package/src/cjs/MouseHandler.d.ts +2 -2
  27. package/src/cjs/MouseHandler.js +7 -5
  28. package/src/cjs/MouseHandler.js.map +1 -1
  29. package/src/cjs/PlotBoilerplate.d.ts +1 -1
  30. package/src/cjs/PlotBoilerplate.js +77 -63
  31. package/src/cjs/PlotBoilerplate.js.map +1 -1
  32. package/src/cjs/Polygon.d.ts +13 -1
  33. package/src/cjs/Polygon.js +30 -1
  34. package/src/cjs/Polygon.js.map +1 -1
  35. package/src/cjs/Triangle.js +1 -1
  36. package/src/cjs/Triangle.js.map +1 -1
  37. package/src/cjs/UIDGenerator.js +1 -1
  38. package/src/cjs/UIDGenerator.js.map +1 -1
  39. package/src/cjs/VEllipse.js.map +1 -1
  40. package/src/cjs/VEllipseSector.js +1 -1
  41. package/src/cjs/VEllipseSector.js.map +1 -1
  42. package/src/cjs/Vector.js +2 -0
  43. package/src/cjs/Vector.js.map +1 -1
  44. package/src/cjs/VertTuple.js.map +1 -1
  45. package/src/cjs/Vertex.d.ts +3 -2
  46. package/src/cjs/Vertex.js +13 -7
  47. package/src/cjs/Vertex.js.map +1 -1
  48. package/src/cjs/VertexAttr.d.ts +2 -1
  49. package/src/cjs/VertexAttr.js +2 -1
  50. package/src/cjs/VertexAttr.js.map +1 -1
  51. package/src/cjs/VertexListeners.d.ts +1 -1
  52. package/src/cjs/VertexListeners.js.map +1 -1
  53. package/src/cjs/draw.js +1 -1
  54. package/src/cjs/draw.js.map +1 -1
  55. package/src/cjs/drawgl.js.map +1 -1
  56. package/src/cjs/drawutilssvg.d.ts +17 -3
  57. package/src/cjs/drawutilssvg.js +97 -91
  58. package/src/cjs/drawutilssvg.js.map +1 -1
  59. package/src/cjs/geomutils.js +2 -2
  60. package/src/cjs/geomutils.js.map +1 -1
  61. package/src/cjs/index.js +5 -1
  62. package/src/cjs/index.js.map +1 -1
  63. package/src/cjs/interfaces/DrawLib.d.ts +2 -2
  64. package/src/cjs/interfaces/core.d.ts +3 -3
  65. package/src/cjs/interfaces/index.js +5 -1
  66. package/src/cjs/interfaces/index.js.map +1 -1
  67. package/src/cjs/utils/NGons.d.ts +13 -0
  68. package/src/cjs/utils/NGons.js +36 -0
  69. package/src/cjs/utils/NGons.js.map +1 -0
  70. package/src/cjs/utils/Params.d.ts +15 -0
  71. package/src/cjs/utils/Params.js +49 -0
  72. package/src/cjs/utils/Params.js.map +1 -0
  73. package/src/cjs/utils/WebColors.js.map +1 -1
  74. package/src/cjs/utils/WebColorsContrast.js +1 -1
  75. package/src/cjs/utils/WebColorsContrast.js.map +1 -1
  76. package/src/cjs/utils/algorithms/CatmullRomPath.js.map +1 -1
  77. package/src/cjs/utils/algorithms/CircleIntersections.d.ts +3 -2
  78. package/src/cjs/utils/algorithms/CircleIntersections.js +12 -20
  79. package/src/cjs/utils/algorithms/CircleIntersections.js.map +1 -1
  80. package/src/cjs/utils/algorithms/ContourLineDetection.d.ts +150 -0
  81. package/src/cjs/utils/algorithms/ContourLineDetection.js +367 -0
  82. package/src/cjs/utils/algorithms/ContourLineDetection.js.map +1 -0
  83. package/src/cjs/utils/algorithms/CubicSplinePath.js.map +1 -1
  84. package/src/cjs/utils/algorithms/HobbyPath.js.map +1 -1
  85. package/src/cjs/utils/algorithms/Metaballs.d.ts +30 -0
  86. package/src/cjs/utils/algorithms/Metaballs.js +114 -0
  87. package/src/cjs/utils/algorithms/Metaballs.js.map +1 -0
  88. package/src/cjs/utils/algorithms/arrayResize.d.ts +8 -0
  89. package/src/cjs/utils/algorithms/arrayResize.js +24 -0
  90. package/src/cjs/utils/algorithms/arrayResize.js.map +1 -0
  91. package/src/cjs/utils/algorithms/clearDuplicateVertices.d.ts +21 -0
  92. package/src/cjs/utils/algorithms/clearDuplicateVertices.js +48 -0
  93. package/src/cjs/utils/algorithms/clearDuplicateVertices.js.map +1 -0
  94. package/src/cjs/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -1
  95. package/src/cjs/utils/algorithms/convexHull.js.map +1 -1
  96. package/src/cjs/utils/algorithms/convexPolygonIncircle.js.map +1 -1
  97. package/src/cjs/utils/algorithms/delaunay.js.map +1 -1
  98. package/src/cjs/utils/algorithms/delaunay2voronoi.js.map +1 -1
  99. package/src/cjs/utils/algorithms/detectPaths.js.map +1 -1
  100. package/src/cjs/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
  101. package/src/cjs/utils/algorithms/matrixFill.js +1 -1
  102. package/src/cjs/utils/algorithms/matrixFill.js.map +1 -1
  103. package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
  104. package/src/cjs/utils/algorithms/sutherlandHodgman.js.map +1 -1
  105. package/src/cjs/utils/cloneVertexArray.js.map +1 -1
  106. package/src/cjs/utils/creategui.js +20 -12
  107. package/src/cjs/utils/datastructures/CircularIntervalSet.js.map +1 -1
  108. package/src/cjs/utils/datastructures/Color.d.ts +2 -1
  109. package/src/cjs/utils/datastructures/Color.js +35 -16
  110. package/src/cjs/utils/datastructures/Color.js.map +1 -1
  111. package/src/cjs/utils/datastructures/DataGrid2d.d.ts +47 -0
  112. package/src/cjs/utils/datastructures/DataGrid2d.js +20 -0
  113. package/src/cjs/utils/datastructures/DataGrid2d.js.map +1 -0
  114. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.d.ts +65 -0
  115. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.js +84 -0
  116. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
  117. package/src/cjs/utils/datastructures/GenericPath.d.ts +14 -3
  118. package/src/cjs/utils/datastructures/GenericPath.js +20 -3
  119. package/src/cjs/utils/datastructures/GenericPath.js.map +1 -1
  120. package/src/cjs/utils/datastructures/Girih.d.ts +3 -2
  121. package/src/cjs/utils/datastructures/Girih.js +2 -1
  122. package/src/cjs/utils/datastructures/Girih.js.map +1 -1
  123. package/src/cjs/utils/datastructures/GirihBowtie.js +2 -0
  124. package/src/cjs/utils/datastructures/GirihBowtie.js.map +1 -1
  125. package/src/cjs/utils/datastructures/GirihDecagon.js +2 -0
  126. package/src/cjs/utils/datastructures/GirihDecagon.js.map +1 -1
  127. package/src/cjs/utils/datastructures/GirihHexagon.js +2 -0
  128. package/src/cjs/utils/datastructures/GirihHexagon.js.map +1 -1
  129. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js +3 -1
  130. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  131. package/src/cjs/utils/datastructures/GirihPentagon.js +2 -0
  132. package/src/cjs/utils/datastructures/GirihPentagon.js.map +1 -1
  133. package/src/cjs/utils/datastructures/GirihRhombus.js +2 -0
  134. package/src/cjs/utils/datastructures/GirihRhombus.js.map +1 -1
  135. package/src/cjs/utils/datastructures/GirihTile.js +4 -2
  136. package/src/cjs/utils/datastructures/GirihTile.js.map +1 -1
  137. package/src/cjs/utils/datastructures/Matrix4x4.js.map +1 -1
  138. package/src/cjs/utils/datastructures/VoronoiCell.js.map +1 -1
  139. package/src/cjs/utils/datastructures/interfaces.d.ts +3 -3
  140. package/src/cjs/utils/detectDarkMode.js.map +1 -1
  141. package/src/cjs/utils/dom/getAvailableContainerSpace.js +1 -1
  142. package/src/cjs/utils/dom/getAvailableContainerSpace.js.map +1 -1
  143. package/src/cjs/utils/findInVertexArray.js.map +1 -1
  144. package/src/cjs/utils/gup.d.ts +8 -0
  145. package/src/cjs/utils/gup.js +8 -0
  146. package/src/cjs/utils/gup.js.map +1 -1
  147. package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +6 -5
  148. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +3 -2
  149. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  150. package/src/cjs/utils/helpers/CircleHelper.d.ts +38 -3
  151. package/src/cjs/utils/helpers/CircleHelper.js +51 -11
  152. package/src/cjs/utils/helpers/CircleHelper.js.map +1 -1
  153. package/src/cjs/utils/helpers/CircleSectorHelper.d.ts +47 -1
  154. package/src/cjs/utils/helpers/CircleSectorHelper.js +85 -14
  155. package/src/cjs/utils/helpers/CircleSectorHelper.js.map +1 -1
  156. package/src/cjs/utils/io/FileDrop.d.ts +3 -3
  157. package/src/cjs/utils/io/FileDrop.js.map +1 -1
  158. package/src/cjs/utils/parsers/OBJParser.d.ts +2 -2
  159. package/src/cjs/utils/parsers/OBJParser.js.map +1 -1
  160. package/src/cjs/utils/parsers/STLParser.d.ts +4 -3
  161. package/src/cjs/utils/parsers/STLParser.js +62 -12
  162. package/src/cjs/utils/parsers/STLParser.js.map +1 -1
  163. package/src/cjs/utils/parsers/svg/parseSVGPathData.js +1 -1
  164. package/src/cjs/utils/parsers/svg/parseSVGPathData.js.map +1 -1
  165. package/src/cjs/utils/parsers/svg/splitSVGPathData.js.map +1 -1
  166. package/src/cjs/utils/parsers/svg/types.d.ts +13 -13
  167. package/src/createDemoDrawables.js +48 -3
  168. package/src/esm/BezierPath.js.map +1 -1
  169. package/src/esm/Bounds.js.map +1 -1
  170. package/src/esm/Circle.js.map +1 -1
  171. package/src/esm/CircleSector.d.ts +64 -1
  172. package/src/esm/CircleSector.js +121 -1
  173. package/src/esm/CircleSector.js.map +1 -1
  174. package/src/esm/CubicBezierCurve.js.map +1 -1
  175. package/src/esm/Grid.js.map +1 -1
  176. package/src/esm/KeyHandler.d.ts +1 -1
  177. package/src/esm/KeyHandler.js +13 -13
  178. package/src/esm/KeyHandler.js.map +1 -1
  179. package/src/esm/Line.js.map +1 -1
  180. package/src/esm/MouseHandler.d.ts +2 -2
  181. package/src/esm/MouseHandler.js +4 -4
  182. package/src/esm/MouseHandler.js.map +1 -1
  183. package/src/esm/PlotBoilerplate.d.ts +1 -1
  184. package/src/esm/PlotBoilerplate.js +43 -29
  185. package/src/esm/PlotBoilerplate.js.map +1 -1
  186. package/src/esm/Polygon.d.ts +13 -1
  187. package/src/esm/Polygon.js +30 -1
  188. package/src/esm/Polygon.js.map +1 -1
  189. package/src/esm/Triangle.js.map +1 -1
  190. package/src/esm/VEllipse.js.map +1 -1
  191. package/src/esm/VEllipseSector.js +1 -1
  192. package/src/esm/VEllipseSector.js.map +1 -1
  193. package/src/esm/Vector.js.map +1 -1
  194. package/src/esm/VertTuple.js.map +1 -1
  195. package/src/esm/Vertex.d.ts +3 -2
  196. package/src/esm/Vertex.js +9 -3
  197. package/src/esm/Vertex.js.map +1 -1
  198. package/src/esm/VertexAttr.d.ts +2 -1
  199. package/src/esm/VertexAttr.js +2 -1
  200. package/src/esm/VertexAttr.js.map +1 -1
  201. package/src/esm/VertexListeners.d.ts +1 -1
  202. package/src/esm/VertexListeners.js.map +1 -1
  203. package/src/esm/draw.js.map +1 -1
  204. package/src/esm/drawgl.js.map +1 -1
  205. package/src/esm/drawutilssvg.d.ts +17 -3
  206. package/src/esm/drawutilssvg.js +28 -22
  207. package/src/esm/drawutilssvg.js.map +1 -1
  208. package/src/esm/geomutils.js +2 -2
  209. package/src/esm/geomutils.js.map +1 -1
  210. package/src/esm/interfaces/DrawLib.d.ts +2 -2
  211. package/src/esm/interfaces/core.d.ts +3 -3
  212. package/src/esm/utils/NGons.d.ts +13 -0
  213. package/src/esm/utils/NGons.js +33 -0
  214. package/src/esm/utils/NGons.js.map +1 -0
  215. package/src/esm/utils/Params.d.ts +15 -0
  216. package/src/esm/utils/Params.js +44 -0
  217. package/src/esm/utils/Params.js.map +1 -0
  218. package/src/esm/utils/WebColors.js.map +1 -1
  219. package/src/esm/utils/algorithms/CatmullRomPath.js.map +1 -1
  220. package/src/esm/utils/algorithms/CircleIntersections.d.ts +3 -2
  221. package/src/esm/utils/algorithms/CircleIntersections.js +11 -19
  222. package/src/esm/utils/algorithms/CircleIntersections.js.map +1 -1
  223. package/src/esm/utils/algorithms/ContourLineDetection.d.ts +150 -0
  224. package/src/esm/utils/algorithms/ContourLineDetection.js +362 -0
  225. package/src/esm/utils/algorithms/ContourLineDetection.js.map +1 -0
  226. package/src/esm/utils/algorithms/CubicSplinePath.js.map +1 -1
  227. package/src/esm/utils/algorithms/HobbyPath.js.map +1 -1
  228. package/src/esm/utils/algorithms/Metaballs.d.ts +30 -0
  229. package/src/esm/utils/algorithms/Metaballs.js +109 -0
  230. package/src/esm/utils/algorithms/Metaballs.js.map +1 -0
  231. package/src/esm/utils/algorithms/arrayResize.d.ts +8 -0
  232. package/src/esm/utils/algorithms/arrayResize.js +20 -0
  233. package/src/esm/utils/algorithms/arrayResize.js.map +1 -0
  234. package/src/esm/utils/algorithms/clearDuplicateVertices.d.ts +21 -0
  235. package/src/esm/utils/algorithms/clearDuplicateVertices.js +44 -0
  236. package/src/esm/utils/algorithms/clearDuplicateVertices.js.map +1 -0
  237. package/src/esm/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -1
  238. package/src/esm/utils/algorithms/convexHull.js.map +1 -1
  239. package/src/esm/utils/algorithms/convexPolygonIncircle.js.map +1 -1
  240. package/src/esm/utils/algorithms/delaunay.js.map +1 -1
  241. package/src/esm/utils/algorithms/delaunay2voronoi.js.map +1 -1
  242. package/src/esm/utils/algorithms/detectPaths.js.map +1 -1
  243. package/src/esm/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
  244. package/src/esm/utils/algorithms/matrixFill.js.map +1 -1
  245. package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
  246. package/src/esm/utils/algorithms/sutherlandHodgman.js.map +1 -1
  247. package/src/esm/utils/cloneVertexArray.js.map +1 -1
  248. package/src/esm/utils/datastructures/CircularIntervalSet.js.map +1 -1
  249. package/src/esm/utils/datastructures/Color.d.ts +2 -1
  250. package/src/esm/utils/datastructures/Color.js +33 -14
  251. package/src/esm/utils/datastructures/Color.js.map +1 -1
  252. package/src/esm/utils/datastructures/DataGrid2d.d.ts +47 -0
  253. package/src/esm/utils/datastructures/DataGrid2d.js +19 -0
  254. package/src/esm/utils/datastructures/DataGrid2d.js.map +1 -0
  255. package/src/esm/utils/datastructures/DataGrid2dListAdapter.d.ts +65 -0
  256. package/src/esm/utils/datastructures/DataGrid2dListAdapter.js +79 -0
  257. package/src/esm/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
  258. package/src/esm/utils/datastructures/GenericPath.d.ts +14 -3
  259. package/src/esm/utils/datastructures/GenericPath.js +20 -3
  260. package/src/esm/utils/datastructures/GenericPath.js.map +1 -1
  261. package/src/esm/utils/datastructures/Girih.d.ts +3 -2
  262. package/src/esm/utils/datastructures/Girih.js +2 -1
  263. package/src/esm/utils/datastructures/Girih.js.map +1 -1
  264. package/src/esm/utils/datastructures/GirihBowtie.js.map +1 -1
  265. package/src/esm/utils/datastructures/GirihDecagon.js.map +1 -1
  266. package/src/esm/utils/datastructures/GirihHexagon.js.map +1 -1
  267. package/src/esm/utils/datastructures/GirihPenroseRhombus.js +1 -1
  268. package/src/esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  269. package/src/esm/utils/datastructures/GirihPentagon.js.map +1 -1
  270. package/src/esm/utils/datastructures/GirihRhombus.js.map +1 -1
  271. package/src/esm/utils/datastructures/GirihTile.js.map +1 -1
  272. package/src/esm/utils/datastructures/Matrix4x4.js.map +1 -1
  273. package/src/esm/utils/datastructures/VoronoiCell.js.map +1 -1
  274. package/src/esm/utils/datastructures/interfaces.d.ts +3 -3
  275. package/src/esm/utils/detectDarkMode.js.map +1 -1
  276. package/src/esm/utils/findInVertexArray.js.map +1 -1
  277. package/src/esm/utils/gup.d.ts +8 -0
  278. package/src/esm/utils/gup.js +8 -0
  279. package/src/esm/utils/gup.js.map +1 -1
  280. package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +6 -5
  281. package/src/esm/utils/helpers/BezierPathInteractionHelper.js +3 -2
  282. package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  283. package/src/esm/utils/helpers/CircleHelper.d.ts +38 -3
  284. package/src/esm/utils/helpers/CircleHelper.js +51 -11
  285. package/src/esm/utils/helpers/CircleHelper.js.map +1 -1
  286. package/src/esm/utils/helpers/CircleSectorHelper.d.ts +47 -1
  287. package/src/esm/utils/helpers/CircleSectorHelper.js +85 -14
  288. package/src/esm/utils/helpers/CircleSectorHelper.js.map +1 -1
  289. package/src/esm/utils/io/FileDrop.d.ts +3 -3
  290. package/src/esm/utils/io/FileDrop.js.map +1 -1
  291. package/src/esm/utils/parsers/OBJParser.d.ts +2 -2
  292. package/src/esm/utils/parsers/OBJParser.js.map +1 -1
  293. package/src/esm/utils/parsers/STLParser.d.ts +4 -3
  294. package/src/esm/utils/parsers/STLParser.js +63 -13
  295. package/src/esm/utils/parsers/STLParser.js.map +1 -1
  296. package/src/esm/utils/parsers/svg/parseSVGPathData.js.map +1 -1
  297. package/src/esm/utils/parsers/svg/splitSVGPathData.js.map +1 -1
  298. package/src/esm/utils/parsers/svg/types.d.ts +13 -13
  299. package/src/index-gl.js +77 -85
  300. package/src/index.js +124 -129
  301. package/src/ts/CircleSector.ts +134 -3
  302. package/src/ts/PlotBoilerplate.ts +20 -11
  303. package/src/ts/Polygon.ts +31 -1
  304. package/src/ts/Vertex.ts +8 -3
  305. package/src/ts/VertexAttr.ts +3 -2
  306. package/src/ts/drawutilssvg.ts +38 -25
  307. package/src/ts/geomutils.ts +60 -64
  308. package/src/ts/interfaces/DrawLib.ts +0 -15
  309. package/src/ts/utils/NGons.ts +35 -0
  310. package/src/ts/utils/Params.ts +47 -0
  311. package/src/ts/utils/algorithms/CircleIntersections.ts +280 -288
  312. package/src/ts/utils/algorithms/ContourLineDetection.ts +485 -0
  313. package/src/ts/utils/algorithms/Metaballs.ts +144 -0
  314. package/src/ts/utils/algorithms/arrayResize.ts +22 -0
  315. package/src/ts/utils/algorithms/clearDuplicateVertices.ts +49 -0
  316. package/src/ts/utils/datastructures/Color.ts +39 -15
  317. package/src/ts/utils/datastructures/DataGrid2d.ts +54 -0
  318. package/src/ts/utils/datastructures/DataGrid2dListAdapter.ts +121 -0
  319. package/src/ts/utils/datastructures/GenericPath.ts +21 -3
  320. package/src/ts/utils/datastructures/Girih.ts +9 -8
  321. package/src/ts/utils/gup.ts +10 -2
  322. package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +9 -8
  323. package/src/ts/utils/helpers/CircleHelper.ts +70 -22
  324. package/src/ts/utils/helpers/CircleSectorHelper.ts +101 -17
  325. package/src/ts/utils/parsers/STLParser.ts +50 -16
@@ -2,7 +2,8 @@
2
2
  * @author Ikaros Kappler
3
3
  * @date 2020-10-05
4
4
  * @modified 2021-02-08 Fixed a lot of es2015 compatibility issues.
5
- * @version 1.0.1
5
+ * @modified 2024-02-23 Fixed some null-type conflicts.
6
+ * @version 1.0.2
6
7
  * @file CircleIntersections
7
8
  * @public
8
9
  **/
@@ -55,7 +56,6 @@ export class CircleIntersections {
55
56
  }
56
57
  return pathList;
57
58
  }
58
- ;
59
59
  /**
60
60
  * Find all connected outer path partitions (as CircleSectors).
61
61
  *
@@ -83,7 +83,6 @@ export class CircleIntersections {
83
83
  } // END for
84
84
  return partitionsAsArcs;
85
85
  }
86
- ;
87
86
  /**
88
87
  * Build the n*n intersection matrix: contains the radical line at (i,j) if circle i and circle j do intersect;
89
88
  * conatins null at (i,j) otherwise.
@@ -102,8 +101,9 @@ export class CircleIntersections {
102
101
  static buildRadicalLineMatrix(circles) {
103
102
  var radicalLines = [];
104
103
  for (var i = 0; i < circles.length; i++) {
105
- if (!radicalLines[i])
106
- radicalLines[i] = arrayFill(circles.length, null); // Array<Line>( circles.length );
104
+ if (!radicalLines[i]) {
105
+ radicalLines[i] = arrayFill(circles.length, null);
106
+ }
107
107
  for (var j = 0; j < circles.length; j++) {
108
108
  if (i == j)
109
109
  continue;
@@ -111,17 +111,18 @@ export class CircleIntersections {
111
111
  continue;
112
112
  radicalLines[i][j] = circles[i].circleIntersection(circles[j]);
113
113
  // Build symmetrical matrix
114
- if (radicalLines[i][j]) {
115
- if (!radicalLines[j])
116
- radicalLines[j] = arrayFill(circles.length, null); // Array<Line>( circles.length );
114
+ var tmpRadLine = radicalLines[i][j];
115
+ if (tmpRadLine) {
116
+ if (!radicalLines[j]) {
117
+ radicalLines[j] = arrayFill(circles.length, null);
118
+ }
117
119
  // Use reverse line
118
- radicalLines[j][i] = new Line(radicalLines[i][j].b, radicalLines[i][j].a);
120
+ radicalLines[j][i] = new Line(tmpRadLine.b, tmpRadLine.a);
119
121
  }
120
122
  }
121
123
  }
122
124
  return radicalLines;
123
125
  }
124
- ;
125
126
  /**
126
127
  * Find all circles (indices) which are completely located inside another circle.
127
128
  *
@@ -146,7 +147,6 @@ export class CircleIntersections {
146
147
  }
147
148
  return innerCircleIndices;
148
149
  }
149
- ;
150
150
  /**
151
151
  * Calculate all outer circle intervals (sections that belong to the outermost line), dermined by the given
152
152
  * circles and their radical lines.
@@ -178,7 +178,6 @@ export class CircleIntersections {
178
178
  }
179
179
  return intervalSets;
180
180
  }
181
- ;
182
181
  /**
183
182
  * Calculate the next connected partition from the given set of circles and outer path intervals. The function
184
183
  * will pick a random unused circle interval and detect all adjacent intervals until a closed partition
@@ -205,10 +204,8 @@ export class CircleIntersections {
205
204
  usedIntervals[intLocation.i][intLocation.j] = true;
206
205
  intLocation = CircleIntersections.findAdjacentInterval(circles, intLocation, intervalSets, usedIntervals, 0.001);
207
206
  }
208
- ;
209
207
  return path.length == 0 ? null : path;
210
208
  }
211
- ;
212
209
  /**
213
210
  * Convert a radical line (belonging to a circle) into an interval: start angle and end angle.
214
211
  *
@@ -234,7 +231,6 @@ export class CircleIntersections {
234
231
  angleB = Math.PI * 2 + angleB;
235
232
  return [angleA, angleB];
236
233
  }
237
- ;
238
234
  /**
239
235
  * This is a helper fuction used by `findOuterCircleIntervals`.
240
236
  *
@@ -253,7 +249,6 @@ export class CircleIntersections {
253
249
  const interval = CircleIntersections.radicalLineToInterval(circle, radicalLine);
254
250
  intervalSet.intersect(interval[1], interval[0]);
255
251
  }
256
- ;
257
252
  /**
258
253
  * Pick a random unused circle interval. This function is used by the `findOuterPartition` function, which
259
254
  * starts the detection with any random section.
@@ -276,7 +271,6 @@ export class CircleIntersections {
276
271
  }
277
272
  return null;
278
273
  }
279
- ;
280
274
  /**
281
275
  * Find the next adjacent circle interval for the given interval.
282
276
  * starts the detection with any random section.
@@ -305,7 +299,5 @@ export class CircleIntersections {
305
299
  }
306
300
  return null;
307
301
  }
308
- ;
309
302
  }
310
- ;
311
303
  //# sourceMappingURL=CircleIntersections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CircleIntersections.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/CircleIntersections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CircleIntersections.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/CircleIntersections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * A function to detect contour lines from 3D terrain data.
3
+ *
4
+ * For usage see demo `./demos/48-contour-plot`.
5
+ *
6
+ * @requires detectPaths
7
+ * @requires GenericPath
8
+ * @author Ikaros Kappler
9
+ * @date 2023-11-05
10
+ * @modified 2023-11-20 Addig path detection on a triangle based grid.
11
+ * @version 1.0.0
12
+ */
13
+ import { Line } from "../../Line";
14
+ import { IDataGrid2d } from "../datastructures/DataGrid2d";
15
+ import { GenericPath } from "../datastructures/GenericPath";
16
+ export declare class ContourLineDetection {
17
+ private dataGrid;
18
+ private rawLinearPathSegments;
19
+ static CLOSE_GAP_TYPE_NONE: number;
20
+ static CLOSE_GAP_TYPE_ABOVE: number;
21
+ static CLOSE_GAP_TYPE_BELOW: number;
22
+ debugMode: boolean;
23
+ /**
24
+ * Creates a new instance for calculating contour lines from the given data grid.
25
+ * @param {IDataGrid2d<number>} dataGrid - The data grid to use. Must not contain any NaN or null values.
26
+ * @param {boolean=?} debugMode - (optional) Pass `true` to log warnings on (rare) critical edge cases where the algorithm might fail.
27
+ */
28
+ constructor(dataGrid: IDataGrid2d<number>, debugMode?: boolean);
29
+ /**
30
+ * Detect contour paths from the underlying data source.
31
+ *
32
+ * @param {number} criticalHeightValue - The height value. If above data's maximum or below data's minimum then the result will be empty (no intersections).
33
+ * @param {number} options.closeGapType - `CLOSE_GAP_TYPE_NONE` or `CLOSE_GAP_TYPE_ABOVE` or `CLOSE_GAP_TYPE_BELOW`.
34
+ * @param {boolean=false} options.useTriangles - If set to true the detection will split each face3 quad into two triangle faces.
35
+ * @param {pathDetectEpsilon=0.000001} options.pathDetectEpsilon - (optional) The epsilon to tell if two points are located 'in the same place'. Used for connected path detection. If not specified the value `0.0000001` is used.
36
+ * @param {pointEliminationEpsilon=0.0000001} options.pointEliminationEpsilon - (optional) The epsilon for duplicate point elimination (default is 0.000001).
37
+ * @param {function?} onRawSegmentsDetected - (optional) Get the interim result of all detected single lines before path detection starts; DO NOT MODIFY the array.
38
+ * @returns {Array<GenericPath>} - A list of connected paths that resemble the contour lines of the data/terrain at the given height value.
39
+ */
40
+ detectContourPaths(criticalHeightValue: number, options?: {
41
+ closeGapType: number;
42
+ useTriangles?: boolean;
43
+ pointEliminationEpsilon?: number;
44
+ pathDetectEpsilon?: number;
45
+ onRawSegmentsDetected?: (rawSegmentsDoNotModifiy: Array<Line>) => void;
46
+ }): Array<GenericPath>;
47
+ /**
48
+ * This function will calculate a single intersecion line of the given face4 data
49
+ * segment. If the given face does not intersect with the plane at the given `heightValue`
50
+ * then no segments will be stored.
51
+ *
52
+ * @param {number} xIndex - The x position (index) of the data face.
53
+ * @param {number} yIndex - The y position (index) of the data face.
54
+ * @param {[[number,number],[number,number]]} heightFace - The data sample that composes the face4 as a two-dimensional number array.
55
+ * @param {number} heightValue - The height value of the intersection plane to check for.
56
+ * @returns {Line|null}
57
+ */
58
+ private findHeight4FaceIntersectionLine;
59
+ /**
60
+ * This function will calculate a single intersecion line of the given face4 data
61
+ * segment. If the given face does not intersect with the plane at the given `heightValue`
62
+ * then no segments will be stored.
63
+ *
64
+ * @param {number} xIndex - The x position (index) of the data face.
65
+ * @param {number} yIndex - The y position (index) of the data face.
66
+ * @param {[[number,number],[number,number]]} heightFace - The data sample that composes the face4 as a two-dimensional number array.
67
+ * @param {number} heightValue - The height value of the intersection plane to check for.
68
+ * @returns {Line|null}
69
+ */
70
+ private findHeightFaceIntersectionLines;
71
+ /**
72
+ * This function will calculate a single intersecion line of the given face3 data
73
+ * segment. If the given face does not intersect with the plane at the given `heightValue`
74
+ * then no segments will be stored.
75
+ *
76
+ * @param {number} xIndexA - The x position (index) of the first triangle data point.
77
+ * @param {number} yIndexA - The y position (index) of the first triangle data point.
78
+ * @param {[[number,number],[number,number]]} heightFace - The data sample that composes the face4 as a two-dimensional number array.
79
+ * @param {number} heightValue - The height value of the intersection plane to check for.
80
+ * @returns {Line|null}
81
+ */
82
+ private findHeighteFace3IntersectionLine;
83
+ /**
84
+ * This procedure will look at the face4 at the ((x,y),(nextX,nextY)) position – which are four values –
85
+ * and determines the local contour lines for these cases.
86
+ *
87
+ * This is used to detect and calculate edge cases on the borders of the underliying height data:
88
+ * * left and right border (x=0, x=data.xSegmentCount)
89
+ * * top and bottom border (x=y, x=data.ySegmentCount)
90
+ *
91
+ * Resulting path segments will be stored in the global `rawLinearPathSegments` array for further processing.
92
+ *
93
+ * @param {number} x
94
+ * @param {number} y
95
+ * @param {number} nextX
96
+ * @param {number} nextY
97
+ * @param {number} criticalHeightValue
98
+ * @param {number} closeGapType - CLOSE_GAP_TYPE_ABOVE or CLOSE_GAP_TYPE_BELOW.
99
+ * @return {void}
100
+ */
101
+ detectAboveBelowLerpSegment(x: number, y: number, nextX: number, nextY: number, criticalHeightValue: number, closeGapType: number): void;
102
+ /**
103
+ * Checks if both value are on the same side of the critical value (above or below). The `closeGapType`
104
+ * indictes if `CLOSE_GAP_TYPE_BELOW` or `CLOSE_GAP_TYPE_ABOVE` should be used as a rule.
105
+ *
106
+ * @param {number} valueA
107
+ * @param {number} valueB
108
+ * @param {number} criticalValue
109
+ * @param {number} closeGapType
110
+ * @returns {boolean}
111
+ */
112
+ private areBothValuesOnRequiredPlaneSide;
113
+ /**
114
+ * Test if a given numeric value (`curValue`) is between the given values `valA` and `valB`.
115
+ * Value A and B don't need to be in ascending order, so `valA <= curValue <= valB` and `valB <= curvalue <= valA`
116
+ * will do the job.
117
+ *
118
+ * @param {number} valA - The first of the two bounds.
119
+ * @param {number} valB - The second of the two bounds.
120
+ * @param {number} curValue - The value to check if it is between (or equal) to the given bounds.
121
+ * @returns {boolean}
122
+ */
123
+ private isBetween;
124
+ /**
125
+ * Get a 'lerp' value - which is some sort of percentage/ratio for the `curValue` inside the
126
+ * range of the given interval `[valA ... valB]`.
127
+ *
128
+ * Examples:
129
+ * * getLerpRatio(0,100,50) === 0.5
130
+ * * getLerpRatio(50,100,75) === 0.5
131
+ * * getLerpRatio(0,100,0) === 0.0
132
+ * * getLerpRatio(0,100,100) === 1.0
133
+ * * getLerpRatio(0,100,-50) === -0.5
134
+ *
135
+ * @param {number} valA
136
+ * @param {number} valB
137
+ * @param {number} curValue
138
+ * @returns
139
+ */
140
+ private getLerpRatio;
141
+ /**
142
+ * Helper function to lerp a numeric value.
143
+ *
144
+ * @param {number} min - The min (start) value. Doesn't necesarily need to be the smaller one.
145
+ * @param {number} max - The max (end) value. Doesn't necesarily need to be the larger one.
146
+ * @param {number} ratio - The lerp ratio; usually a value between 0.0 and 1.0, but other values a valid for linear interpolation, too.
147
+ * @returns {number}
148
+ */
149
+ private lerp;
150
+ }