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
package/node/find-mats.js
CHANGED
|
@@ -1,126 +1,123 @@
|
|
|
1
|
-
import { simplifyPaths } from 'flo-boolean';
|
|
2
|
-
import { findAndAddAll3Prongs } from './mat/find-mat/find-and-add-3-prongs.js';
|
|
3
|
-
import { createInitialCpGraph } from './mat/find-mat/create-initial-cp-graph.js';
|
|
4
|
-
;
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (maxCurviness
|
|
65
|
-
maxCurviness =
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (maxLength
|
|
72
|
-
maxLength =
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
*
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
let
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return mat;
|
|
124
|
-
}
|
|
125
|
-
export { findMats };
|
|
1
|
+
import { simplifyPaths } from 'flo-boolean';
|
|
2
|
+
import { findAndAddAll3Prongs } from './mat/find-mat/find-and-add-3-prongs.js';
|
|
3
|
+
import { createInitialCpGraph } from './mat/find-mat/create-initial-cp-graph.js';
|
|
4
|
+
import { addDebugInfo1, addDebugInfo2, addDebugInfo3, addDebugInfo4 } from './mat/find-mat/add-debug-info.js';
|
|
5
|
+
import { getPotential2Prongs } from './mat/find-mat/get-potential-2-prongs.js';
|
|
6
|
+
import { getSharpCorners } from './mat/find-mat/get-sharp-corners.js';
|
|
7
|
+
import { findAndAdd2ProngsOnAllPaths } from './mat/find-mat/find-and-add-2-prongs-on-all-paths.js';
|
|
8
|
+
import { getInterestingPointsOnLoop } from './mat/find-mat/create-get-interesting-points-on-loop.js';
|
|
9
|
+
import { findAndAddHoleClosing2Prongs } from './mat/find-mat/find-and-add-hole-closing-2-prongs.js';
|
|
10
|
+
import { getLoopsMetrics } from './loop/get-max-coordinate.js';
|
|
11
|
+
/**
|
|
12
|
+
* Finds and returns the Medial Axis Transforms (MATs) from the given array of
|
|
13
|
+
* bezier loops representing shape boundaries.
|
|
14
|
+
*
|
|
15
|
+
* @param bezierLoops An array of (possibly intersecting) loops with each loop
|
|
16
|
+
* representing one or more piecewise smooth closed curves (i.e. shapes). Each
|
|
17
|
+
* loop consists of an array of beziers represented by an array of control
|
|
18
|
+
* points with 2,3 or 4 elements corresponding to linear, quadratic and cubic
|
|
19
|
+
* beziers respectively. Each point is a two-element array (ordered pair), the
|
|
20
|
+
* first of which is the x-coordinate and the second the y-coordinate.
|
|
21
|
+
*
|
|
22
|
+
* @param maxCurviness The maximum value the 'curviness' of a curve can have
|
|
23
|
+
* before an additional MAT point is inserted in between. Defaults to 0.4.
|
|
24
|
+
* (Curviness is measured as the total angle in radians between the consecutive
|
|
25
|
+
* vectors formed by the ordered control points of th bezier curve). The value
|
|
26
|
+
* is clipped in the range `[0.05,3]`.
|
|
27
|
+
* @param maxLength The maximum length a curve can have before an additional MAT
|
|
28
|
+
* point is inserted. This value is scaled to a reference 1024 x 1024
|
|
29
|
+
* grid (e.g. if the shape fits in a 512 x 512 axis-aligned box the value will be
|
|
30
|
+
* halved, e.g. from 10 to 5). Together with maxCurviness it represents a
|
|
31
|
+
* tolerance for the accuracy of the MAT. Defaults to 4. The value is clipped
|
|
32
|
+
* in [1,100].
|
|
33
|
+
*/
|
|
34
|
+
function findMats(bezierLoops, maxCurviness = 0.4, maxLength = 4) {
|
|
35
|
+
// if (typeof _debug_ !== 'undefined') { var timingStart = performance.now(); }
|
|
36
|
+
let maxCoordinate;
|
|
37
|
+
let minBezLength;
|
|
38
|
+
({ maxCurviness, maxLength, maxCoordinate, minBezLength } =
|
|
39
|
+
getSizeParams(bezierLoops, maxCurviness, maxLength));
|
|
40
|
+
const loopss = simplifyPaths(bezierLoops, maxCoordinate);
|
|
41
|
+
const mats = [];
|
|
42
|
+
for (const loops of loopss) {
|
|
43
|
+
const mat = findMat(loops, minBezLength, maxCurviness, maxLength, maxCoordinate);
|
|
44
|
+
if (mat) {
|
|
45
|
+
mats.push(mat);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return mats;
|
|
49
|
+
}
|
|
50
|
+
function getSizeParams(bezierLoops, maxCurviness, maxLength) {
|
|
51
|
+
// Gather some shape metrics
|
|
52
|
+
const { maxCoordinate, maxRadius } = getLoopsMetrics(bezierLoops);
|
|
53
|
+
const expMax = Math.ceil(Math.log2(maxCoordinate));
|
|
54
|
+
const minBezLengthSigBits = 14;
|
|
55
|
+
/**
|
|
56
|
+
* If a curve is shorter than this value then no points on it will be
|
|
57
|
+
* selected for the purpose of finding the MAT.
|
|
58
|
+
*/
|
|
59
|
+
const minBezLength = 2 ** expMax * 2 ** (-minBezLengthSigBits);
|
|
60
|
+
// Limit the tolerance to a reasonable level
|
|
61
|
+
if (maxCurviness < 0.05) {
|
|
62
|
+
maxCurviness = 0.05;
|
|
63
|
+
}
|
|
64
|
+
if (maxCurviness > 3) {
|
|
65
|
+
maxCurviness = 3;
|
|
66
|
+
}
|
|
67
|
+
// Limit the tolerance to a reasonable level
|
|
68
|
+
if (maxLength < 0.1) {
|
|
69
|
+
maxLength = 0.1;
|
|
70
|
+
}
|
|
71
|
+
if (maxLength > 100) {
|
|
72
|
+
maxLength = 100;
|
|
73
|
+
}
|
|
74
|
+
// Adjust length tolerance according to a reference max coordinate
|
|
75
|
+
const expMaxRadius = Math.ceil(Math.log2(maxRadius));
|
|
76
|
+
const maxLengthSigBits = 10; // 1024 x 1024
|
|
77
|
+
maxLength = maxLength * (2 ** expMaxRadius * 2 ** (-maxLengthSigBits));
|
|
78
|
+
return { maxCurviness, maxLength, maxCoordinate, minBezLength };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @hidden
|
|
82
|
+
* Find the MAT of the given loops.
|
|
83
|
+
* @param loops The loops (that as a precondition must be ordered from highest
|
|
84
|
+
* (i.e. smallest y-value) topmost point loops to lowest)
|
|
85
|
+
*/
|
|
86
|
+
function findMat(loops, minBezLength, maxCurviness, maxLength, maxCoordinate) {
|
|
87
|
+
addDebugInfo1(loops);
|
|
88
|
+
// Gets interesting points on the shape, i.e. those that makes sense to use
|
|
89
|
+
// for the 2-prong procedure.
|
|
90
|
+
const pointsPerLoop = loops.map(getInterestingPointsOnLoop(minBezLength, maxCurviness, maxLength));
|
|
91
|
+
const for2ProngsPerLoop = getPotential2Prongs(pointsPerLoop);
|
|
92
|
+
const sharpCornersPerLoop = getSharpCorners(pointsPerLoop);
|
|
93
|
+
const cpTrees = new Map();
|
|
94
|
+
let cpNode = createInitialCpGraph(loops, cpTrees, sharpCornersPerLoop);
|
|
95
|
+
findAndAddHoleClosing2Prongs(loops, cpTrees, maxCoordinate);
|
|
96
|
+
if (typeof _debug_ !== 'undefined') {
|
|
97
|
+
if (_debug_.directives.stopAfterHoleClosers) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
addDebugInfo2();
|
|
102
|
+
cpNode = findAndAdd2ProngsOnAllPaths(loops, cpTrees, for2ProngsPerLoop, maxCoordinate);
|
|
103
|
+
addDebugInfo3();
|
|
104
|
+
if (typeof _debug_ !== 'undefined') {
|
|
105
|
+
if (_debug_.directives.stopAfterTwoProngs) {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (cpNode === undefined) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
findAndAddAll3Prongs(cpTrees, cpNode, maxCoordinate);
|
|
113
|
+
if (typeof _debug_ !== 'undefined') {
|
|
114
|
+
if (_debug_.directives.stopAfterThreeProngs) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const mat = { cpNode, cpTrees };
|
|
119
|
+
addDebugInfo4(mat);
|
|
120
|
+
return mat;
|
|
121
|
+
}
|
|
122
|
+
export { findMats };
|
|
126
123
|
//# sourceMappingURL=find-mats.js.map
|
package/node/find-mats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../src/find-mats.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../src/find-mats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BezierPiece } from 'flo-bezier3';
|
|
2
|
-
import { CpNode } from './cp-node.js';
|
|
3
|
-
/**
|
|
4
|
-
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
5
|
-
* on the boundary.
|
|
6
|
-
* @param cpNode
|
|
7
|
-
*/
|
|
8
|
-
declare function getBoundaryBezierPartsToNext(cpNode: CpNode): BezierPiece[];
|
|
9
|
-
export { getBoundaryBezierPartsToNext };
|
|
1
|
+
import { BezierPiece } from 'flo-bezier3';
|
|
2
|
+
import { CpNode } from './cp-node.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
5
|
+
* on the boundary.
|
|
6
|
+
* @param cpNode
|
|
7
|
+
*/
|
|
8
|
+
declare function getBoundaryBezierPartsToNext(cpNode: CpNode): BezierPiece[];
|
|
9
|
+
export { getBoundaryBezierPartsToNext };
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
3
|
-
* on the boundary.
|
|
4
|
-
* @param cpNode
|
|
5
|
-
*/
|
|
6
|
-
function getBoundaryBezierPartsToNext(cpNode) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (curveThis.loop !== curveNext.loop) {
|
|
14
|
-
// It is a hole-closer going over to the other loop - a kind of terminal
|
|
15
|
-
// CpNode.
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (curveNext === curveThis) {
|
|
20
|
-
bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, posNext.t] });
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, 1] });
|
|
24
|
-
addSkippedBeziers(bezierParts, posThis.curve, posNext.curve, posNext.t);
|
|
25
|
-
}
|
|
26
|
-
return bezierParts;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* @hidden
|
|
30
|
-
* Adds pieces of skipped beziers.
|
|
31
|
-
*/
|
|
32
|
-
function addSkippedBeziers(bezierParts, curveStart, curveEnd, t1) {
|
|
33
|
-
let curveThis = curveStart;
|
|
34
|
-
do {
|
|
35
|
-
curveThis = curveThis.next;
|
|
36
|
-
|
|
37
|
-
? { ps: curveThis.ps, ts: [0, t1] }
|
|
38
|
-
: { ps: curveThis.ps, ts: [0, 1] };
|
|
39
|
-
bezierParts.push(bezierPart);
|
|
40
|
-
} while (curveThis !== curveEnd);
|
|
41
|
-
}
|
|
42
|
-
export { getBoundaryBezierPartsToNext };
|
|
1
|
+
/**
|
|
2
|
+
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
3
|
+
* on the boundary.
|
|
4
|
+
* @param cpNode
|
|
5
|
+
*/
|
|
6
|
+
function getBoundaryBezierPartsToNext(cpNode) {
|
|
7
|
+
const cpThis = cpNode;
|
|
8
|
+
const cpNext = cpNode.next;
|
|
9
|
+
const posThis = cpThis.cp.pointOnShape;
|
|
10
|
+
const posNext = cpNext.cp.pointOnShape;
|
|
11
|
+
const curveThis = posThis.curve;
|
|
12
|
+
const curveNext = posNext.curve;
|
|
13
|
+
if (curveThis.loop !== curveNext.loop) {
|
|
14
|
+
// It is a hole-closer going over to the other loop - a kind of terminal
|
|
15
|
+
// CpNode.
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const bezierParts = [];
|
|
19
|
+
if (curveNext === curveThis) {
|
|
20
|
+
bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, posNext.t] });
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, 1] });
|
|
24
|
+
addSkippedBeziers(bezierParts, posThis.curve, posNext.curve, posNext.t);
|
|
25
|
+
}
|
|
26
|
+
return bezierParts;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @hidden
|
|
30
|
+
* Adds pieces of skipped beziers.
|
|
31
|
+
*/
|
|
32
|
+
function addSkippedBeziers(bezierParts, curveStart, curveEnd, t1) {
|
|
33
|
+
let curveThis = curveStart;
|
|
34
|
+
do {
|
|
35
|
+
curveThis = curveThis.next;
|
|
36
|
+
const bezierPart = curveThis === curveEnd
|
|
37
|
+
? { ps: curveThis.ps, ts: [0, t1] }
|
|
38
|
+
: { ps: curveThis.ps, ts: [0, 1] };
|
|
39
|
+
bezierParts.push(bezierPart);
|
|
40
|
+
} while (curveThis !== curveEnd);
|
|
41
|
+
}
|
|
42
|
+
export { getBoundaryBezierPartsToNext };
|
|
43
43
|
//# sourceMappingURL=get-boundary-bezier-parts-to-next.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-boundary-bezier-parts-to-next.js","sourceRoot":"","sources":["../src/get-boundary-bezier-parts-to-next.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,SAAS,4BAA4B,CAAC,MAAc;IAChD,
|
|
1
|
+
{"version":3,"file":"get-boundary-bezier-parts-to-next.js","sourceRoot":"","sources":["../src/get-boundary-bezier-parts-to-next.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,SAAS,4BAA4B,CAAC,MAAc;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;QACnC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAS,CAAC;KACpB;IAED,MAAM,WAAW,GAAkB,EAAE,CAAC;IAEtC,IAAI,SAAS,KAAK,SAAS,EAAE;QACzB,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC;KACL;SAAM;QACH,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAC/C,CAAC;QAEF,iBAAiB,CACT,WAAW,EACX,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;KACL;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,WAA+C,EAC/C,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG;QACC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ;YACrC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QAEtC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAChC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AAGrC,CAAC;AAGD,OAAO,EAAE,4BAA4B,EAAE,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CpNode } from './cp-node.js';
|
|
2
|
-
/**
|
|
3
|
-
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
4
|
-
* on the boundary.
|
|
5
|
-
* @param cpNode
|
|
6
|
-
*/
|
|
7
|
-
declare function getBoundaryBeziersToNext(cpNode: CpNode): number[][][];
|
|
8
|
-
export { getBoundaryBeziersToNext };
|
|
1
|
+
import { CpNode } from './cp-node.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
4
|
+
* on the boundary.
|
|
5
|
+
* @param cpNode
|
|
6
|
+
*/
|
|
7
|
+
declare function getBoundaryBeziersToNext(cpNode: CpNode): number[][][];
|
|
8
|
+
export { getBoundaryBeziersToNext };
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
// qqq import { fromTo, fromTTo1, from0ToT } from 'flo-bezier3';
|
|
2
|
-
import { fromTo } from 'flo-bezier3';
|
|
3
|
-
/**
|
|
4
|
-
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
5
|
-
* on the boundary.
|
|
6
|
-
* @param cpNode
|
|
7
|
-
*/
|
|
8
|
-
function getBoundaryBeziersToNext(cpNode) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (curveThis.loop !== curveNext.loop) {
|
|
16
|
-
// It is a hole-closer going over to the other loop - a kind of terminal
|
|
17
|
-
// CpNode.
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (curveNext === curveThis) {
|
|
22
|
-
beziers.push(fromTo(posThis.curve.ps, posThis.t, posNext.t));
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
beziers.push(fromTo(posThis.curve.ps, posThis.t, 1));
|
|
26
|
-
addSkippedBeziers(beziers, posThis.curve, posNext.curve, posNext.t);
|
|
27
|
-
}
|
|
28
|
-
return beziers;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Adds pieces of skipped beziers.
|
|
32
|
-
* @hidden
|
|
33
|
-
*/
|
|
34
|
-
function addSkippedBeziers(beziers, curveStart, curveEnd, t1) {
|
|
35
|
-
let curveThis = curveStart;
|
|
36
|
-
do {
|
|
37
|
-
curveThis = curveThis.next;
|
|
38
|
-
|
|
39
|
-
beziers.push(
|
|
40
|
-
// qqq from0ToT(curveThis.ps, tEnd)
|
|
41
|
-
fromTo(curveThis.ps, 0, tEnd));
|
|
42
|
-
} while (curveThis !== curveEnd);
|
|
43
|
-
}
|
|
44
|
-
export { getBoundaryBeziersToNext };
|
|
1
|
+
// qqq import { fromTo, fromTTo1, from0ToT } from 'flo-bezier3';
|
|
2
|
+
import { fromTo } from 'flo-bezier3';
|
|
3
|
+
/**
|
|
4
|
+
* Returns the ordered bezier curves from this CpNode to the next CpNode
|
|
5
|
+
* on the boundary.
|
|
6
|
+
* @param cpNode
|
|
7
|
+
*/
|
|
8
|
+
function getBoundaryBeziersToNext(cpNode) {
|
|
9
|
+
const cpThis = cpNode;
|
|
10
|
+
const cpNext = cpNode.next;
|
|
11
|
+
const posThis = cpThis.cp.pointOnShape;
|
|
12
|
+
const posNext = cpNext.cp.pointOnShape;
|
|
13
|
+
const curveThis = posThis.curve;
|
|
14
|
+
const curveNext = posNext.curve;
|
|
15
|
+
if (curveThis.loop !== curveNext.loop) {
|
|
16
|
+
// It is a hole-closer going over to the other loop - a kind of terminal
|
|
17
|
+
// CpNode.
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const beziers = [];
|
|
21
|
+
if (curveNext === curveThis) {
|
|
22
|
+
beziers.push(fromTo(posThis.curve.ps, posThis.t, posNext.t));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
beziers.push(fromTo(posThis.curve.ps, posThis.t, 1));
|
|
26
|
+
addSkippedBeziers(beziers, posThis.curve, posNext.curve, posNext.t);
|
|
27
|
+
}
|
|
28
|
+
return beziers;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Adds pieces of skipped beziers.
|
|
32
|
+
* @hidden
|
|
33
|
+
*/
|
|
34
|
+
function addSkippedBeziers(beziers, curveStart, curveEnd, t1) {
|
|
35
|
+
let curveThis = curveStart;
|
|
36
|
+
do {
|
|
37
|
+
curveThis = curveThis.next;
|
|
38
|
+
const tEnd = curveThis === curveEnd ? t1 : 1;
|
|
39
|
+
beziers.push(
|
|
40
|
+
// qqq from0ToT(curveThis.ps, tEnd)
|
|
41
|
+
fromTo(curveThis.ps, 0, tEnd));
|
|
42
|
+
} while (curveThis !== curveEnd);
|
|
43
|
+
}
|
|
44
|
+
export { getBoundaryBeziersToNext };
|
|
45
45
|
//# sourceMappingURL=get-boundary-beziers-to-next.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-boundary-beziers-to-next.js","sourceRoot":"","sources":["../src/get-boundary-beziers-to-next.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,MAAc;IAC5C,
|
|
1
|
+
{"version":3,"file":"get-boundary-beziers-to-next.js","sourceRoot":"","sources":["../src/get-boundary-beziers-to-next.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;QACnC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAS,CAAC;KACpB;IAED,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,SAAS,KAAK,SAAS,EAAE;QACzB,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;KACL;SAAM;QACH,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CACzC,CAAC;QAEF,iBAAiB,CACT,OAAO,EACP,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;KACL;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,OAAyB,EACzB,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG;QACC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI;QACR,oCAAoC;QACpC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAChC,CAAC;KACL,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const getBoundingBox_: (a: number[][]) => number[][];
|
|
2
|
-
export { getBoundingBox_ };
|
|
1
|
+
declare const getBoundingBox_: (a: number[][]) => number[][];
|
|
2
|
+
export { getBoundingBox_ };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getBoundingBox } from "flo-bezier3";
|
|
2
|
-
import { memoize } from "flo-memoize";
|
|
3
|
-
const getBoundingBox_ = memoize(getBoundingBox);
|
|
4
|
-
export { getBoundingBox_ };
|
|
1
|
+
import { getBoundingBox } from "flo-bezier3";
|
|
2
|
+
import { memoize } from "flo-memoize";
|
|
3
|
+
const getBoundingBox_ = memoize(getBoundingBox);
|
|
4
|
+
export { getBoundingBox_ };
|
|
5
5
|
//# sourceMappingURL=get-bounding-box-.js.map
|
package/node/get-branches.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { CpNode } from './cp-node.js';
|
|
2
|
-
/**
|
|
3
|
-
* Traverses all edges (depth first) of the given MAT tree starting at the given
|
|
4
|
-
* vertex (represented by a [[CpNode]]). Returns the result as an array of
|
|
5
|
-
* smooth branches, where smoothness is total or within a given tolerance.
|
|
6
|
-
* @param cpNode Any [[CpNode]] representing the start vertex.
|
|
7
|
-
* @param tolerance Tolerance given as the degrees difference of the unit
|
|
8
|
-
* direction vectors at the interface between curves. A tolerance of zero means
|
|
9
|
-
* perfect smoothness is required.
|
|
10
|
-
*/
|
|
11
|
-
declare function getBranches(cpNode: CpNode, tolerance?: number): CpNode[][];
|
|
12
|
-
export { getBranches };
|
|
1
|
+
import { CpNode } from './cp-node.js';
|
|
2
|
+
/**
|
|
3
|
+
* Traverses all edges (depth first) of the given MAT tree starting at the given
|
|
4
|
+
* vertex (represented by a [[CpNode]]). Returns the result as an array of
|
|
5
|
+
* smooth branches, where smoothness is total or within a given tolerance.
|
|
6
|
+
* @param cpNode Any [[CpNode]] representing the start vertex.
|
|
7
|
+
* @param tolerance Tolerance given as the degrees difference of the unit
|
|
8
|
+
* direction vectors at the interface between curves. A tolerance of zero means
|
|
9
|
+
* perfect smoothness is required.
|
|
10
|
+
*/
|
|
11
|
+
declare function getBranches(cpNode: CpNode, tolerance?: number): CpNode[][];
|
|
12
|
+
export { getBranches };
|