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,52 +1,52 @@
|
|
|
1
|
-
import { getLeaves } from '../get-leaves.js';
|
|
2
|
-
import { CpNode } from '../../cp-node.js';
|
|
3
|
-
/**
|
|
4
|
-
* @hidden
|
|
5
|
-
* Cull all edges not part of a cycle in the MAT planar graph.
|
|
6
|
-
* @param cpStart The start CpNode which must reprsesent the maximal 3-prong
|
|
7
|
-
* vertex.
|
|
8
|
-
*/
|
|
9
|
-
function cullNonCycles(cpStart) {
|
|
10
|
-
let cpNodeKept = cpStart;
|
|
11
|
-
|
|
12
|
-
while (leaves.length) {
|
|
13
|
-
|
|
14
|
-
// Preserve topology - keep cycles.
|
|
15
|
-
if (leaf.isHoleClosing || leaf.isIntersection) {
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
let cpNode = leaf.next; // Turn around
|
|
19
|
-
while (true) {
|
|
20
|
-
cpNode = cpNode.next;
|
|
21
|
-
let cut = false;
|
|
22
|
-
|
|
23
|
-
if (cpNode.getProngCount() > 2) {
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
//if (cpStart === cpNode || cpStart === cp1 || cpStart === cp2) {
|
|
27
|
-
if (CpNode.isOnSameCircle(cpNode, cpStart)) {
|
|
28
|
-
cut = true; // We are at the max disk - cut whole edge
|
|
29
|
-
}
|
|
30
|
-
else if (cpNode.next === cp2) {
|
|
31
|
-
cpNode = cp2;
|
|
32
|
-
}
|
|
33
|
-
else if (cp2.next !== cp1) {
|
|
34
|
-
cut = true; // Cut whole edge
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
else if (cpNode.isTerminating() && !cpNode.isIntersection) {
|
|
38
|
-
cpNodeKept = cpNode;
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
if (cut) {
|
|
42
|
-
cp1.next = cpNode;
|
|
43
|
-
cpNode.prev = cp1;
|
|
44
|
-
cpNodeKept = cpNode;
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return cpNodeKept;
|
|
50
|
-
}
|
|
51
|
-
export { cullNonCycles };
|
|
1
|
+
import { getLeaves } from '../get-leaves.js';
|
|
2
|
+
import { CpNode } from '../../cp-node.js';
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
* Cull all edges not part of a cycle in the MAT planar graph.
|
|
6
|
+
* @param cpStart The start CpNode which must reprsesent the maximal 3-prong
|
|
7
|
+
* vertex.
|
|
8
|
+
*/
|
|
9
|
+
function cullNonCycles(cpStart) {
|
|
10
|
+
let cpNodeKept = cpStart;
|
|
11
|
+
const leaves = getLeaves(cpStart);
|
|
12
|
+
while (leaves.length) {
|
|
13
|
+
const leaf = leaves.pop();
|
|
14
|
+
// Preserve topology - keep cycles.
|
|
15
|
+
if (leaf.isHoleClosing || leaf.isIntersection) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
let cpNode = leaf.next; // Turn around
|
|
19
|
+
while (true) {
|
|
20
|
+
cpNode = cpNode.next;
|
|
21
|
+
let cut = false;
|
|
22
|
+
const cp1 = cpNode.prevOnCircle;
|
|
23
|
+
if (cpNode.getProngCount() > 2) {
|
|
24
|
+
//const cp2 = cp1.prevOnCircle;
|
|
25
|
+
const cp2 = cpNode.nextOnCircle;
|
|
26
|
+
//if (cpStart === cpNode || cpStart === cp1 || cpStart === cp2) {
|
|
27
|
+
if (CpNode.isOnSameCircle(cpNode, cpStart)) {
|
|
28
|
+
cut = true; // We are at the max disk - cut whole edge
|
|
29
|
+
}
|
|
30
|
+
else if (cpNode.next === cp2) {
|
|
31
|
+
cpNode = cp2;
|
|
32
|
+
}
|
|
33
|
+
else if (cp2.next !== cp1) {
|
|
34
|
+
cut = true; // Cut whole edge
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (cpNode.isTerminating() && !cpNode.isIntersection) {
|
|
38
|
+
cpNodeKept = cpNode;
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
if (cut) {
|
|
42
|
+
cp1.next = cpNode;
|
|
43
|
+
cpNode.prev = cp1;
|
|
44
|
+
cpNodeKept = cpNode;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return cpNodeKept;
|
|
50
|
+
}
|
|
51
|
+
export { cullNonCycles };
|
|
52
52
|
//# sourceMappingURL=cull-non-cycles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cull-non-cycles.js","sourceRoot":"","sources":["../../../src/mat/to-scale-axis/cull-non-cycles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAe;IAElC,IAAI,UAAU,GAAG,OAAO,CAAC;IAEzB,
|
|
1
|
+
{"version":3,"file":"cull-non-cycles.js","sourceRoot":"","sources":["../../../src/mat/to-scale-axis/cull-non-cycles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAe;IAElC,IAAI,UAAU,GAAG,OAAO,CAAC;IAEzB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAGlC,OAAO,MAAM,CAAC,MAAM,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAE1B,mCAAmC;QACnC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,SAAS;SAAE;QAE5D,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc;QAEtC,OAAO,IAAI,EAAE;YACT,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;YAEhC,IAAI,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;gBAC5B,+BAA+B;gBAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;gBAEhC,iEAAiE;gBACjE,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;oBACxC,GAAG,GAAG,IAAI,CAAC,CAAC,0CAA0C;iBACzD;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE;oBAC5B,MAAM,GAAG,GAAG,CAAC;iBAChB;qBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;oBACzB,GAAG,GAAG,IAAI,CAAC,CAAC,iBAAiB;iBAChC;aACJ;iBAAM,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBACzD,UAAU,GAAG,MAAM,CAAC;gBACpB,OAAO,SAAS,CAAC;aACpB;YAED,IAAI,GAAG,EAAE;gBACL,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;gBAClB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;gBAElB,UAAU,GAAG,MAAM,CAAC;gBACpB,MAAM;aACT;SACJ;KACJ;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Circle } from '../../circle.js';
|
|
2
|
-
import { CpNode } from '../../cp-node.js';
|
|
3
|
-
/**
|
|
4
|
-
* @hidden
|
|
5
|
-
* Returns the set of Vertices passing the following test: walk the MAT tree and
|
|
6
|
-
* keep all Vertices not in the current cull set and any Vertices that have a
|
|
7
|
-
* non-culled node further down the line toward the tree leaves.
|
|
8
|
-
* @param culls The CpNodes (referred to by circles) that should be culled.
|
|
9
|
-
* @param maxCpNode The start CpNode which must reprsesent the maximal vertex.
|
|
10
|
-
*/
|
|
11
|
-
declare function cull(culls: Set<Circle>, maxCpNode: CpNode): void;
|
|
12
|
-
export { cull };
|
|
1
|
+
import { Circle } from '../../circle.js';
|
|
2
|
+
import { CpNode } from '../../cp-node.js';
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
* Returns the set of Vertices passing the following test: walk the MAT tree and
|
|
6
|
+
* keep all Vertices not in the current cull set and any Vertices that have a
|
|
7
|
+
* non-culled node further down the line toward the tree leaves.
|
|
8
|
+
* @param culls The CpNodes (referred to by circles) that should be culled.
|
|
9
|
+
* @param maxCpNode The start CpNode which must reprsesent the maximal vertex.
|
|
10
|
+
*/
|
|
11
|
+
declare function cull(culls: Set<Circle>, maxCpNode: CpNode): void;
|
|
12
|
+
export { cull };
|
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
import { getLeaves } from '../get-leaves.js';
|
|
2
|
-
import { CpNode } from '../../cp-node.js';
|
|
3
|
-
/**
|
|
4
|
-
* @hidden
|
|
5
|
-
* Returns the set of Vertices passing the following test: walk the MAT tree and
|
|
6
|
-
* keep all Vertices not in the current cull set and any Vertices that have a
|
|
7
|
-
* non-culled node further down the line toward the tree leaves.
|
|
8
|
-
* @param culls The CpNodes (referred to by circles) that should be culled.
|
|
9
|
-
* @param maxCpNode The start CpNode which must reprsesent the maximal vertex.
|
|
10
|
-
*/
|
|
11
|
-
function cull(culls, maxCpNode) {
|
|
12
|
-
|
|
13
|
-
function getNonTrivialEdges(cpStart) {
|
|
14
|
-
let cp = cpStart;
|
|
15
|
-
|
|
16
|
-
do {
|
|
17
|
-
if (cp.next !== cp.nextOnCircle) {
|
|
18
|
-
cps.push(cp);
|
|
19
|
-
}
|
|
20
|
-
cp = cp.nextOnCircle;
|
|
21
|
-
} while (cp !== cpStart.prevOnCircle);
|
|
22
|
-
return cps;
|
|
23
|
-
}
|
|
24
|
-
while (leaves.length) {
|
|
25
|
-
|
|
26
|
-
// Preserve topology.
|
|
27
|
-
if (leaf.isHoleClosing || leaf.isIntersection) {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (!culls.has(leaf.cp.circle)) {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
let cpNode = leaf.next; // Turn around
|
|
34
|
-
while (true) {
|
|
35
|
-
cpNode = cpNode.next;
|
|
36
|
-
let cut = false;
|
|
37
|
-
|
|
38
|
-
if (!culls.has(cpNode.cp.circle)) {
|
|
39
|
-
// Cut off the edge once a non-cull has been reached.
|
|
40
|
-
cut = true;
|
|
41
|
-
}
|
|
42
|
-
else if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
|
|
43
|
-
cut = true; // We are at the max disk - cut whole edge
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
|
|
47
|
-
if (cps.length === 1) {
|
|
48
|
-
cpNode = cps[0];
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
cut = true;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (cut) {
|
|
55
|
-
cp1.next = cpNode;
|
|
56
|
-
cpNode.prev = cp1;
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/*
|
|
63
|
-
function cull(
|
|
64
|
-
culls: Set<Circle>,
|
|
65
|
-
maxCpNode: CpNode) {
|
|
66
|
-
|
|
67
|
-
let leaves = getLeaves(maxCpNode);
|
|
68
|
-
|
|
69
|
-
function getNonTrivialBranches(cpStart: CpNode) {
|
|
70
|
-
let cp = cpStart.next;
|
|
71
|
-
|
|
72
|
-
let cps: CpNode[] = [];
|
|
73
|
-
do {
|
|
74
|
-
if (cp.next !== cp.nextOnCircle) {
|
|
75
|
-
cps.push(cp);
|
|
76
|
-
}
|
|
77
|
-
cp = cp.nextOnCircle;
|
|
78
|
-
} while (cp !== cpStart)
|
|
79
|
-
|
|
80
|
-
return cps;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
while (leaves.length) {
|
|
84
|
-
let leaf = leaves.pop();
|
|
85
|
-
|
|
86
|
-
// Preserve topology.
|
|
87
|
-
if (leaf.isHoleClosing || leaf.isIntersection) { continue; }
|
|
88
|
-
|
|
89
|
-
if (!culls.has(leaf.cp.circle)) {
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
let cpNode = leaf.next; // Turn around
|
|
94
|
-
|
|
95
|
-
while (true) {
|
|
96
|
-
cpNode = cpNode.next;
|
|
97
|
-
let cut = false;
|
|
98
|
-
let cp1 = cpNode.prevOnCircle;
|
|
99
|
-
|
|
100
|
-
if (!culls.has(cpNode.cp.circle)) {
|
|
101
|
-
// Cut the branch once a non-cull has been reached.
|
|
102
|
-
cut = true;
|
|
103
|
-
} else {
|
|
104
|
-
//let cp2 = cp1.prevOnCircle;
|
|
105
|
-
let cp2 = cpNode.nextOnCircle;
|
|
106
|
-
|
|
107
|
-
//if (maxCpNode === cpNode || maxCpNode === cp1 || maxCpNode === cp2) {
|
|
108
|
-
if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
|
|
109
|
-
cut = true; // We are at the max disk - cut whole edge
|
|
110
|
-
} else if (cpNode.next === cp2) {
|
|
111
|
-
// Continue but starting from cp2
|
|
112
|
-
cpNode = cp2;
|
|
113
|
-
} else if (cp2.next === cp1) {
|
|
114
|
-
// Do nothing - ignore the branch starting from cp2 since it
|
|
115
|
-
// is terminating.
|
|
116
|
-
} else if (cp2.next !== cp1) {
|
|
117
|
-
// At this stage (cpNode.next !== cp2 && cp2.next !== cp1)
|
|
118
|
-
// so it is a bifurcation point - cut the edge.
|
|
119
|
-
cut = true;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (cut) {
|
|
124
|
-
cp1.next = cpNode;
|
|
125
|
-
cpNode.prev = cp1;
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
*/
|
|
132
|
-
export { cull };
|
|
1
|
+
import { getLeaves } from '../get-leaves.js';
|
|
2
|
+
import { CpNode } from '../../cp-node.js';
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
* Returns the set of Vertices passing the following test: walk the MAT tree and
|
|
6
|
+
* keep all Vertices not in the current cull set and any Vertices that have a
|
|
7
|
+
* non-culled node further down the line toward the tree leaves.
|
|
8
|
+
* @param culls The CpNodes (referred to by circles) that should be culled.
|
|
9
|
+
* @param maxCpNode The start CpNode which must reprsesent the maximal vertex.
|
|
10
|
+
*/
|
|
11
|
+
function cull(culls, maxCpNode) {
|
|
12
|
+
const leaves = getLeaves(maxCpNode);
|
|
13
|
+
function getNonTrivialEdges(cpStart) {
|
|
14
|
+
let cp = cpStart;
|
|
15
|
+
const cps = [];
|
|
16
|
+
do {
|
|
17
|
+
if (cp.next !== cp.nextOnCircle) {
|
|
18
|
+
cps.push(cp);
|
|
19
|
+
}
|
|
20
|
+
cp = cp.nextOnCircle;
|
|
21
|
+
} while (cp !== cpStart.prevOnCircle);
|
|
22
|
+
return cps;
|
|
23
|
+
}
|
|
24
|
+
while (leaves.length) {
|
|
25
|
+
const leaf = leaves.pop();
|
|
26
|
+
// Preserve topology.
|
|
27
|
+
if (leaf.isHoleClosing || leaf.isIntersection) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (!culls.has(leaf.cp.circle)) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
let cpNode = leaf.next; // Turn around
|
|
34
|
+
while (true) {
|
|
35
|
+
cpNode = cpNode.next;
|
|
36
|
+
let cut = false;
|
|
37
|
+
const cp1 = cpNode.prevOnCircle;
|
|
38
|
+
if (!culls.has(cpNode.cp.circle)) {
|
|
39
|
+
// Cut off the edge once a non-cull has been reached.
|
|
40
|
+
cut = true;
|
|
41
|
+
}
|
|
42
|
+
else if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
|
|
43
|
+
cut = true; // We are at the max disk - cut whole edge
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const cps = getNonTrivialEdges(cpNode);
|
|
47
|
+
if (cps.length === 1) {
|
|
48
|
+
cpNode = cps[0];
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
cut = true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (cut) {
|
|
55
|
+
cp1.next = cpNode;
|
|
56
|
+
cpNode.prev = cp1;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/*
|
|
63
|
+
function cull(
|
|
64
|
+
culls: Set<Circle>,
|
|
65
|
+
maxCpNode: CpNode) {
|
|
66
|
+
|
|
67
|
+
let leaves = getLeaves(maxCpNode);
|
|
68
|
+
|
|
69
|
+
function getNonTrivialBranches(cpStart: CpNode) {
|
|
70
|
+
let cp = cpStart.next;
|
|
71
|
+
|
|
72
|
+
let cps: CpNode[] = [];
|
|
73
|
+
do {
|
|
74
|
+
if (cp.next !== cp.nextOnCircle) {
|
|
75
|
+
cps.push(cp);
|
|
76
|
+
}
|
|
77
|
+
cp = cp.nextOnCircle;
|
|
78
|
+
} while (cp !== cpStart)
|
|
79
|
+
|
|
80
|
+
return cps;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
while (leaves.length) {
|
|
84
|
+
let leaf = leaves.pop();
|
|
85
|
+
|
|
86
|
+
// Preserve topology.
|
|
87
|
+
if (leaf.isHoleClosing || leaf.isIntersection) { continue; }
|
|
88
|
+
|
|
89
|
+
if (!culls.has(leaf.cp.circle)) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
let cpNode = leaf.next; // Turn around
|
|
94
|
+
|
|
95
|
+
while (true) {
|
|
96
|
+
cpNode = cpNode.next;
|
|
97
|
+
let cut = false;
|
|
98
|
+
let cp1 = cpNode.prevOnCircle;
|
|
99
|
+
|
|
100
|
+
if (!culls.has(cpNode.cp.circle)) {
|
|
101
|
+
// Cut the branch once a non-cull has been reached.
|
|
102
|
+
cut = true;
|
|
103
|
+
} else {
|
|
104
|
+
//let cp2 = cp1.prevOnCircle;
|
|
105
|
+
let cp2 = cpNode.nextOnCircle;
|
|
106
|
+
|
|
107
|
+
//if (maxCpNode === cpNode || maxCpNode === cp1 || maxCpNode === cp2) {
|
|
108
|
+
if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
|
|
109
|
+
cut = true; // We are at the max disk - cut whole edge
|
|
110
|
+
} else if (cpNode.next === cp2) {
|
|
111
|
+
// Continue but starting from cp2
|
|
112
|
+
cpNode = cp2;
|
|
113
|
+
} else if (cp2.next === cp1) {
|
|
114
|
+
// Do nothing - ignore the branch starting from cp2 since it
|
|
115
|
+
// is terminating.
|
|
116
|
+
} else if (cp2.next !== cp1) {
|
|
117
|
+
// At this stage (cpNode.next !== cp2 && cp2.next !== cp1)
|
|
118
|
+
// so it is a bifurcation point - cut the edge.
|
|
119
|
+
cut = true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (cut) {
|
|
124
|
+
cp1.next = cpNode;
|
|
125
|
+
cpNode.prev = cp1;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
*/
|
|
132
|
+
export { cull };
|
|
133
133
|
//# sourceMappingURL=cull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cull.js","sourceRoot":"","sources":["../../../src/mat/to-scale-axis/cull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;;;;GAOG;AACH,SAAS,IAAI,CACL,KAAkB,EAClB,SAAiB;IAErB,
|
|
1
|
+
{"version":3,"file":"cull.js","sourceRoot":"","sources":["../../../src/mat/to-scale-axis/cull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;;;;GAOG;AACH,SAAS,IAAI,CACL,KAAkB,EAClB,SAAiB;IAErB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,SAAS,kBAAkB,CAAC,OAAe;QAC7C,IAAI,EAAE,GAAG,OAAO,CAAC;QAEX,MAAM,GAAG,GAAa,EAAE,CAAC;QAC/B,GAAG;YACO,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,YAAY,EAAE;gBAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChB;YACV,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC;SACrB,QAAQ,EAAE,KAAK,OAAO,CAAC,YAAY,EAAC;QAErC,OAAO,GAAG,CAAC;IACT,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAE1B,qBAAqB;QACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,SAAS;SAAE;QAE5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAC5B,SAAS;SACZ;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc;QAEtC,OAAO,IAAI,EAAE;YACT,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;YAEhC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC9B,qDAAqD;gBACrD,GAAG,GAAG,IAAI,CAAC;aACd;iBAAM,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;gBACjD,GAAG,GAAG,IAAI,CAAC,CAAC,0CAA0C;aACzD;iBAAM;gBACH,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAEvC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBACnB;qBAAM;oBACH,GAAG,GAAG,IAAI,CAAC;iBACd;aACJ;YAED,IAAI,GAAG,EAAE;gBACL,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;gBAClB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;gBAClB,MAAM;aACT;SACJ;KACJ;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEE;AAGF,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
package/node/mat/trim-mat.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Mat } from '../mat.js';
|
|
2
|
-
/**
|
|
3
|
-
* Trims the given Medial Axis Transform so that only cycles remain. Similar to
|
|
4
|
-
* toScaleAxis(mat, Number.POSITIVE_INFINITY).
|
|
5
|
-
* @param mat The MAT to trim.
|
|
6
|
-
*/
|
|
7
|
-
declare function trimMat(mat: Mat): Mat;
|
|
8
|
-
export { trimMat };
|
|
1
|
+
import { Mat } from '../mat.js';
|
|
2
|
+
/**
|
|
3
|
+
* Trims the given Medial Axis Transform so that only cycles remain. Similar to
|
|
4
|
+
* toScaleAxis(mat, Number.POSITIVE_INFINITY).
|
|
5
|
+
* @param mat The MAT to trim.
|
|
6
|
+
*/
|
|
7
|
+
declare function trimMat(mat: Mat): Mat;
|
|
8
|
+
export { trimMat };
|
package/node/mat/trim-mat.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { createNewCpTree } from './create-new-cp-tree.js';
|
|
2
|
-
import { cullNonCycles } from './to-scale-axis/cull-non-cycles.js';
|
|
3
|
-
import { clone } from '../cp-node/clone.js';
|
|
4
|
-
/**
|
|
5
|
-
* Trims the given Medial Axis Transform so that only cycles remain. Similar to
|
|
6
|
-
* toScaleAxis(mat, Number.POSITIVE_INFINITY).
|
|
7
|
-
* @param mat The MAT to trim.
|
|
8
|
-
*/
|
|
9
|
-
function trimMat(mat) {
|
|
10
|
-
|
|
11
|
-
if (!cpNode) {
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
return { cpNode, cpTrees: createNewCpTree(cpNode) };
|
|
15
|
-
}
|
|
16
|
-
export { trimMat };
|
|
1
|
+
import { createNewCpTree } from './create-new-cp-tree.js';
|
|
2
|
+
import { cullNonCycles } from './to-scale-axis/cull-non-cycles.js';
|
|
3
|
+
import { clone } from '../cp-node/clone.js';
|
|
4
|
+
/**
|
|
5
|
+
* Trims the given Medial Axis Transform so that only cycles remain. Similar to
|
|
6
|
+
* toScaleAxis(mat, Number.POSITIVE_INFINITY).
|
|
7
|
+
* @param mat The MAT to trim.
|
|
8
|
+
*/
|
|
9
|
+
function trimMat(mat) {
|
|
10
|
+
const cpNode = cullNonCycles(clone(mat.cpNode));
|
|
11
|
+
if (!cpNode) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return { cpNode, cpTrees: createNewCpTree(cpNode) };
|
|
15
|
+
}
|
|
16
|
+
export { trimMat };
|
|
17
17
|
//# sourceMappingURL=trim-mat.js.map
|
package/node/mat/trim-mat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trim-mat.js","sourceRoot":"","sources":["../../src/mat/trim-mat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAG5C;;;;GAIG;AACH,SAAS,OAAO,CAAC,GAAQ;IACxB,
|
|
1
|
+
{"version":3,"file":"trim-mat.js","sourceRoot":"","sources":["../../src/mat/trim-mat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAG5C;;;;GAIG;AACH,SAAS,OAAO,CAAC,GAAQ;IACxB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7C,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,SAAS,CAAC;KAAE;IAElC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;AACxD,CAAC;AAGD,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/node/mat.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
2
|
-
import { CpNode } from './cp-node.js';
|
|
3
|
-
import { Loop } from './loop.js';
|
|
4
|
-
/**
|
|
5
|
-
* Represents a complete Medial Axis Transform (MAT).
|
|
6
|
-
*
|
|
7
|
-
* The MAT is fully described through its [[CpNode]] property. The [[cpTrees]]
|
|
8
|
-
* property is only added to facilitate extension of the MAT, e.g. by adding
|
|
9
|
-
* extra maximal disks and is typically not used. See [[CpNode]] for more
|
|
10
|
-
* details.
|
|
11
|
-
*/
|
|
12
|
-
interface Mat {
|
|
13
|
-
/** A complete representation of the MAT. See [[CpNode]]. */
|
|
14
|
-
cpNode: CpNode;
|
|
15
|
-
/**
|
|
16
|
-
* Primarily for internal use. A tree structure storing the
|
|
17
|
-
* [[CpNode]]s of the MAT by their compare order, i.e. their cyclic order
|
|
18
|
-
* around the shape boundary.
|
|
19
|
-
*/
|
|
20
|
-
cpTrees: Map<Loop, LlRbTree<CpNode>>;
|
|
21
|
-
}
|
|
22
|
-
export { Mat };
|
|
1
|
+
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
2
|
+
import { CpNode } from './cp-node.js';
|
|
3
|
+
import { Loop } from './loop.js';
|
|
4
|
+
/**
|
|
5
|
+
* Represents a complete Medial Axis Transform (MAT).
|
|
6
|
+
*
|
|
7
|
+
* The MAT is fully described through its [[CpNode]] property. The [[cpTrees]]
|
|
8
|
+
* property is only added to facilitate extension of the MAT, e.g. by adding
|
|
9
|
+
* extra maximal disks and is typically not used. See [[CpNode]] for more
|
|
10
|
+
* details.
|
|
11
|
+
*/
|
|
12
|
+
interface Mat {
|
|
13
|
+
/** A complete representation of the MAT. See [[CpNode]]. */
|
|
14
|
+
cpNode: CpNode;
|
|
15
|
+
/**
|
|
16
|
+
* Primarily for internal use. A tree structure storing the
|
|
17
|
+
* [[CpNode]]s of the MAT by their compare order, i.e. their cyclic order
|
|
18
|
+
* around the shape boundary.
|
|
19
|
+
*/
|
|
20
|
+
cpTrees: Map<Loop, LlRbTree<CpNode>>;
|
|
21
|
+
}
|
|
22
|
+
export { Mat };
|
package/node/mat.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=mat.js.map
|