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/cp-node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cp-node.js","sourceRoot":"","sources":["../src/cp-node.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,MAAM;IAEX;;;;;;;;;;;;;;;;OAgBG;IACA,YACe,EAAoB,EAC7B,aAAwB,EACxB,cAAwB,EACxB,OAA0B,SAAS,EACnC,OAA0B,SAAS,EACnC,eAA0B,SAAS,EACnC,eAA0B,SAAS;QAN1B,OAAE,GAAF,EAAE,CAAkB;QAC7B,kBAAa,GAAb,aAAa,CAAW;QACxB,mBAAc,GAAd,cAAc,CAAU;QACxB,SAAI,GAAJ,IAAI,CAA+B;QACnC,SAAI,GAAJ,IAAI,CAA+B;QACnC,iBAAY,GAAZ,YAAY,CAAuB;QACnC,iBAAY,GAAZ,YAAY,CAAuB;IAC5C,CAAC;IAGD;;;;;;OAMG;IACH,IAAI,oBAAoB;QACvB,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAaD;;;;;OAKG;IACH,WAAW;QACV,
|
|
1
|
+
{"version":3,"file":"cp-node.js","sourceRoot":"","sources":["../src/cp-node.ts"],"names":[],"mappings":"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"}
|
package/node/curve.d.ts
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import { Loop } from './loop.js';
|
|
2
|
-
import { Corner } from './mat/corner.js';
|
|
3
|
-
/**
|
|
4
|
-
* Represents a bezier curve on the shape boundary / loop.
|
|
5
|
-
*/
|
|
6
|
-
interface Curve {
|
|
7
|
-
/**
|
|
8
|
-
* Primarily for internal use.
|
|
9
|
-
* @param loop The closed loop of bezier curves representing the shape
|
|
10
|
-
* boundary this curve belongs to.
|
|
11
|
-
* @param ps The bezier control points.
|
|
12
|
-
* @param prev The previous curve (when going in a negative direction around
|
|
13
|
-
* the shape boundary, i.e. clockwise for the outer shape and anti-clockwise
|
|
14
|
-
* for the holes (if any)).
|
|
15
|
-
* @param next The next curve (when going in a positive direction around
|
|
16
|
-
* the shape boundary, i.e. anti-clockwise for the outer shape and clockwise
|
|
17
|
-
* for the holes (if any)).
|
|
18
|
-
* @param idx The curve's ordered index in the loop. This imposes a cycling
|
|
19
|
-
* ordering of the curves in the loop.
|
|
20
|
-
*/
|
|
21
|
-
loop: Loop;
|
|
22
|
-
ps: number[][];
|
|
23
|
-
prev: Curve;
|
|
24
|
-
next: Curve;
|
|
25
|
-
idx: number;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @hidden
|
|
29
|
-
* Returns a new corner with properties.
|
|
30
|
-
*
|
|
31
|
-
* PRECONDITION: The beziers has control points with max bit-length of 26 and
|
|
32
|
-
* aligned to a 'grid' to have the same exponent. This is so the vectors between
|
|
33
|
-
* control points can be calculated exactly without resorting to adaptive
|
|
34
|
-
* infinite precision floating point operations.
|
|
35
|
-
*
|
|
36
|
-
* @param psI The incoming bezier that ends in the corner
|
|
37
|
-
* @param psO The outgoing bezier that starts at the corner
|
|
38
|
-
*/
|
|
39
|
-
declare function getCorner(psI: number[][], psO: number[][]): Corner;
|
|
40
|
-
/**
|
|
41
|
-
* @hidden
|
|
42
|
-
* Returns information about the corner created at the end of this curve
|
|
43
|
-
* (at t === 1) and the start of the next curve (at t === 0).
|
|
44
|
-
*/
|
|
45
|
-
declare
|
|
46
|
-
export { Curve, getCorner, getCornerAtEnd };
|
|
1
|
+
import { Loop } from './loop.js';
|
|
2
|
+
import { Corner } from './mat/corner.js';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a bezier curve on the shape boundary / loop.
|
|
5
|
+
*/
|
|
6
|
+
interface Curve {
|
|
7
|
+
/**
|
|
8
|
+
* Primarily for internal use.
|
|
9
|
+
* @param loop The closed loop of bezier curves representing the shape
|
|
10
|
+
* boundary this curve belongs to.
|
|
11
|
+
* @param ps The bezier control points.
|
|
12
|
+
* @param prev The previous curve (when going in a negative direction around
|
|
13
|
+
* the shape boundary, i.e. clockwise for the outer shape and anti-clockwise
|
|
14
|
+
* for the holes (if any)).
|
|
15
|
+
* @param next The next curve (when going in a positive direction around
|
|
16
|
+
* the shape boundary, i.e. anti-clockwise for the outer shape and clockwise
|
|
17
|
+
* for the holes (if any)).
|
|
18
|
+
* @param idx The curve's ordered index in the loop. This imposes a cycling
|
|
19
|
+
* ordering of the curves in the loop.
|
|
20
|
+
*/
|
|
21
|
+
loop: Loop;
|
|
22
|
+
ps: number[][];
|
|
23
|
+
prev: Curve;
|
|
24
|
+
next: Curve;
|
|
25
|
+
idx: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
* Returns a new corner with properties.
|
|
30
|
+
*
|
|
31
|
+
* PRECONDITION: The beziers has control points with max bit-length of 26 and
|
|
32
|
+
* aligned to a 'grid' to have the same exponent. This is so the vectors between
|
|
33
|
+
* control points can be calculated exactly without resorting to adaptive
|
|
34
|
+
* infinite precision floating point operations.
|
|
35
|
+
*
|
|
36
|
+
* @param psI The incoming bezier that ends in the corner
|
|
37
|
+
* @param psO The outgoing bezier that starts at the corner
|
|
38
|
+
*/
|
|
39
|
+
declare function getCorner(psI: number[][], psO: number[][]): Corner;
|
|
40
|
+
/**
|
|
41
|
+
* @hidden
|
|
42
|
+
* Returns information about the corner created at the end of this curve
|
|
43
|
+
* (at t === 1) and the start of the next curve (at t === 0).
|
|
44
|
+
*/
|
|
45
|
+
declare const getCornerAtEnd: (a: Curve) => Corner;
|
|
46
|
+
export { Curve, getCorner, getCornerAtEnd };
|
package/node/curve.js
CHANGED
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
import { memoize } from 'flo-memoize';
|
|
2
|
-
import { cross, dot, toUnitVector } from 'flo-vector2d';
|
|
3
|
-
import { getInterfaceCcw } from './get-interface-ccw.js';
|
|
4
|
-
/**
|
|
5
|
-
* @hidden
|
|
6
|
-
* Angle in degrees to radians.
|
|
7
|
-
*/
|
|
8
|
-
const DEGREES = {
|
|
9
|
-
//'0' : 0.0000,
|
|
10
|
-
0.25: 0.0050,
|
|
11
|
-
1: 0.0167,
|
|
12
|
-
4: 0.0698,
|
|
13
|
-
16: 0.2756,
|
|
14
|
-
};
|
|
15
|
-
/** @hidden */
|
|
16
|
-
//const DEGREE_LIMIT = DEGREES[1];
|
|
17
|
-
const DEGREE_LIMIT = DEGREES[4];
|
|
18
|
-
//const DEGREE_LIMIT = DEGREES[16];
|
|
19
|
-
/**
|
|
20
|
-
* @hidden
|
|
21
|
-
* Returns a new corner with properties.
|
|
22
|
-
*
|
|
23
|
-
* PRECONDITION: The beziers has control points with max bit-length of 26 and
|
|
24
|
-
* aligned to a 'grid' to have the same exponent. This is so the vectors between
|
|
25
|
-
* control points can be calculated exactly without resorting to adaptive
|
|
26
|
-
* infinite precision floating point operations.
|
|
27
|
-
*
|
|
28
|
-
* @param psI The incoming bezier that ends in the corner
|
|
29
|
-
* @param psO The outgoing bezier that starts at the corner
|
|
30
|
-
*/
|
|
31
|
-
function getCorner(psI, psO) {
|
|
32
|
-
// getInterfaceCcw must return a number !== 0 if psI and psO are not the
|
|
33
|
-
// same as seen as a curve extension with t ∈ [-∞,+∞]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// Find (non-normalized) tangent of curve.ps at t === 1
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
// Find (non-normalized) tangent of curve.next.ps at t === 0
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// These use square root and are thus not exact
|
|
50
|
-
|
|
51
|
-
toUnitVector(tangentAtEnd),
|
|
52
|
-
toUnitVector(tangentAtStart),
|
|
53
|
-
];
|
|
54
|
-
// The cross calculated below should be exact due to beziers having been
|
|
55
|
-
// normalized!
|
|
56
|
-
|
|
57
|
-
let isQuiteSharp;
|
|
58
|
-
let isQuiteDull;
|
|
59
|
-
|
|
60
|
-
if (dotTangents > 0) {
|
|
61
|
-
// Curves go in same direction
|
|
62
|
-
isQuiteSharp = crossTangents < -DEGREE_LIMIT;
|
|
63
|
-
isQuiteDull = crossTangents > +DEGREE_LIMIT;
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
isQuiteSharp = isSharp;
|
|
67
|
-
isQuiteDull = isDull;
|
|
68
|
-
}
|
|
69
|
-
return {
|
|
70
|
-
tangents: tangents_,
|
|
71
|
-
crossTangents,
|
|
72
|
-
isSharp,
|
|
73
|
-
isDull,
|
|
74
|
-
isQuiteSharp,
|
|
75
|
-
isQuiteDull
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* @hidden
|
|
80
|
-
* Returns information about the corner created at the end of this curve
|
|
81
|
-
* (at t === 1) and the start of the next curve (at t === 0).
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return getCorner(psE, psS);
|
|
87
|
-
});
|
|
88
|
-
export { getCorner, getCornerAtEnd };
|
|
1
|
+
import { memoize } from 'flo-memoize';
|
|
2
|
+
import { cross, dot, toUnitVector } from 'flo-vector2d';
|
|
3
|
+
import { getInterfaceCcw } from './get-interface-ccw.js';
|
|
4
|
+
/**
|
|
5
|
+
* @hidden
|
|
6
|
+
* Angle in degrees to radians.
|
|
7
|
+
*/
|
|
8
|
+
const DEGREES = {
|
|
9
|
+
//'0' : 0.0000,
|
|
10
|
+
0.25: 0.0050,
|
|
11
|
+
1: 0.0167,
|
|
12
|
+
4: 0.0698,
|
|
13
|
+
16: 0.2756,
|
|
14
|
+
};
|
|
15
|
+
/** @hidden */
|
|
16
|
+
//const DEGREE_LIMIT = DEGREES[1];
|
|
17
|
+
const DEGREE_LIMIT = DEGREES[4];
|
|
18
|
+
//const DEGREE_LIMIT = DEGREES[16];
|
|
19
|
+
/**
|
|
20
|
+
* @hidden
|
|
21
|
+
* Returns a new corner with properties.
|
|
22
|
+
*
|
|
23
|
+
* PRECONDITION: The beziers has control points with max bit-length of 26 and
|
|
24
|
+
* aligned to a 'grid' to have the same exponent. This is so the vectors between
|
|
25
|
+
* control points can be calculated exactly without resorting to adaptive
|
|
26
|
+
* infinite precision floating point operations.
|
|
27
|
+
*
|
|
28
|
+
* @param psI The incoming bezier that ends in the corner
|
|
29
|
+
* @param psO The outgoing bezier that starts at the corner
|
|
30
|
+
*/
|
|
31
|
+
function getCorner(psI, psO) {
|
|
32
|
+
// getInterfaceCcw must return a number !== 0 if psI and psO are not the
|
|
33
|
+
// same as seen as a curve extension with t ∈ [-∞,+∞]
|
|
34
|
+
const ccw = getInterfaceCcw(psI, psO);
|
|
35
|
+
const isSharp = ccw < 0;
|
|
36
|
+
const isDull = ccw > 0;
|
|
37
|
+
// Find (non-normalized) tangent of curve.ps at t === 1
|
|
38
|
+
const p0E = psI[psI.length - 2];
|
|
39
|
+
const p1E = psI[psI.length - 1];
|
|
40
|
+
const xE = p1E[0] - p0E[0];
|
|
41
|
+
const yE = p1E[1] - p0E[1];
|
|
42
|
+
const tangentAtEnd = [xE, yE];
|
|
43
|
+
// Find (non-normalized) tangent of curve.next.ps at t === 0
|
|
44
|
+
const p0S = psO[0];
|
|
45
|
+
const p1S = psO[1];
|
|
46
|
+
const xS = p1S[0] - p0S[0];
|
|
47
|
+
const yS = p1S[1] - p0S[1];
|
|
48
|
+
const tangentAtStart = [xS, yS];
|
|
49
|
+
// These use square root and are thus not exact
|
|
50
|
+
const tangents_ = [
|
|
51
|
+
toUnitVector(tangentAtEnd),
|
|
52
|
+
toUnitVector(tangentAtStart),
|
|
53
|
+
];
|
|
54
|
+
// The cross calculated below should be exact due to beziers having been
|
|
55
|
+
// normalized!
|
|
56
|
+
const crossTangents = cross(tangents_[0], tangents_[1]);
|
|
57
|
+
let isQuiteSharp;
|
|
58
|
+
let isQuiteDull;
|
|
59
|
+
const dotTangents = dot(tangentAtEnd, tangentAtStart);
|
|
60
|
+
if (dotTangents > 0) {
|
|
61
|
+
// Curves go in same direction
|
|
62
|
+
isQuiteSharp = crossTangents < -DEGREE_LIMIT;
|
|
63
|
+
isQuiteDull = crossTangents > +DEGREE_LIMIT;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
isQuiteSharp = isSharp;
|
|
67
|
+
isQuiteDull = isDull;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
tangents: tangents_,
|
|
71
|
+
crossTangents,
|
|
72
|
+
isSharp,
|
|
73
|
+
isDull,
|
|
74
|
+
isQuiteSharp,
|
|
75
|
+
isQuiteDull
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @hidden
|
|
80
|
+
* Returns information about the corner created at the end of this curve
|
|
81
|
+
* (at t === 1) and the start of the next curve (at t === 0).
|
|
82
|
+
*/
|
|
83
|
+
const getCornerAtEnd = memoize(function (curve) {
|
|
84
|
+
const psE = curve.ps;
|
|
85
|
+
const psS = curve.next.ps;
|
|
86
|
+
return getCorner(psE, psS);
|
|
87
|
+
});
|
|
88
|
+
export { getCorner, getCornerAtEnd };
|
|
89
89
|
//# sourceMappingURL=curve.js.map
|
package/node/curve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAgCzD;;;GAGG;AACH,MAAM,OAAO,GAAG;IACf,kBAAkB;IAClB,IAAI,EAAG,MAAM;IACb,CAAC,EAAM,MAAM;IACb,CAAC,EAAM,MAAM;IACb,EAAE,EAAK,MAAM;CACb,CAAC;AAGF,cAAc;AACd,kCAAkC;AAClC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,oCAAoC;AAGpC;;;;;;;;;;;GAWG;AACH,SAAS,SAAS,CAAC,GAAe,EAAE,GAAe;IAClD,wEAAwE;IACxE,qDAAqD;IACrD,
|
|
1
|
+
{"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { CpNode } from '../cp-node.js';
|
|
2
|
-
import { Generated } from './debug.js';
|
|
3
|
-
/**
|
|
4
|
-
* @hidden
|
|
5
|
-
* Used for debugging only.
|
|
6
|
-
*/
|
|
7
|
-
interface ICpNodeForDebugging {
|
|
8
|
-
generated: Generated;
|
|
9
|
-
cpNode: CpNode;
|
|
10
|
-
}
|
|
11
|
-
export { ICpNodeForDebugging };
|
|
1
|
+
import { CpNode } from '../cp-node.js';
|
|
2
|
+
import { Generated } from './debug.js';
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
* Used for debugging only.
|
|
6
|
+
*/
|
|
7
|
+
interface ICpNodeForDebugging {
|
|
8
|
+
generated: Generated;
|
|
9
|
+
cpNode: CpNode;
|
|
10
|
+
}
|
|
11
|
+
export { ICpNodeForDebugging };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=cp-node-for-debugging.js.map
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { IPointOnShape } from '../point-on-shape.js';
|
|
2
|
-
import { TwoProngForDebugging } from './two-prong-for-debugging.js';
|
|
3
|
-
import { ThreeProngForDebugging } from './three-prong-for-debugging.js';
|
|
4
|
-
import { Curve } from '../curve.js';
|
|
5
|
-
import { Mat } from '../mat.js';
|
|
6
|
-
import { CpNode } from '../cp-node.js';
|
|
7
|
-
import { Circle } from '../circle.js';
|
|
8
|
-
import { ICpNodeForDebugging } from './cp-node-for-debugging.js';
|
|
9
|
-
/** @hidden */
|
|
10
|
-
interface IDebugElems {
|
|
11
|
-
oneProng: IPointOnShape;
|
|
12
|
-
oneProngAtDullCorner: IPointOnShape;
|
|
13
|
-
twoProng_regular: TwoProngForDebugging;
|
|
14
|
-
twoProng_failed: TwoProngForDebugging;
|
|
15
|
-
twoProng_notAdded: TwoProngForDebugging;
|
|
16
|
-
twoProng_deleted: TwoProngForDebugging;
|
|
17
|
-
twoProng_holeClosing: TwoProngForDebugging;
|
|
18
|
-
threeProng: ThreeProngForDebugging;
|
|
19
|
-
looseBoundingBox: number[][];
|
|
20
|
-
tightBoundingBox: number[][];
|
|
21
|
-
boundingHull: number[][];
|
|
22
|
-
sharpCorner: Curve;
|
|
23
|
-
dullCorner: Curve;
|
|
24
|
-
vertex: CpNode;
|
|
25
|
-
mat: Mat;
|
|
26
|
-
sat: Mat;
|
|
27
|
-
maxVertex: CpNode;
|
|
28
|
-
leaves: CpNode[];
|
|
29
|
-
culls: Circle[];
|
|
30
|
-
cpNode: ICpNodeForDebugging;
|
|
31
|
-
}
|
|
32
|
-
export { IDebugElems };
|
|
1
|
+
import { IPointOnShape } from '../point-on-shape.js';
|
|
2
|
+
import { TwoProngForDebugging } from './two-prong-for-debugging.js';
|
|
3
|
+
import { ThreeProngForDebugging } from './three-prong-for-debugging.js';
|
|
4
|
+
import { Curve } from '../curve.js';
|
|
5
|
+
import { Mat } from '../mat.js';
|
|
6
|
+
import { CpNode } from '../cp-node.js';
|
|
7
|
+
import { Circle } from '../circle.js';
|
|
8
|
+
import { ICpNodeForDebugging } from './cp-node-for-debugging.js';
|
|
9
|
+
/** @hidden */
|
|
10
|
+
interface IDebugElems {
|
|
11
|
+
oneProng: IPointOnShape;
|
|
12
|
+
oneProngAtDullCorner: IPointOnShape;
|
|
13
|
+
twoProng_regular: TwoProngForDebugging;
|
|
14
|
+
twoProng_failed: TwoProngForDebugging;
|
|
15
|
+
twoProng_notAdded: TwoProngForDebugging;
|
|
16
|
+
twoProng_deleted: TwoProngForDebugging;
|
|
17
|
+
twoProng_holeClosing: TwoProngForDebugging;
|
|
18
|
+
threeProng: ThreeProngForDebugging;
|
|
19
|
+
looseBoundingBox: number[][];
|
|
20
|
+
tightBoundingBox: number[][];
|
|
21
|
+
boundingHull: number[][];
|
|
22
|
+
sharpCorner: Curve;
|
|
23
|
+
dullCorner: Curve;
|
|
24
|
+
vertex: CpNode;
|
|
25
|
+
mat: Mat;
|
|
26
|
+
sat: Mat;
|
|
27
|
+
maxVertex: CpNode;
|
|
28
|
+
leaves: CpNode[];
|
|
29
|
+
culls: Circle[];
|
|
30
|
+
cpNode: ICpNodeForDebugging;
|
|
31
|
+
}
|
|
32
|
+
export { IDebugElems };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=debug-elem-types.js.map
|
package/node/debug/debug.d.ts
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { IGeneralDebugFunctions } from './functions/general.js';
|
|
2
|
-
import { ITwoProngDebugFunctions } from './functions/two-prong.js';
|
|
3
|
-
import { IThreeProngDebugFunctions } from './functions/three-prong.js';
|
|
4
|
-
import { TDrawElemFunctions } from './functions/draw-elem/draw-elem.js';
|
|
5
|
-
import { IDebugElems } from './debug-elem-types.js';
|
|
6
|
-
/** @hidden */
|
|
7
|
-
interface Debug {
|
|
8
|
-
/** Generated by debug object for later inspection */
|
|
9
|
-
generated: Generated;
|
|
10
|
-
/**
|
|
11
|
-
* These functions are meant to be used in the console, e.g. in the
|
|
12
|
-
* console try typing d.fs.twoProng.traceConvergence(0);
|
|
13
|
-
*/
|
|
14
|
-
fs: IDebugFunctions;
|
|
15
|
-
directives: IDirectives;
|
|
16
|
-
}
|
|
17
|
-
/** @hidden */
|
|
18
|
-
|
|
19
|
-
[T in keyof IDebugElems]: IDebugElems[T][];
|
|
20
|
-
};
|
|
21
|
-
/** @hidden */
|
|
22
|
-
interface ITiming {
|
|
23
|
-
holeClosers: number;
|
|
24
|
-
oneAnd2Prongs: number;
|
|
25
|
-
threeProngs: number;
|
|
26
|
-
sats: number;
|
|
27
|
-
simplifyMat: number;
|
|
28
|
-
}
|
|
29
|
-
/** @hidden */
|
|
30
|
-
interface Generated {
|
|
31
|
-
elems: GeneratedElems;
|
|
32
|
-
timing: ITiming;
|
|
33
|
-
}
|
|
34
|
-
/** @hidden */
|
|
35
|
-
interface IDebugFunctions extends IGeneralDebugFunctions {
|
|
36
|
-
twoProng: ITwoProngDebugFunctions;
|
|
37
|
-
threeProng: IThreeProngDebugFunctions;
|
|
38
|
-
drawElem: TDrawElemFunctions;
|
|
39
|
-
}
|
|
40
|
-
/** @hidden */
|
|
41
|
-
interface IDirectives {
|
|
42
|
-
stopAfterHoleClosers: boolean;
|
|
43
|
-
stopAfterHoleClosersNum: number;
|
|
44
|
-
stopAfterTwoProngs: boolean;
|
|
45
|
-
stopAfterTwoProngsNum: number;
|
|
46
|
-
stopAfterThreeProngs: boolean;
|
|
47
|
-
stopAfterThreeProngsNum: number;
|
|
48
|
-
}
|
|
49
|
-
declare function enableDebugForMat(debugOn: boolean): void;
|
|
50
|
-
export { Debug, GeneratedElems, ITiming, Generated, IDebugFunctions, IDirectives, enableDebugForMat };
|
|
1
|
+
import { IGeneralDebugFunctions } from './functions/general.js';
|
|
2
|
+
import { ITwoProngDebugFunctions } from './functions/two-prong.js';
|
|
3
|
+
import { IThreeProngDebugFunctions } from './functions/three-prong.js';
|
|
4
|
+
import { TDrawElemFunctions } from './functions/draw-elem/draw-elem.js';
|
|
5
|
+
import { IDebugElems } from './debug-elem-types.js';
|
|
6
|
+
/** @hidden */
|
|
7
|
+
interface Debug {
|
|
8
|
+
/** Generated by debug object for later inspection */
|
|
9
|
+
generated: Generated;
|
|
10
|
+
/**
|
|
11
|
+
* These functions are meant to be used in the console, e.g. in the
|
|
12
|
+
* console try typing d.fs.twoProng.traceConvergence(0);
|
|
13
|
+
*/
|
|
14
|
+
fs: IDebugFunctions;
|
|
15
|
+
directives: IDirectives;
|
|
16
|
+
}
|
|
17
|
+
/** @hidden */
|
|
18
|
+
type GeneratedElems = {
|
|
19
|
+
[T in keyof IDebugElems]: IDebugElems[T][];
|
|
20
|
+
};
|
|
21
|
+
/** @hidden */
|
|
22
|
+
interface ITiming {
|
|
23
|
+
holeClosers: number;
|
|
24
|
+
oneAnd2Prongs: number;
|
|
25
|
+
threeProngs: number;
|
|
26
|
+
sats: number;
|
|
27
|
+
simplifyMat: number;
|
|
28
|
+
}
|
|
29
|
+
/** @hidden */
|
|
30
|
+
interface Generated {
|
|
31
|
+
elems: GeneratedElems;
|
|
32
|
+
timing: ITiming;
|
|
33
|
+
}
|
|
34
|
+
/** @hidden */
|
|
35
|
+
interface IDebugFunctions extends IGeneralDebugFunctions {
|
|
36
|
+
twoProng: ITwoProngDebugFunctions;
|
|
37
|
+
threeProng: IThreeProngDebugFunctions;
|
|
38
|
+
drawElem: TDrawElemFunctions;
|
|
39
|
+
}
|
|
40
|
+
/** @hidden */
|
|
41
|
+
interface IDirectives {
|
|
42
|
+
stopAfterHoleClosers: boolean;
|
|
43
|
+
stopAfterHoleClosersNum: number;
|
|
44
|
+
stopAfterTwoProngs: boolean;
|
|
45
|
+
stopAfterTwoProngsNum: number;
|
|
46
|
+
stopAfterThreeProngs: boolean;
|
|
47
|
+
stopAfterThreeProngsNum: number;
|
|
48
|
+
}
|
|
49
|
+
declare function enableDebugForMat(debugOn: boolean): void;
|
|
50
|
+
export { Debug, GeneratedElems, ITiming, Generated, IDebugFunctions, IDirectives, enableDebugForMat };
|