flo-mat 2.0.1 → 2.0.3
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/.eslintrc.cjs +69 -0
- package/README.md +9 -27
- package/browser/index.js +29604 -7008
- package/browser/index.min.js +1 -2
- package/node/circle.d.ts +20 -20
- package/node/circle.js +31 -31
- package/node/circle.js.map +1 -1
- package/node/compare-curvatures-at-interface.d.ts +19 -19
- package/node/compare-curvatures-at-interface.js +124 -124
- package/node/compare-curvatures-at-interface.js.map +1 -1
- package/node/contact-point.d.ts +26 -26
- package/node/contact-point.js +25 -25
- package/node/cp-node/clone.d.ts +8 -8
- package/node/cp-node/clone.js +31 -31
- package/node/cp-node/clone.js.map +1 -1
- package/node/cp-node/remove.d.ts +9 -9
- package/node/cp-node/remove.js +19 -19
- package/node/cp-node/remove.js.map +1 -1
- package/node/cp-node.d.ts +202 -202
- package/node/cp-node.js +320 -320
- package/node/cp-node.js.map +1 -1
- package/node/curve.d.ts +46 -46
- package/node/curve.js +88 -88
- package/node/curve.js.map +1 -1
- package/node/debug/cp-node-for-debugging.d.ts +11 -11
- package/node/debug/cp-node-for-debugging.js +1 -1
- package/node/debug/debug-elem-types.d.ts +32 -32
- package/node/debug/debug-elem-types.js +1 -1
- package/node/debug/debug.d.ts +50 -50
- package/node/debug/debug.js +75 -75
- package/node/debug/functions/draw-elem/bounding-hull.d.ts +3 -3
- package/node/debug/functions/draw-elem/bounding-hull.js +7 -7
- package/node/debug/functions/draw-elem/bounding-hull.js.map +1 -1
- package/node/debug/functions/draw-elem/branch.d.ts +4 -4
- package/node/debug/functions/draw-elem/branch.js +22 -22
- package/node/debug/functions/draw-elem/branch.js.map +1 -1
- package/node/debug/functions/draw-elem/culls.d.ts +4 -4
- package/node/debug/functions/draw-elem/culls.js +21 -21
- package/node/debug/functions/draw-elem/culls.js.map +1 -1
- package/node/debug/functions/draw-elem/draw-circle-percent.d.ts +3 -3
- package/node/debug/functions/draw-elem/draw-circle-percent.js +12 -12
- package/node/debug/functions/draw-elem/draw-circle-percent.js.map +1 -1
- package/node/debug/functions/draw-elem/draw-elem.d.ts +8 -8
- package/node/debug/functions/draw-elem/draw-elem.js +45 -45
- package/node/debug/functions/draw-elem/draw-elem.js.map +1 -1
- package/node/debug/functions/draw-elem/dull-corner.d.ts +4 -4
- package/node/debug/functions/draw-elem/dull-corner.js +10 -10
- package/node/debug/functions/draw-elem/dull-corner.js.map +1 -1
- package/node/debug/functions/draw-elem/leaves.d.ts +4 -4
- package/node/debug/functions/draw-elem/leaves.js +12 -12
- package/node/debug/functions/draw-elem/leaves.js.map +1 -1
- package/node/debug/functions/draw-elem/loop.d.ts +4 -4
- package/node/debug/functions/draw-elem/loop.js +11 -11
- package/node/debug/functions/draw-elem/loops.d.ts +4 -4
- package/node/debug/functions/draw-elem/loops.js +6 -6
- package/node/debug/functions/draw-elem/loose-bounding-box.d.ts +3 -3
- package/node/debug/functions/draw-elem/loose-bounding-box.js +9 -9
- package/node/debug/functions/draw-elem/loose-bounding-box.js.map +1 -1
- package/node/debug/functions/draw-elem/mat.d.ts +4 -4
- package/node/debug/functions/draw-elem/mat.js +30 -30
- package/node/debug/functions/draw-elem/mat.js.map +1 -1
- package/node/debug/functions/draw-elem/max-vertex.d.ts +4 -4
- package/node/debug/functions/draw-elem/max-vertex.js +8 -8
- package/node/debug/functions/draw-elem/max-vertex.js.map +1 -1
- package/node/debug/functions/draw-elem/min-y.d.ts +4 -4
- package/node/debug/functions/draw-elem/min-y.js +13 -13
- package/node/debug/functions/draw-elem/min-y.js.map +1 -1
- package/node/debug/functions/draw-elem/one-prong-at-dull-corner.d.ts +4 -4
- package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js +12 -12
- package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js.map +1 -1
- package/node/debug/functions/draw-elem/one-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/one-prong.js +16 -16
- package/node/debug/functions/draw-elem/one-prong.js.map +1 -1
- package/node/debug/functions/draw-elem/sharp-corner.d.ts +4 -4
- package/node/debug/functions/draw-elem/sharp-corner.js +9 -9
- package/node/debug/functions/draw-elem/sharp-corner.js.map +1 -1
- package/node/debug/functions/draw-elem/three-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/three-prong.js +16 -16
- package/node/debug/functions/draw-elem/three-prong.js.map +1 -1
- package/node/debug/functions/draw-elem/tight-bounding-box.d.ts +3 -3
- package/node/debug/functions/draw-elem/tight-bounding-box.js +7 -7
- package/node/debug/functions/draw-elem/tight-bounding-box.js.map +1 -1
- package/node/debug/functions/draw-elem/two-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/two-prong.js +36 -36
- package/node/debug/functions/draw-elem/two-prong.js.map +1 -1
- package/node/debug/functions/draw-elem/vertex.d.ts +4 -4
- package/node/debug/functions/draw-elem/vertex.js +27 -27
- package/node/debug/functions/draw-elem/vertex.js.map +1 -1
- package/node/debug/functions/general.d.ts +48 -48
- package/node/debug/functions/general.js +52 -52
- package/node/debug/functions/general.js.map +1 -1
- package/node/debug/functions/three-prong.d.ts +11 -11
- package/node/debug/functions/three-prong.js +184 -184
- package/node/debug/functions/three-prong.js.map +1 -1
- package/node/debug/functions/two-prong.d.ts +13 -13
- package/node/debug/functions/two-prong.js +117 -117
- package/node/debug/functions/two-prong.js.map +1 -1
- package/node/debug/three-prong-for-debugging.d.ts +31 -31
- package/node/debug/three-prong-for-debugging.js +20 -20
- package/node/debug/two-prong-for-debugging.d.ts +26 -26
- package/node/debug/two-prong-for-debugging.js +1 -1
- package/node/find-mats.d.ts +26 -26
- package/node/find-mats.js +122 -125
- package/node/find-mats.js.map +1 -1
- package/node/get-boundary-bezier-parts-to-next.d.ts +9 -9
- package/node/get-boundary-bezier-parts-to-next.js +42 -42
- package/node/get-boundary-bezier-parts-to-next.js.map +1 -1
- package/node/get-boundary-beziers-to-next.d.ts +8 -8
- package/node/get-boundary-beziers-to-next.js +44 -44
- package/node/get-boundary-beziers-to-next.js.map +1 -1
- package/node/get-bounding-box-.d.ts +2 -2
- package/node/get-bounding-box-.js +4 -4
- package/node/get-branches.d.ts +12 -12
- package/node/get-branches.js +68 -68
- package/node/get-branches.js.map +1 -1
- package/node/get-curve/get-curve-between.d.ts +9 -9
- package/node/get-curve/get-curve-between.js +56 -56
- package/node/get-curve/get-curve-between.js.map +1 -1
- package/node/get-curve/get-edge-direction.d.ts +9 -9
- package/node/get-curve/get-edge-direction.js +53 -53
- package/node/get-curve/get-edge-direction.js.map +1 -1
- package/node/get-curve-to-next.d.ts +9 -9
- package/node/get-curve-to-next.js +11 -11
- package/node/get-interface-ccw.d.ts +24 -24
- package/node/get-interface-ccw.js +97 -97
- package/node/get-interface-ccw.js.map +1 -1
- package/node/index.d.ts +36 -36
- package/node/index.js +32 -32
- package/node/loop/get-max-coordinate.d.ts +10 -10
- package/node/loop/get-max-coordinate.js +43 -43
- package/node/loop/get-max-coordinate.js.map +1 -1
- package/node/loop.d.ts +16 -16
- package/node/loop.js +34 -34
- package/node/loop.js.map +1 -1
- package/node/mat/add-to-cp-graph.d.ts +16 -16
- package/node/mat/add-to-cp-graph.js +30 -30
- package/node/mat/add-to-cp-graph.js.map +1 -1
- package/node/mat/bezier-piece.d.ts +12 -12
- package/node/mat/bezier-piece.js +1 -1
- package/node/mat/closest-boundary-point/closest-points-on-curve.d.ts +14 -14
- package/node/mat/closest-boundary-point/closest-points-on-curve.js +72 -73
- package/node/mat/closest-boundary-point/closest-points-on-curve.js.map +1 -1
- package/node/mat/closest-boundary-point/cull-bezier-pieces.d.ts +9 -9
- package/node/mat/closest-boundary-point/cull-bezier-pieces.js +19 -19
- package/node/mat/closest-boundary-point/cull-bezier-pieces.js.map +1 -1
- package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.d.ts +11 -11
- package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js +24 -24
- package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -1
- package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.d.ts +11 -11
- package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js +26 -26
- package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -1
- package/node/mat/closest-boundary-point/get-best-distance-squared.d.ts +8 -8
- package/node/mat/closest-boundary-point/get-best-distance-squared.js +24 -24
- package/node/mat/closest-boundary-point/get-best-distance-squared.js.map +1 -1
- package/node/mat/closest-boundary-point/get-close-boundary-points.d.ts +17 -17
- package/node/mat/closest-boundary-point/get-close-boundary-points.js +80 -80
- package/node/mat/closest-boundary-point/get-close-boundary-points.js.map +1 -1
- package/node/mat/closest-boundary-point/get-closest-boundary-point.d.ts +18 -18
- package/node/mat/closest-boundary-point/get-closest-boundary-point.js +40 -40
- package/node/mat/closest-boundary-point/get-closest-boundary-point.js.map +1 -1
- package/node/mat/corner.d.ts +37 -37
- package/node/mat/corner.js +1 -1
- package/node/mat/create-new-cp-tree.d.ts +9 -9
- package/node/mat/create-new-cp-tree.js +23 -23
- package/node/mat/create-new-cp-tree.js.map +1 -1
- package/node/mat/elem-type-two-prong.d.ts +3 -3
- package/node/mat/elem-type-two-prong.js +1 -1
- package/node/mat/find-mat/add-1-prong.d.ts +12 -12
- package/node/mat/find-mat/add-1-prong.js +42 -42
- package/node/mat/find-mat/add-1-prong.js.map +1 -1
- package/node/mat/find-mat/add-2-prong.d.ts +21 -21
- package/node/mat/find-mat/add-2-prong.js +192 -192
- package/node/mat/find-mat/add-2-prong.js.map +1 -1
- package/node/mat/find-mat/add-3-prong.d.ts +19 -19
- package/node/mat/find-mat/add-3-prong.js +54 -54
- package/node/mat/find-mat/add-3-prong.js.map +1 -1
- package/node/mat/find-mat/add-debug-info.d.ts +9 -9
- package/node/mat/find-mat/add-debug-info.js +67 -69
- package/node/mat/find-mat/add-debug-info.js.map +1 -1
- package/node/mat/find-mat/create-get-interesting-points-on-loop.d.ts +11 -11
- package/node/mat/find-mat/create-get-interesting-points-on-loop.js +51 -51
- package/node/mat/find-mat/create-get-interesting-points-on-loop.js.map +1 -1
- package/node/mat/find-mat/create-initial-cp-graph.d.ts +12 -12
- package/node/mat/find-mat/create-initial-cp-graph.js +40 -40
- package/node/mat/find-mat/create-initial-cp-graph.js.map +1 -1
- package/node/mat/find-mat/find-2-prong/add-debug-info.d.ts +8 -8
- package/node/mat/find-mat/find-2-prong/add-debug-info.js +21 -21
- package/node/mat/find-mat/find-2-prong/add-debug-info.js.map +1 -1
- package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.d.ts +11 -11
- package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js +29 -29
- package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js.map +1 -1
- package/node/mat/find-mat/find-2-prong/find-2-prong.d.ts +37 -37
- package/node/mat/find-mat/find-2-prong/find-2-prong.js +232 -232
- package/node/mat/find-mat/find-2-prong/find-2-prong.js.map +1 -1
- package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.d.ts +9 -9
- package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js +39 -39
- package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js.map +1 -1
- package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.d.ts +11 -11
- package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js +37 -37
- package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
- package/node/mat/find-mat/find-2-prong/x-for-debugging.d.ts +9 -9
- package/node/mat/find-mat/find-2-prong/x-for-debugging.js +1 -1
- package/node/mat/find-mat/find-3-prong/calc-better-x.d.ts +19 -19
- package/node/mat/find-mat/find-3-prong/calc-better-x.js +36 -36
- package/node/mat/find-mat/find-3-prong/calc-better-x.js.map +1 -1
- package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.d.ts +13 -13
- package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js +25 -25
- package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js.map +1 -1
- package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.d.ts +22 -22
- package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js +159 -159
- package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js.map +1 -1
- package/node/mat/find-mat/find-3-prong/find-3-prong.d.ts +16 -16
- package/node/mat/find-mat/find-3-prong/find-3-prong.js +76 -76
- package/node/mat/find-mat/find-3-prong/find-3-prong.js.map +1 -1
- package/node/mat/find-mat/find-3-prong/get-closest-points.d.ts +9 -9
- package/node/mat/find-mat/find-3-prong/get-closest-points.js +16 -16
- package/node/mat/find-mat/find-3-prong/get-closest-points.js.map +1 -1
- package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.d.ts +15 -15
- package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js +20 -20
- package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js.map +1 -1
- package/node/mat/find-mat/find-and-add-2-prongs.d.ts +16 -16
- package/node/mat/find-mat/find-and-add-2-prongs.js +73 -74
- package/node/mat/find-mat/find-and-add-2-prongs.js.map +1 -1
- package/node/mat/find-mat/find-and-add-3-prongs.d.ts +13 -13
- package/node/mat/find-mat/find-and-add-3-prongs.js +146 -147
- package/node/mat/find-mat/find-and-add-3-prongs.js.map +1 -1
- package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.d.ts +14 -14
- package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js +33 -33
- package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js.map +1 -1
- package/node/mat/find-mat/get-potential-2-prongs.d.ts +4 -4
- package/node/mat/find-mat/get-potential-2-prongs.js +16 -16
- package/node/mat/find-mat/get-potential-2-prongs.js.map +1 -1
- package/node/mat/find-mat/get-sharp-corners.d.ts +4 -4
- package/node/mat/find-mat/get-sharp-corners.js +17 -17
- package/node/mat/find-mat/get-sharp-corners.js.map +1 -1
- package/node/mat/geometry/get-closest-square-distance-to-rect.d.ts +5 -5
- package/node/mat/geometry/get-closest-square-distance-to-rect.js +49 -49
- package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.d.ts +5 -5
- package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js +15 -15
- package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js.map +1 -1
- package/node/mat/get-boundary-piece-beziers.d.ts +11 -11
- package/node/mat/get-boundary-piece-beziers.js +58 -58
- package/node/mat/get-boundary-piece-beziers.js.map +1 -1
- package/node/mat/get-contact-circles-at-interface.d.ts +8 -8
- package/node/mat/get-contact-circles-at-interface.js +20 -20
- package/node/mat/get-contact-circles-at-interface.js.map +1 -1
- package/node/mat/get-largest-vertex.d.ts +4 -4
- package/node/mat/get-largest-vertex.js +9 -9
- package/node/mat/get-leaves.d.ts +4 -4
- package/node/mat/get-leaves.js +12 -12
- package/node/mat/get-leaves.js.map +1 -1
- package/node/mat/get-neighboring-cps.d.ts +14 -14
- package/node/mat/get-neighboring-cps.js +30 -30
- package/node/mat/get-neighboring-cps.js.map +1 -1
- package/node/mat/get-two-prong-type.d.ts +5 -5
- package/node/mat/get-two-prong-type.js +8 -8
- package/node/mat/is-another-cp-closeby.d.ts +20 -20
- package/node/mat/is-another-cp-closeby.js +55 -55
- package/node/mat/is-another-cp-closeby.js.map +1 -1
- package/node/mat/simplify-mat-map-only.d.ts +23 -23
- package/node/mat/simplify-mat-map-only.js +80 -80
- package/node/mat/simplify-mat-map-only.js.map +1 -1
- package/node/mat/to-scale-axis/add-debug-info.d.ts +7 -7
- package/node/mat/to-scale-axis/add-debug-info.js +13 -13
- package/node/mat/to-scale-axis/add-debug-info.js.map +1 -1
- package/node/mat/to-scale-axis/cull-non-cycles.d.ts +9 -9
- package/node/mat/to-scale-axis/cull-non-cycles.js +51 -51
- package/node/mat/to-scale-axis/cull-non-cycles.js.map +1 -1
- package/node/mat/to-scale-axis/cull.d.ts +12 -12
- package/node/mat/to-scale-axis/cull.js +132 -132
- package/node/mat/to-scale-axis/cull.js.map +1 -1
- package/node/mat/trim-mat.d.ts +8 -8
- package/node/mat/trim-mat.js +16 -16
- package/node/mat/trim-mat.js.map +1 -1
- package/node/mat.d.ts +22 -22
- package/node/mat.js +1 -1
- package/node/point-on-shape.d.ts +73 -73
- package/node/point-on-shape.js +167 -167
- package/node/point-on-shape.js.map +1 -1
- package/node/simplify-mat.d.ts +16 -16
- package/node/simplify-mat.js +71 -71
- package/node/simplify-mat.js.map +1 -1
- package/node/svg/get-loop-bounds.d.ts +12 -12
- package/node/svg/get-loop-bounds.js +80 -80
- package/node/svg/get-loop-bounds.js.map +1 -1
- package/node/svg/get-min-y-pos.d.ts +8 -8
- package/node/svg/get-min-y-pos.js +9 -9
- package/node/svg/get-shape-bounds.d.ts +9 -9
- package/node/svg/get-shape-bounds.js +35 -35
- package/node/svg/get-shape-bounds.js.map +1 -1
- package/node/sweep-line/sweep-line.d.ts +18 -18
- package/node/sweep-line/sweep-line.js +72 -72
- package/node/sweep-line/sweep-line.js.map +1 -1
- package/node/to-scale-axis.d.ts +16 -16
- package/node/to-scale-axis.js +74 -73
- package/node/to-scale-axis.js.map +1 -1
- package/node/traverse-edges.d.ts +10 -10
- package/node/traverse-edges.js +21 -21
- package/node/traverse-edges.js.map +1 -1
- package/node/traverse-vertices.d.ts +12 -12
- package/node/traverse-vertices.js +27 -27
- package/node/traverse-vertices.js.map +1 -1
- package/package.json +29 -24
- package/src/circle.ts +3 -3
- package/src/compare-curvatures-at-interface.ts +36 -36
- package/src/cp-node/clone.ts +6 -6
- package/src/cp-node/remove.ts +4 -4
- package/src/cp-node.ts +20 -20
- package/src/curve.ts +19 -19
- package/src/debug/functions/draw-elem/bounding-hull.ts +2 -2
- package/src/debug/functions/draw-elem/branch.ts +4 -4
- package/src/debug/functions/draw-elem/culls.ts +4 -4
- package/src/debug/functions/draw-elem/draw-circle-percent.ts +2 -2
- package/src/debug/functions/draw-elem/draw-elem.ts +1 -1
- package/src/debug/functions/draw-elem/dull-corner.ts +3 -3
- package/src/debug/functions/draw-elem/leaves.ts +4 -4
- package/src/debug/functions/draw-elem/loose-bounding-box.ts +2 -2
- package/src/debug/functions/draw-elem/mat.ts +4 -4
- package/src/debug/functions/draw-elem/max-vertex.ts +2 -2
- package/src/debug/functions/draw-elem/min-y.ts +3 -3
- package/src/debug/functions/draw-elem/one-prong-at-dull-corner.ts +4 -4
- package/src/debug/functions/draw-elem/one-prong.ts +4 -4
- package/src/debug/functions/draw-elem/sharp-corner.ts +2 -2
- package/src/debug/functions/draw-elem/three-prong.ts +7 -7
- package/src/debug/functions/draw-elem/tight-bounding-box.ts +1 -1
- package/src/debug/functions/draw-elem/two-prong.ts +1 -1
- package/src/debug/functions/draw-elem/vertex.ts +20 -14
- package/src/debug/functions/general.ts +3 -3
- package/src/debug/functions/three-prong.ts +37 -37
- package/src/debug/functions/two-prong.ts +15 -15
- package/src/find-mats.ts +19 -19
- package/src/get-boundary-bezier-parts-to-next.ts +8 -8
- package/src/get-boundary-beziers-to-next.ts +8 -8
- package/src/get-branches.ts +7 -7
- package/src/get-curve/get-curve-between.ts +21 -21
- package/src/get-curve/get-edge-direction.ts +13 -14
- package/src/get-interface-ccw.ts +12 -12
- package/src/loop/get-max-coordinate.ts +7 -7
- package/src/loop.ts +4 -4
- package/src/mat/add-to-cp-graph.ts +8 -8
- package/src/mat/closest-boundary-point/closest-points-on-curve.ts +5 -6
- package/src/mat/closest-boundary-point/cull-bezier-pieces.ts +1 -1
- package/src/mat/closest-boundary-point/cull-by-loose-bounding-box.ts +5 -5
- package/src/mat/closest-boundary-point/cull-by-tight-boundary-box.ts +5 -5
- package/src/mat/closest-boundary-point/get-best-distance-squared.ts +5 -5
- package/src/mat/closest-boundary-point/get-close-boundary-points.ts +15 -15
- package/src/mat/closest-boundary-point/get-closest-boundary-point.ts +4 -4
- package/src/mat/cmp-cp-on-delta.ts +5 -5
- package/src/mat/create-new-cp-tree.ts +3 -3
- package/src/mat/find-mat/add-1-prong.ts +5 -5
- package/src/mat/find-mat/add-2-prong.ts +42 -42
- package/src/mat/find-mat/add-3-prong.ts +1 -1
- package/src/mat/find-mat/add-debug-info.ts +18 -20
- package/src/mat/find-mat/create-get-interesting-points-on-loop.ts +4 -4
- package/src/mat/find-mat/create-initial-cp-graph.ts +11 -11
- package/src/mat/find-mat/find-2-prong/add-debug-info.ts +4 -4
- package/src/mat/find-mat/find-2-prong/cull-bezier-pieces.ts +5 -5
- package/src/mat/find-mat/find-2-prong/find-2-prong.ts +27 -27
- package/src/mat/find-mat/find-2-prong/find-equidistant-point-on-line.ts +7 -7
- package/src/mat/find-mat/find-2-prong/get-initial-bezier-pieces.ts +4 -4
- package/src/mat/find-mat/find-3-prong/calc-better-x.ts +4 -4
- package/src/mat/find-mat/find-3-prong/calc-initial-3-prong-center.ts +3 -3
- package/src/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.ts +37 -37
- package/src/mat/find-mat/find-3-prong/find-3-prong.ts +16 -16
- package/src/mat/find-mat/find-3-prong/get-closest-points.ts +1 -1
- package/src/mat/find-mat/find-and-add-2-prongs-on-all-paths.ts +2 -2
- package/src/mat/find-mat/find-and-add-2-prongs.ts +14 -16
- package/src/mat/find-mat/find-and-add-3-prongs.ts +19 -19
- package/src/mat/find-mat/find-and-add-hole-closing-2-prongs.ts +6 -6
- package/src/mat/find-mat/get-potential-2-prongs.ts +4 -4
- package/src/mat/find-mat/get-sharp-corners.ts +4 -4
- package/src/mat/find-mat/get-total-abs-curvature.ts +1 -1
- package/src/mat/geometry/get-closest-squared-distance-to-rotated-rect.ts +3 -3
- package/src/mat/get-boundary-piece-beziers.ts +5 -5
- package/src/mat/get-contact-circles-at-interface.ts +1 -1
- package/src/mat/get-edges-as-array.ts +2 -2
- package/src/mat/get-leaves.ts +2 -2
- package/src/mat/get-neighboring-cps.ts +1 -1
- package/src/mat/is-another-cp-closeby.ts +9 -9
- package/src/mat/simplify-mat-map-only.ts +15 -15
- package/src/mat/to-scale-axis/add-debug-info.ts +6 -3
- package/src/mat/to-scale-axis/add-to-tree.ts +10 -10
- package/src/mat/to-scale-axis/calc-groups.ts +19 -19
- package/src/mat/to-scale-axis/create-spacial-tree.ts +4 -4
- package/src/mat/to-scale-axis/cull-non-cycles.ts +5 -5
- package/src/mat/to-scale-axis/cull.ts +5 -5
- package/src/mat/to-scale-axis/get-engulfed-vertices.ts +18 -18
- package/src/mat/trim-mat.ts +1 -1
- package/src/point-on-shape.ts +16 -16
- package/src/simplify-mat.ts +10 -10
- package/src/svg/get-curvature-at-interface.ts +6 -8
- package/src/svg/get-extreme.ts +1 -1
- package/src/svg/get-loop-bounds.ts +13 -13
- package/src/svg/get-shape-bounds.ts +4 -4
- package/src/sweep-line/are-boxes-intersecting.ts +4 -4
- package/src/sweep-line/sweep-line.ts +8 -8
- package/src/to-scale-axis.ts +18 -17
- package/src/traverse-edges.ts +2 -2
- package/src/traverse-vertices.ts +2 -2
- package/tsconfig.json +0 -1
- package/webpack.config.cjs +12 -63
- package/browser/index.min.js.LICENSE.txt +0 -2819
- package/browser/index.module.js +0 -7149
- package/browser/index.module.min.js +0 -2
- package/browser/index.module.min.js.LICENSE.txt +0 -2819
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { CpNode } from '../../cp-node.js';
|
|
2
|
-
/** @hidden */
|
|
3
|
-
export interface IGeneralDebugFunctions {
|
|
4
|
-
nameObj: (obj: any, pre?: string) => void;
|
|
5
|
-
δToString: (cpNodes: CpNode[]) => string[];
|
|
6
|
-
δsToString: (cpNodes: CpNode[][]) => string[][];
|
|
7
|
-
pointToStr: (p: number[], decimalPlaces?: number) => string;
|
|
8
|
-
pointsToStr: (ps: number[][], decimalPlaces?: number) => string[];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* @hidden
|
|
12
|
-
* Name the given object - for debugging purposes only
|
|
13
|
-
*/
|
|
14
|
-
declare function nameObj(o: any, pre?: string): void;
|
|
15
|
-
/**
|
|
16
|
-
* @hidden
|
|
17
|
-
* Transforms a boundary piece (δ) into a human readable string.
|
|
18
|
-
* @param cpNodes A boundary piece given by two CpNodes.
|
|
19
|
-
*/
|
|
20
|
-
declare function δToString(cpNodes: CpNode[]): string[];
|
|
21
|
-
/**
|
|
22
|
-
* @hidden
|
|
23
|
-
* Transforms an array of boundary pieces (δs) into a human readable string.
|
|
24
|
-
* @param cpNodes An array of boundary pieces.
|
|
25
|
-
*/
|
|
26
|
-
declare function δsToString(cpNodes: CpNode[][]): string[][];
|
|
27
|
-
/**
|
|
28
|
-
* @hidden
|
|
29
|
-
* Convert the given points into a human readable string.
|
|
30
|
-
* @param ps
|
|
31
|
-
*/
|
|
32
|
-
declare function pointsToStr(ps: number[][], decimalPlaces?: number): string[];
|
|
33
|
-
/**
|
|
34
|
-
* @hidden
|
|
35
|
-
* Converts the given point into a human readable string.
|
|
36
|
-
* @param p The point
|
|
37
|
-
* @param decimalPlaces number of decimal places
|
|
38
|
-
*/
|
|
39
|
-
declare function pointToStr(p: number[], decimalPlaces?: number): string;
|
|
40
|
-
/** @hidden */
|
|
41
|
-
declare
|
|
42
|
-
δToString: typeof δToString;
|
|
43
|
-
δsToString: typeof δsToString;
|
|
44
|
-
pointToStr: typeof pointToStr;
|
|
45
|
-
pointsToStr: typeof pointsToStr;
|
|
46
|
-
nameObj: typeof nameObj;
|
|
47
|
-
};
|
|
48
|
-
export { generalDebugFunctions };
|
|
1
|
+
import { CpNode } from '../../cp-node.js';
|
|
2
|
+
/** @hidden */
|
|
3
|
+
export interface IGeneralDebugFunctions {
|
|
4
|
+
nameObj: (obj: any, pre?: string) => void;
|
|
5
|
+
δToString: (cpNodes: CpNode[]) => string[];
|
|
6
|
+
δsToString: (cpNodes: CpNode[][]) => string[][];
|
|
7
|
+
pointToStr: (p: number[], decimalPlaces?: number) => string;
|
|
8
|
+
pointsToStr: (ps: number[][], decimalPlaces?: number) => string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @hidden
|
|
12
|
+
* Name the given object - for debugging purposes only
|
|
13
|
+
*/
|
|
14
|
+
declare function nameObj(o: any, pre?: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
* Transforms a boundary piece (δ) into a human readable string.
|
|
18
|
+
* @param cpNodes A boundary piece given by two CpNodes.
|
|
19
|
+
*/
|
|
20
|
+
declare function δToString(cpNodes: CpNode[]): string[];
|
|
21
|
+
/**
|
|
22
|
+
* @hidden
|
|
23
|
+
* Transforms an array of boundary pieces (δs) into a human readable string.
|
|
24
|
+
* @param cpNodes An array of boundary pieces.
|
|
25
|
+
*/
|
|
26
|
+
declare function δsToString(cpNodes: CpNode[][]): string[][];
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
* Convert the given points into a human readable string.
|
|
30
|
+
* @param ps
|
|
31
|
+
*/
|
|
32
|
+
declare function pointsToStr(ps: number[][], decimalPlaces?: number): string[];
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
* Converts the given point into a human readable string.
|
|
36
|
+
* @param p The point
|
|
37
|
+
* @param decimalPlaces number of decimal places
|
|
38
|
+
*/
|
|
39
|
+
declare function pointToStr(p: number[], decimalPlaces?: number): string;
|
|
40
|
+
/** @hidden */
|
|
41
|
+
declare const generalDebugFunctions: {
|
|
42
|
+
δToString: typeof δToString;
|
|
43
|
+
δsToString: typeof δsToString;
|
|
44
|
+
pointToStr: typeof pointToStr;
|
|
45
|
+
pointsToStr: typeof pointsToStr;
|
|
46
|
+
nameObj: typeof nameObj;
|
|
47
|
+
};
|
|
48
|
+
export { generalDebugFunctions };
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { posToHumanString } from '../../point-on-shape.js';
|
|
2
|
-
/** @hidden */
|
|
3
|
-
let i = 0;
|
|
4
|
-
/**
|
|
5
|
-
* @hidden
|
|
6
|
-
* Name the given object - for debugging purposes only
|
|
7
|
-
*/
|
|
8
|
-
function nameObj(o, pre = '') {
|
|
9
|
-
o.name = '' + pre + i++;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* @hidden
|
|
13
|
-
* Transforms a boundary piece (δ) into a human readable string.
|
|
14
|
-
* @param cpNodes A boundary piece given by two CpNodes.
|
|
15
|
-
*/
|
|
16
|
-
function δToString(cpNodes) {
|
|
17
|
-
return cpNodes.map(cpNode => posToHumanString(cpNode.cp.pointOnShape));
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* @hidden
|
|
21
|
-
* Transforms an array of boundary pieces (δs) into a human readable string.
|
|
22
|
-
* @param cpNodes An array of boundary pieces.
|
|
23
|
-
*/
|
|
24
|
-
function δsToString(cpNodes) {
|
|
25
|
-
return cpNodes.map(δToString);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @hidden
|
|
29
|
-
* Convert the given points into a human readable string.
|
|
30
|
-
* @param ps
|
|
31
|
-
*/
|
|
32
|
-
function pointsToStr(ps, decimalPlaces = 3) {
|
|
33
|
-
return ps.map(p => pointToStr(p, decimalPlaces));
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* @hidden
|
|
37
|
-
* Converts the given point into a human readable string.
|
|
38
|
-
* @param p The point
|
|
39
|
-
* @param decimalPlaces number of decimal places
|
|
40
|
-
*/
|
|
41
|
-
function pointToStr(p, decimalPlaces = 3) {
|
|
42
|
-
return p[0].toFixed(decimalPlaces) + ', ' + p[1].toFixed(decimalPlaces);
|
|
43
|
-
}
|
|
44
|
-
/** @hidden */
|
|
45
|
-
|
|
46
|
-
δToString,
|
|
47
|
-
δsToString,
|
|
48
|
-
pointToStr,
|
|
49
|
-
pointsToStr,
|
|
50
|
-
nameObj,
|
|
51
|
-
};
|
|
52
|
-
export { generalDebugFunctions };
|
|
1
|
+
import { posToHumanString } from '../../point-on-shape.js';
|
|
2
|
+
/** @hidden */
|
|
3
|
+
let i = 0;
|
|
4
|
+
/**
|
|
5
|
+
* @hidden
|
|
6
|
+
* Name the given object - for debugging purposes only
|
|
7
|
+
*/
|
|
8
|
+
function nameObj(o, pre = '') {
|
|
9
|
+
o.name = '' + pre + i++;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
* Transforms a boundary piece (δ) into a human readable string.
|
|
14
|
+
* @param cpNodes A boundary piece given by two CpNodes.
|
|
15
|
+
*/
|
|
16
|
+
function δToString(cpNodes) {
|
|
17
|
+
return cpNodes.map(cpNode => posToHumanString(cpNode.cp.pointOnShape));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @hidden
|
|
21
|
+
* Transforms an array of boundary pieces (δs) into a human readable string.
|
|
22
|
+
* @param cpNodes An array of boundary pieces.
|
|
23
|
+
*/
|
|
24
|
+
function δsToString(cpNodes) {
|
|
25
|
+
return cpNodes.map(δToString);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
* Convert the given points into a human readable string.
|
|
30
|
+
* @param ps
|
|
31
|
+
*/
|
|
32
|
+
function pointsToStr(ps, decimalPlaces = 3) {
|
|
33
|
+
return ps.map(p => pointToStr(p, decimalPlaces));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @hidden
|
|
37
|
+
* Converts the given point into a human readable string.
|
|
38
|
+
* @param p The point
|
|
39
|
+
* @param decimalPlaces number of decimal places
|
|
40
|
+
*/
|
|
41
|
+
function pointToStr(p, decimalPlaces = 3) {
|
|
42
|
+
return p[0].toFixed(decimalPlaces) + ', ' + p[1].toFixed(decimalPlaces);
|
|
43
|
+
}
|
|
44
|
+
/** @hidden */
|
|
45
|
+
const generalDebugFunctions /*: IGeneralDebugFunctions*/ = {
|
|
46
|
+
δToString,
|
|
47
|
+
δsToString,
|
|
48
|
+
pointToStr,
|
|
49
|
+
pointsToStr,
|
|
50
|
+
nameObj,
|
|
51
|
+
};
|
|
52
|
+
export { generalDebugFunctions };
|
|
53
53
|
//# sourceMappingURL=general.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../../src/debug/functions/general.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAa3D,cAAc;AACd,IAAI,CAAC,GAAG,CAAC,CAAC;AACV;;;GAGG;AACH,SAAS,OAAO,CAAC,CAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../../src/debug/functions/general.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAa3D,cAAc;AACd,IAAI,CAAC,GAAG,CAAC,CAAC;AACV;;;GAGG;AACH,SAAS,OAAO,CAAC,CAAM,EAAE,GAAG,GAAG,EAAE;IAChC,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;AACzB,CAAC;AAGD;;;;GAIG;AACH,SAAS,SAAS,CAAC,OAAiB;IACnC,OAAO,OAAO,CAAC,GAAG,CACjB,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAClD,CAAC;AACH,CAAC;AAGD;;;;GAIG;AACH,SAAS,UAAU,CAAC,OAAmB;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAGD;;;;GAIG;AACH,SAAS,WAAW,CAAC,EAAc,EAAE,aAAa,GAAG,CAAC;IACrD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AAClD,CAAC;AAGD;;;;;GAKG;AACH,SAAS,UAAU,CAAC,CAAW,EAAE,aAAa,GAAG,CAAC;IACjD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACzE,CAAC;AAGD,cAAc;AACd,MAAM,qBAAqB,CAAA,4BAA4B,GAAG;IACzD,SAAS;IACT,UAAU;IACV,UAAU;IACV,WAAW;IACX,OAAO;CACP,CAAA;AAGD,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/** @hidden */
|
|
2
|
-
export interface IThreeProngDebugFunctions {
|
|
3
|
-
drawSpokes: (g: SVGGElement, n: number) => void;
|
|
4
|
-
traceConvergence: (g: SVGGElement, n: number, indx: number) => void;
|
|
5
|
-
showBoundary: (g: SVGGElement, n: number, indx: number) => void;
|
|
6
|
-
logδs: (n: number) => void;
|
|
7
|
-
logNearest: (showSpokes?: boolean, showTrace?: boolean, showBoundaries?: boolean) => (g: SVGGElement, p: number[], showDelay?: number) => void;
|
|
8
|
-
}
|
|
9
|
-
/** @hidden */
|
|
10
|
-
declare
|
|
11
|
-
export { threeProngDebugFunctions };
|
|
1
|
+
/** @hidden */
|
|
2
|
+
export interface IThreeProngDebugFunctions {
|
|
3
|
+
drawSpokes: (g: SVGGElement, n: number) => void;
|
|
4
|
+
traceConvergence: (g: SVGGElement, n: number, indx: number) => void;
|
|
5
|
+
showBoundary: (g: SVGGElement, n: number, indx: number) => void;
|
|
6
|
+
logδs: (n: number) => void;
|
|
7
|
+
logNearest: (showSpokes?: boolean, showTrace?: boolean, showBoundaries?: boolean) => (g: SVGGElement, p: number[], showDelay?: number) => void;
|
|
8
|
+
}
|
|
9
|
+
/** @hidden */
|
|
10
|
+
declare const threeProngDebugFunctions: IThreeProngDebugFunctions;
|
|
11
|
+
export { threeProngDebugFunctions };
|
|
@@ -1,185 +1,185 @@
|
|
|
1
|
-
import { drawFs } from 'flo-draw';
|
|
2
|
-
import { equal, getObjClosestTo } from 'flo-vector2d';
|
|
3
|
-
/**
|
|
4
|
-
* @hidden
|
|
5
|
-
* Draws 3 lines from the given 3-prong center to its 3 contact points.
|
|
6
|
-
* @param n - The 3-prong's zero-based index.
|
|
7
|
-
*/
|
|
8
|
-
function drawSpokes(g, n) {
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
//_debug_.fs.draw.line(g, [poss[0].p, cc], 'thin5 red');
|
|
14
|
-
//_debug_.fs.draw.line(g, [poss[1].p, cc], 'thin5 red');
|
|
15
|
-
//_debug_.fs.draw.line(g, [poss[2].p, cc], 'thin5 red');
|
|
16
|
-
drawFs.line(g, [poss[0].p, cc], 'thin5 red');
|
|
17
|
-
drawFs.line(g, [poss[1].p, cc], 'thin5 red');
|
|
18
|
-
drawFs.line(g, [poss[2].p, cc], 'thin5 red');
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* @hidden
|
|
22
|
-
* Shows the circle for each boundary iteration.
|
|
23
|
-
* @param n_ - The 3-prong's zero-based index. If ommitted, all will be shown.
|
|
24
|
-
* @param idx - The specific boundary iteration index to view. If ommitted, all
|
|
25
|
-
* will be shown.
|
|
26
|
-
*/
|
|
27
|
-
function traceConvergence(g, n_, idx) {
|
|
28
|
-
let sIndx;
|
|
29
|
-
let eIndx;
|
|
30
|
-
if (n_ === undefined) {
|
|
31
|
-
sIndx = 0;
|
|
32
|
-
eIndx = _debug_.generated.elems.threeProng.length;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
sIndx = n_;
|
|
36
|
-
eIndx = n_ + 1;
|
|
37
|
-
}
|
|
38
|
-
for (let n = sIndx; n < eIndx; n++) {
|
|
39
|
-
|
|
40
|
-
//
|
|
41
|
-
console.log(forDebugging);
|
|
42
|
-
|
|
43
|
-
//-----------------------------
|
|
44
|
-
//---- Get start and end index
|
|
45
|
-
//-----------------------------
|
|
46
|
-
let startIndx;
|
|
47
|
-
let endIndx;
|
|
48
|
-
if (n_ === undefined || idx === -1) {
|
|
49
|
-
startIndx = forDebugging.bestIndx;
|
|
50
|
-
endIndx = forDebugging.bestIndx + 1;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
if (idx === undefined) {
|
|
54
|
-
startIndx = 0;
|
|
55
|
-
endIndx = candidateThreeProngs.length;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
startIndx = idx;
|
|
59
|
-
endIndx = idx + 1;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
//---------------------------------
|
|
63
|
-
//---- Draw candidate three-prongs
|
|
64
|
-
//---------------------------------
|
|
65
|
-
for (let i = startIndx; i < endIndx; i++) {
|
|
66
|
-
|
|
67
|
-
if (forDebugging.bestIndx === i) {
|
|
68
|
-
drawFs.dot(g, circle.center, 0.2, 'green');
|
|
69
|
-
drawFs.circle(g, circle, 'black thin10 nofill');
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
drawFs.dot(g, circle.center, 0.2, 'cyan');
|
|
73
|
-
drawFs.circle(g, circle, 'cyan thin5 nofill');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* @hidden
|
|
80
|
-
* Shows the actual boundary for each iteration.
|
|
81
|
-
* @param n The 3-prong's zero-based index.
|
|
82
|
-
* @param idx The specific boundary iteration index to view. If ommitted will
|
|
83
|
-
* show all.
|
|
84
|
-
*/
|
|
85
|
-
function showBoundary(g, n, idx) {
|
|
86
|
-
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
// Draw relevant δs
|
|
92
|
-
|
|
93
|
-
let j = 0;
|
|
94
|
-
// For each iteration of δ3s (indexed by j)
|
|
95
|
-
for (let idx = 1; idx < cpss.length - 1; idx++) {
|
|
96
|
-
if (!(j >= startIndx && j <= endIndx)) {
|
|
97
|
-
j++;
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
cpss[0],
|
|
102
|
-
cpss[idx],
|
|
103
|
-
cpss[cpss.length - 1]
|
|
104
|
-
];
|
|
105
|
-
// For each of the 3 δs
|
|
106
|
-
for (let i = 0; i < 3; i++) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (equal(pS, pE)) {
|
|
116
|
-
drawFs.crossHair(g, pS, 'red thin10 nofill', r);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
drawFs.crossHair(g, pS, 'green thin10 nofill', r);
|
|
120
|
-
drawFs.crossHair(g, pE, 'blue thin10 nofill', r);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
j++;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* @hidden
|
|
128
|
-
* @param n The 3-prong's zero-based index.
|
|
129
|
-
*/
|
|
130
|
-
function logδs(n) {
|
|
131
|
-
|
|
132
|
-
console.log(threeProng.cpss);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* @hidden
|
|
136
|
-
* @param p
|
|
137
|
-
*/
|
|
138
|
-
function logNearest(showSpokes = true, showTrace = true, showBoundaries = true) {
|
|
139
|
-
return function (g, p, showDelay = 1000) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
//
|
|
144
|
-
console.log(threeProng);
|
|
145
|
-
|
|
146
|
-
center: circle.center,
|
|
147
|
-
radius: circle.radius || 1
|
|
148
|
-
};
|
|
149
|
-
//
|
|
150
|
-
drawFs.circle(g, circle2, 'blue thin10 nofill', showDelay);
|
|
151
|
-
drawFs.crossHair(g, circle.center, 'red thin2 nofill', 2, showDelay);
|
|
152
|
-
if (showSpokes) {
|
|
153
|
-
drawFs.line(g, [threeProng.poss[0].p, circle.center], 'blue thin5 nofill', showDelay);
|
|
154
|
-
drawFs.line(g, [threeProng.poss[1].p, circle.center], 'blue thin5 nofill', showDelay);
|
|
155
|
-
drawFs.line(g, [threeProng.poss[2].p, circle.center], 'blue thin5 nofill', showDelay);
|
|
156
|
-
}
|
|
157
|
-
if (showBoundaries) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
drawFs.beziers(g, boundaryS, 'red thin20 nofill', showDelay);
|
|
162
|
-
for (let i = 1; i < boundaries.length - 1; i++) {
|
|
163
|
-
|
|
164
|
-
drawFs.beziers(g, boundary, 'green thin20 nofill', showDelay);
|
|
165
|
-
}
|
|
166
|
-
drawFs.beziers(g, boundaryE, 'blue thin20 nofill', showDelay);
|
|
167
|
-
}
|
|
168
|
-
if (showTrace) {
|
|
169
|
-
|
|
170
|
-
for (
|
|
171
|
-
drawFs.polyline(g, trace, 'red thin5 nofill', showDelay);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
/** @hidden */
|
|
177
|
-
|
|
178
|
-
drawSpokes,
|
|
179
|
-
traceConvergence,
|
|
180
|
-
showBoundary,
|
|
181
|
-
logδs,
|
|
182
|
-
logNearest
|
|
183
|
-
};
|
|
184
|
-
export { threeProngDebugFunctions };
|
|
1
|
+
import { drawFs } from 'flo-draw';
|
|
2
|
+
import { equal, getObjClosestTo } from 'flo-vector2d';
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
* Draws 3 lines from the given 3-prong center to its 3 contact points.
|
|
6
|
+
* @param n - The 3-prong's zero-based index.
|
|
7
|
+
*/
|
|
8
|
+
function drawSpokes(g, n) {
|
|
9
|
+
const threeProng = _debug_.generated.elems.threeProng[n];
|
|
10
|
+
//const g = threeProng.generated.g;
|
|
11
|
+
const cc = threeProng.circle.center;
|
|
12
|
+
const poss = threeProng.poss;
|
|
13
|
+
//_debug_.fs.draw.line(g, [poss[0].p, cc], 'thin5 red');
|
|
14
|
+
//_debug_.fs.draw.line(g, [poss[1].p, cc], 'thin5 red');
|
|
15
|
+
//_debug_.fs.draw.line(g, [poss[2].p, cc], 'thin5 red');
|
|
16
|
+
drawFs.line(g, [poss[0].p, cc], 'thin5 red');
|
|
17
|
+
drawFs.line(g, [poss[1].p, cc], 'thin5 red');
|
|
18
|
+
drawFs.line(g, [poss[2].p, cc], 'thin5 red');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @hidden
|
|
22
|
+
* Shows the circle for each boundary iteration.
|
|
23
|
+
* @param n_ - The 3-prong's zero-based index. If ommitted, all will be shown.
|
|
24
|
+
* @param idx - The specific boundary iteration index to view. If ommitted, all
|
|
25
|
+
* will be shown.
|
|
26
|
+
*/
|
|
27
|
+
function traceConvergence(g, n_, idx) {
|
|
28
|
+
let sIndx;
|
|
29
|
+
let eIndx;
|
|
30
|
+
if (n_ === undefined) {
|
|
31
|
+
sIndx = 0;
|
|
32
|
+
eIndx = _debug_.generated.elems.threeProng.length;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
sIndx = n_;
|
|
36
|
+
eIndx = n_ + 1;
|
|
37
|
+
}
|
|
38
|
+
for (let n = sIndx; n < eIndx; n++) {
|
|
39
|
+
const forDebugging = _debug_.generated.elems.threeProng[n];
|
|
40
|
+
//const g = forDebugging.generated.g;
|
|
41
|
+
console.log(forDebugging);
|
|
42
|
+
const candidateThreeProngs = forDebugging.candidateThreeProngs;
|
|
43
|
+
//-----------------------------
|
|
44
|
+
//---- Get start and end index
|
|
45
|
+
//-----------------------------
|
|
46
|
+
let startIndx;
|
|
47
|
+
let endIndx;
|
|
48
|
+
if (n_ === undefined || idx === -1) {
|
|
49
|
+
startIndx = forDebugging.bestIndx;
|
|
50
|
+
endIndx = forDebugging.bestIndx + 1;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
if (idx === undefined) {
|
|
54
|
+
startIndx = 0;
|
|
55
|
+
endIndx = candidateThreeProngs.length;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
startIndx = idx;
|
|
59
|
+
endIndx = idx + 1;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//---------------------------------
|
|
63
|
+
//---- Draw candidate three-prongs
|
|
64
|
+
//---------------------------------
|
|
65
|
+
for (let i = startIndx; i < endIndx; i++) {
|
|
66
|
+
const circle = candidateThreeProngs[i].circle;
|
|
67
|
+
if (forDebugging.bestIndx === i) {
|
|
68
|
+
drawFs.dot(g, circle.center, 0.2, 'green');
|
|
69
|
+
drawFs.circle(g, circle, 'black thin10 nofill');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
drawFs.dot(g, circle.center, 0.2, 'cyan');
|
|
73
|
+
drawFs.circle(g, circle, 'cyan thin5 nofill');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @hidden
|
|
80
|
+
* Shows the actual boundary for each iteration.
|
|
81
|
+
* @param n The 3-prong's zero-based index.
|
|
82
|
+
* @param idx The specific boundary iteration index to view. If ommitted will
|
|
83
|
+
* show all.
|
|
84
|
+
*/
|
|
85
|
+
function showBoundary(g, n, idx) {
|
|
86
|
+
const debugInfo = _debug_.generated.elems.threeProng[n];
|
|
87
|
+
//const g = debugInfo.generated.g;
|
|
88
|
+
const candidateThreeProngs = debugInfo.candidateThreeProngs;
|
|
89
|
+
const startIndx = idx === undefined ? 0 : idx;
|
|
90
|
+
const endIndx = idx === undefined ? candidateThreeProngs.length : idx;
|
|
91
|
+
// Draw relevant δs
|
|
92
|
+
const cpss = debugInfo.cpss;
|
|
93
|
+
let j = 0;
|
|
94
|
+
// For each iteration of δ3s (indexed by j)
|
|
95
|
+
for (let idx = 1; idx < cpss.length - 1; idx++) {
|
|
96
|
+
if (!(j >= startIndx && j <= endIndx)) {
|
|
97
|
+
j++;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const δ3s = [
|
|
101
|
+
cpss[0],
|
|
102
|
+
cpss[idx],
|
|
103
|
+
cpss[cpss.length - 1]
|
|
104
|
+
];
|
|
105
|
+
// For each of the 3 δs
|
|
106
|
+
for (let i = 0; i < 3; i++) {
|
|
107
|
+
const δ = δ3s[i];
|
|
108
|
+
const δS = δ[0]; // Delta Start
|
|
109
|
+
const δE = δ[1]; // Delta End
|
|
110
|
+
const posS = δS.cp.pointOnShape;
|
|
111
|
+
const posE = δE.cp.pointOnShape;
|
|
112
|
+
const pS = posS.p;
|
|
113
|
+
const pE = posE.p;
|
|
114
|
+
const r = 1 + (i * 0.5);
|
|
115
|
+
if (equal(pS, pE)) {
|
|
116
|
+
drawFs.crossHair(g, pS, 'red thin10 nofill', r);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
drawFs.crossHair(g, pS, 'green thin10 nofill', r);
|
|
120
|
+
drawFs.crossHair(g, pE, 'blue thin10 nofill', r);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
j++;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* @hidden
|
|
128
|
+
* @param n The 3-prong's zero-based index.
|
|
129
|
+
*/
|
|
130
|
+
function logδs(n) {
|
|
131
|
+
const threeProng = _debug_.generated.elems.threeProng[n];
|
|
132
|
+
console.log(threeProng.cpss);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @hidden
|
|
136
|
+
* @param p
|
|
137
|
+
*/
|
|
138
|
+
function logNearest(showSpokes = true, showTrace = true, showBoundaries = true) {
|
|
139
|
+
return function (g, p, showDelay = 1000) {
|
|
140
|
+
const generated = _debug_.generated;
|
|
141
|
+
const threeProng = getObjClosestTo(p, generated.elems.threeProng, threeProng => threeProng.circle ? threeProng.circle.center : [0, 0]);
|
|
142
|
+
const circle = threeProng.circle;
|
|
143
|
+
//const g = threeProng.generated.g;
|
|
144
|
+
console.log(threeProng);
|
|
145
|
+
const circle2 = {
|
|
146
|
+
center: circle.center,
|
|
147
|
+
radius: circle.radius || 1
|
|
148
|
+
};
|
|
149
|
+
//const draw = _debug_.fs.draw;
|
|
150
|
+
drawFs.circle(g, circle2, 'blue thin10 nofill', showDelay);
|
|
151
|
+
drawFs.crossHair(g, circle.center, 'red thin2 nofill', 2, showDelay);
|
|
152
|
+
if (showSpokes) {
|
|
153
|
+
drawFs.line(g, [threeProng.poss[0].p, circle.center], 'blue thin5 nofill', showDelay);
|
|
154
|
+
drawFs.line(g, [threeProng.poss[1].p, circle.center], 'blue thin5 nofill', showDelay);
|
|
155
|
+
drawFs.line(g, [threeProng.poss[2].p, circle.center], 'blue thin5 nofill', showDelay);
|
|
156
|
+
}
|
|
157
|
+
if (showBoundaries) {
|
|
158
|
+
const boundaries = threeProng.boundaries;
|
|
159
|
+
const boundaryS = boundaries[0];
|
|
160
|
+
const boundaryE = boundaries[boundaries.length - 1];
|
|
161
|
+
drawFs.beziers(g, boundaryS, 'red thin20 nofill', showDelay);
|
|
162
|
+
for (let i = 1; i < boundaries.length - 1; i++) {
|
|
163
|
+
const boundary = boundaries[i];
|
|
164
|
+
drawFs.beziers(g, boundary, 'green thin20 nofill', showDelay);
|
|
165
|
+
}
|
|
166
|
+
drawFs.beziers(g, boundaryE, 'blue thin20 nofill', showDelay);
|
|
167
|
+
}
|
|
168
|
+
if (showTrace) {
|
|
169
|
+
const traces = threeProng.traces;
|
|
170
|
+
for (const trace of traces) {
|
|
171
|
+
drawFs.polyline(g, trace, 'red thin5 nofill', showDelay);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/** @hidden */
|
|
177
|
+
const threeProngDebugFunctions = {
|
|
178
|
+
drawSpokes,
|
|
179
|
+
traceConvergence,
|
|
180
|
+
showBoundary,
|
|
181
|
+
logδs,
|
|
182
|
+
logNearest
|
|
183
|
+
};
|
|
184
|
+
export { threeProngDebugFunctions };
|
|
185
185
|
//# sourceMappingURL=three-prong.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three-prong.js","sourceRoot":"","sources":["../../../src/debug/functions/three-prong.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmBtD;;;;GAIG;AACH,SAAS,UAAU,CAAC,CAAc,EAAE,CAAS;IAC5C,
|
|
1
|
+
{"version":3,"file":"three-prong.js","sourceRoot":"","sources":["../../../src/debug/functions/three-prong.ts"],"names":[],"mappings":"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"}
|