flo-mat 3.0.6 → 3.0.9
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/__tests__/cp-node/fs/add-distance-from.spec.ts +7 -0
- package/__tests__/cp-node/fs/check-jsog-eql-calc.spec.ts +30 -0
- package/__tests__/cp-node/fs/clone.spec.ts +7 -0
- package/__tests__/cp-node/fs/cp-nodes-to-boundary-beziers.spec.ts +7 -0
- package/__tests__/cp-node/fs/create-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/enhance-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/find-first.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-all-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-all-on-circle.spec.ts +92 -0
- package/__tests__/cp-node/fs/get-all-on-loop.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-all-vertices.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-angle-between-mat-curves.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-avg-speed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-bezier-parts-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-beziers-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-beziers-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-distance-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-branch-beziers.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-branch.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-children.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-cp-node-ordering.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-distance-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-distance-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-edge-direction.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-first-exit.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-hole-closers.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-implied-boundary-bezier-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-mat-curve-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-mat-curve-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-mat-curves-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-non-terminating-on-circle.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-prong-count.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-real-prong-count.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-salience.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-smoothed-speed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-smoothed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-speed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-terminating-on-circle.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-vertex-forward-children.spec.ts +7 -0
- package/__tests__/cp-node/fs/insert-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-fully-terminating.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-on-same-circle.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-one-prong.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-order-correct.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-sharp.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-single-3-prong.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-special.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-terminating.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-trivial.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-two-prong.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-vertex-special.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-vertex.spec.ts +7 -0
- package/__tests__/cp-node/fs/iterate-all-on-loop.spec.ts +7 -0
- package/__tests__/cp-node/fs/mat-dummys.ts +6716 -0
- package/__tests__/cp-node/fs/remove-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-all-forward.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-cp.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-edges.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-vertices.spec.ts +7 -0
- package/__tests__/lib-load.spec.ts +9 -10
- package/browser/index.js +259 -174
- package/browser/index.min.js +1 -1
- package/jest.config.cjs +32 -0
- package/node/corner/get-interface-ccw.js +0 -1
- package/node/corner/get-interface-ccw.js.map +1 -1
- package/node/cp-node/cp-node-fs.d.ts +43 -43
- package/node/cp-node/cp-node-fs.js +43 -43
- package/node/cp-node/cp-node.d.ts +27 -35
- package/node/cp-node/fs/clone.d.ts +3 -3
- package/node/cp-node/fs/clone.js +3 -3
- package/node/cp-node/fs/enhance-cp-node.d.ts +1 -5
- package/node/cp-node/fs/enhance-cp-node.js.map +1 -1
- package/node/cp-node/fs/get-all-between.d.ts +3 -3
- package/node/cp-node/fs/get-all-between.js +3 -3
- package/node/cp-node/fs/get-all-between.js.map +1 -1
- package/node/cp-node/fs/get-all-on-circle.d.ts +7 -1
- package/node/cp-node/fs/get-all-on-circle.js +11 -7
- package/node/cp-node/fs/get-all-on-circle.js.map +1 -1
- package/node/cp-node/fs/get-all-on-loop.d.ts +1 -1
- package/node/cp-node/fs/get-all-on-loop.js.map +1 -1
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.d.ts +12 -3
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js +22 -7
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js.map +1 -1
- package/node/cp-node/fs/get-boundary-beziers-between.d.ts +1 -1
- package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -1
- package/node/cp-node/fs/get-boundary-beziers-to-next.js.map +1 -1
- package/node/cp-node/fs/insert-cp-node.d.ts +3 -1
- package/node/cp-node/fs/insert-cp-node.js +12 -2
- package/node/cp-node/fs/insert-cp-node.js.map +1 -1
- package/node/cp-node/fs/is-fully-terminating.d.ts +7 -0
- package/node/cp-node/fs/is-fully-terminating.js +7 -0
- package/node/cp-node/fs/is-fully-terminating.js.map +1 -1
- package/node/cp-node/fs/is-terminating.d.ts +1 -1
- package/node/cp-node/fs/remove-cp-node.d.ts +3 -4
- package/node/cp-node/fs/remove-cp-node.js +3 -1
- package/node/cp-node/fs/remove-cp-node.js.map +1 -1
- package/node/curve/curve.d.ts +18 -11
- package/node/find-2-prong/add-1-prong.js +1 -1
- package/node/find-2-prong/add-1-prong.js.map +1 -1
- package/node/find-2-prong/add-2-prong.js +9 -7
- package/node/find-2-prong/add-2-prong.js.map +1 -1
- package/node/find-2-prong/calc-seperation-tolerance.d.ts +8 -1
- package/node/find-2-prong/calc-seperation-tolerance.js +73 -59
- package/node/find-2-prong/calc-seperation-tolerance.js.map +1 -1
- package/node/find-2-prong/find-2-prong.js +2 -2
- package/node/find-2-prong/find-2-prong.js.map +1 -1
- package/node/find-2-prong/get-initial-bezier-pieces.d.ts +2 -3
- package/node/find-2-prong/get-initial-bezier-pieces.js +4 -1
- package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
- package/node/find-3-prong.ts/find-and-add-3-prong.js +1 -1
- package/node/find-3-prong.ts/find-and-add-3-prong.js.map +1 -1
- package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.d.ts +2 -2
- package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js +8 -3
- package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js.map +1 -1
- package/node/find-mat/create-initial-cp-tree.d.ts +7 -3
- package/node/find-mat/create-initial-cp-tree.js +7 -5
- package/node/find-mat/create-initial-cp-tree.js.map +1 -1
- package/node/find-mat/find-mat.d.ts +2 -1
- package/node/find-mat/find-mat.js +14 -4
- package/node/find-mat/find-mat.js.map +1 -1
- package/node/find-mat/get-meta.d.ts +5 -2
- package/node/find-mat/get-meta.js +15 -14
- package/node/find-mat/get-meta.js.map +1 -1
- package/node/index.d.ts +1 -1
- package/node/index.js +1 -1
- package/node/index.js.map +1 -1
- package/node/mat/add-to-cp-tree.d.ts +5 -6
- package/node/mat/add-to-cp-tree.js +5 -2
- package/node/mat/add-to-cp-tree.js.map +1 -1
- package/node/mat/get-branches.d.ts +7 -0
- package/node/mat/get-branches.js +7 -0
- package/node/mat/get-branches.js.map +1 -1
- package/node/mat/mat-meta.d.ts +8 -1
- package/node/mat/mat.d.ts +3 -3
- package/node/mat/simplify-mat.js +1 -1
- package/node/mat/simplify-mat.js.map +1 -1
- package/node/point-on-shape/compare-poss.d.ts +3 -3
- package/node/point-on-shape/compare-poss.js +3 -3
- package/node/point-on-shape/get-osculating-circle.d.ts +1 -1
- package/node/point-on-shape/get-osculating-circle.js +1 -1
- package/node/point-on-shape/point-on-shape.d.ts +1 -1
- package/node/point-on-shape/pos-to-human-string.d.ts +1 -1
- package/node/point-on-shape/pos-to-human-string.js +1 -1
- package/node/sat/to-scale-axis.d.ts +1 -1
- package/node/sat/to-scale-axis.js +1 -1
- package/node/vertex/remove-vertex.d.ts +3 -4
- package/node/vertex/remove-vertex.js +3 -2
- package/node/vertex/remove-vertex.js.map +1 -1
- package/package.json +9 -6
- package/src/corner/get-interface-ccw.ts +0 -1
- package/src/cp-node/cp-node-fs.ts +43 -43
- package/src/cp-node/cp-node.ts +27 -39
- package/src/cp-node/fs/clone.ts +3 -3
- package/src/cp-node/fs/enhance-cp-node.ts +0 -1
- package/src/cp-node/fs/get-all-between.ts +31 -28
- package/src/cp-node/fs/get-all-on-circle.ts +13 -8
- package/src/cp-node/fs/get-all-on-loop.ts +12 -10
- package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +39 -22
- package/src/cp-node/fs/get-boundary-beziers-between.ts +6 -2
- package/src/cp-node/fs/get-boundary-beziers-to-next.ts +6 -4
- package/src/cp-node/fs/insert-cp-node.ts +13 -2
- package/src/cp-node/fs/is-fully-terminating.ts +7 -0
- package/src/cp-node/fs/is-terminating.ts +1 -1
- package/src/cp-node/fs/remove-cp-node.ts +8 -4
- package/src/curve/curve.ts +19 -13
- package/src/debug/functions/check-ordering.ts +7 -3
- package/src/find-2-prong/add-1-prong.ts +1 -1
- package/src/find-2-prong/add-2-prong.ts +79 -74
- package/src/find-2-prong/calc-seperation-tolerance.ts +88 -78
- package/src/find-2-prong/find-2-prong.ts +2 -2
- package/src/find-2-prong/get-initial-bezier-pieces.ts +5 -1
- package/src/find-3-prong.ts/add-3-prong.ts +73 -70
- package/src/find-3-prong.ts/find-and-add-3-prong.ts +1 -1
- package/src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts +9 -8
- package/src/find-mat/create-initial-cp-tree.ts +10 -6
- package/src/find-mat/find-mat.ts +18 -5
- package/src/find-mat/get-meta.ts +36 -20
- package/src/get-curve/get-curve-between.ts +2 -2
- package/src/index.ts +1 -1
- package/src/mat/add-to-cp-tree.ts +18 -9
- package/src/mat/get-branches.ts +35 -28
- package/src/mat/mat-meta.ts +6 -1
- package/src/mat/mat.ts +3 -3
- package/src/mat/simplify-mat.ts +1 -1
- package/src/point-on-shape/compare-poss.ts +3 -3
- package/src/point-on-shape/get-osculating-circle.ts +1 -1
- package/src/point-on-shape/point-on-shape.ts +1 -1
- package/src/point-on-shape/pos-to-human-string.ts +1 -1
- package/src/sat/to-scale-axis.ts +1 -1
- package/src/vertex/remove-vertex.ts +7 -5
- package/.mocharc.cjs +0 -17
- package/src/debug/functions/draw-elem/branch.ts +0 -26
- package/src/find-mat/create-initial-cp-graph.ts +0 -59
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/find-2-prong.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAGtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,UAAU,CACjB,IAAa,EACb,aAAsB,EACtB,SAAkB,EAClB,KAAa,EACP,CAAe;IAEtB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"find-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/find-2-prong.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAGtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,UAAU,CACjB,IAAa,EACb,aAAsB,EACtB,SAAkB,EAClB,KAAa,EACP,CAAe;IAEtB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAE7D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAE1B,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,6BAA6B,GAAG,CAAC,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC,IAAE,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC;IAC9C,iDAAiD;IACjD,MAAM,yBAAyB,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,CAAC,GAAC,yBAAyB,CAAC;IACjD,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC;IAEjD,MAAM,CAAC,EAAE,EAAC,EAAE,CAAC,GAAG,IAAI,CACnB,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,YAAY,EAAE,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEd,6DAA6D;IAC7D,yDAAyD;IACzD,IAAI,YAAY,GAAG,sBAAsB,CACxC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACtE,CAAC;IACF,oCAAoC;IAEpC,yDAAyD;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;IAEX,sCAAsC;IACtC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACb,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,2DAA2D;IAC3D,IAAI,EAAE,GAAmB,SAAU,CAAC;IACpC,IAAI,CAAC,GAAiB,SAAU,CAAC;IAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,cAAc,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,YAAY,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,CAAC;QACrE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,sBAAsB;QAC5E,oBAAoB;QACpB,MAAM,GAAG,GAAG,+BAA+B,CAC1C,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAClC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAC,YAAY,EAC5C,KAAK,CACL,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpC,IAAI,MAAM,GAAiB,SAAU,CAAC;QACtC,EAAE,GAAG,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAClC,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;gBAChB,IAAI,GAAG,GAAG,CAAC;gBACX,MAAM,GAAG,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACf,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;QACF,CAAC;QACD,aAAa;QACb,MAAM,EAAE,GAAG,IAAI,CAAC;QAChB,CAAC,GAAG,MAAM,CAAC;QAEX,IAAI,CAAC,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,gCAAgC;YAChC,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,kBAAkB;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACb,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,GAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3C,yBAAyB;gBACzB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3B,OAAO,SAAS,CAAC;YAClB,CAAC;QACF,CAAC;QAED,wGAAwG;QAGxG,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,MAAM,0BAA0B,GAAG,GAAG,CAAC,uBAAuB,CAC7D,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAE,CAAC,GAAC,cAAc,CACjC,EAAE,6BAA6B,CAAC,CAAC;YAClC,IAAI,EAAE,IAAI,0BAA0B,EAAE,CAAC;gBACtC,qGAAqG;gBACrG,OAAO,SAAS,CAAC;YAClB,CAAC;QACF,CAAC;QAED,2DAA2D;QAC3D,qDAAqD;QACrD,MAAM,KAAK,GAAG,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,qCAAqC;QAErC,CAAC,GAAG,KAAK,CAAC;QAEV,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC5B,MAAM;QACP,CAAC;QAED,CAAC,EAAE,CAAC;QAEJ,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YAC1B,4BAA4B;YAC5B,gGAAgG;YAChG,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9D,sHAAsH;IAEtH,yBAAyB;IACzB,uCAAuC;IACvC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,CAAC;AAGD,SAAS,IAAI,CACX,KAAa,EACb,aAAsB,EACtB,yBAAiC,EACjC,YAAoB,EACpB,CAAe;IAEhB,IAAI,EAAY,CAAC,CAAE,mCAAmC;IACtD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,EAAU,CAAC;IACf,IAAI,aAAa,EAAE,CAAC;QACnB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC;QAC9C,EAAE,GAAG,yBAAyB,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACjB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACP,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAED,OAAO,CAAC,EAAE,EAAC,EAAE,CAAsB,CAAC;AACrC,CAAC;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
2
1
|
import { Loop } from 'flo-boolean';
|
|
3
2
|
import { CurvePiece } from '../mat/curve-piece.js';
|
|
4
|
-
import { CpNode } from '../cp-node/cp-node.js';
|
|
5
3
|
import { PointOnShape } from '../point-on-shape/point-on-shape.js';
|
|
6
4
|
import { Circle } from '../geometry/circle.js';
|
|
5
|
+
import { MatMeta } from '../index.js';
|
|
7
6
|
/** @internal */
|
|
8
|
-
declare function getInitialBezierPieces(angle: number, isHoleClosing: boolean, loop: Loop, loops: Loop[],
|
|
7
|
+
declare function getInitialBezierPieces(angle: number, isHoleClosing: boolean, loop: Loop, loops: Loop[], meta: MatMeta, y: PointOnShape, circle: Circle): CurvePiece[];
|
|
9
8
|
export { getInitialBezierPieces };
|
|
@@ -4,7 +4,10 @@ import { calcPosOrder } from '../point-on-shape/calc-pos-order.js';
|
|
|
4
4
|
import { isPosCorner } from '../point-on-shape/is-pos-corner.js';
|
|
5
5
|
import { getPosCorner } from '../point-on-shape/get-pos-corner.js';
|
|
6
6
|
/** @internal */
|
|
7
|
-
function getInitialBezierPieces(angle, isHoleClosing, loop, loops,
|
|
7
|
+
function getInitialBezierPieces(angle, isHoleClosing, loop, loops,
|
|
8
|
+
// cpTrees: Map<Loop,LlRbTree<CpNode>>,
|
|
9
|
+
meta, y, circle) {
|
|
10
|
+
const { cpTrees } = meta;
|
|
8
11
|
if (isHoleClosing) {
|
|
9
12
|
return loops
|
|
10
13
|
.filter(_loop => _loop !== loop)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-initial-bezier-pieces.js","sourceRoot":"","sources":["../../src/find-2-prong/get-initial-bezier-pieces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAI/E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-initial-bezier-pieces.js","sourceRoot":"","sources":["../../src/find-2-prong/get-initial-bezier-pieces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAI/E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAInE,gBAAgB;AAChB,SAAS,sBAAsB,CACvB,KAAa,EACb,aAAsB,EACtB,IAAU,EACV,KAAa;AACb,uCAAuC;AACvC,IAAa,EACb,CAAe,EACf,MAAc;IAElB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEzB,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,KAAK;aACX,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;aAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;aACvB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM;QAClD,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YACtB,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACX,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC;IAER,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM;QACP,8DAA8D;QAC9D,kEAAkE;QAClE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,CAAC;QACC,OAAO,IAAI,CAAC,MAAM;aACjB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,uBAAuB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAGD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -35,7 +35,7 @@ function findAndAdd3Prong(meta, visitedCps) {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
const cpNodes = closeBysFor3Prong.length === 0
|
|
38
|
-
? addToCpTree(true, false, circle, orders, meta
|
|
38
|
+
? addToCpTree(true, false, circle, orders, meta, poss, δ3s.map(v => v[0])).cpNodes
|
|
39
39
|
: [];
|
|
40
40
|
return { closeBysFor3Prong, cpNodes: cpNodes };
|
|
41
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-and-add-3-prong.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prong.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,IAAa,EACb,UAAoB;IAErB,MAAM,EAAE,GAAuB,EAAE,CAAC;IAClC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;IAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC/C,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC7C,CAAC,CAAC,WAAW,CACZ,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"find-and-add-3-prong.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prong.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,IAAa,EACb,UAAoB;IAErB,MAAM,EAAE,GAAuB,EAAE,CAAC;IAClC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;IAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC/C,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC7C,CAAC,CAAC,WAAW,CACZ,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC,OAAO;QACT,CAAC,CAAC,EAAE,CAAC;IAEN,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAmB,EAAE,CAAC;AAC5D,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { findAndAdd3Prongs } from './find-and-add-3-prongs.js';
|
|
2
2
|
import { getAllOnLoop } from '../cp-node/fs/get-all-on-loop.js';
|
|
3
3
|
import { removeVertex } from '../vertex/remove-vertex.js';
|
|
4
|
+
// import { LlRbTree } from 'flo-ll-rb-tree';
|
|
5
|
+
// import { Loop } from 'flo-boolean';
|
|
6
|
+
// import { drawFs } from 'flo-draw';
|
|
4
7
|
import { getAllOnCircle } from '../cp-node/fs/get-all-on-circle.js';
|
|
5
8
|
/**
|
|
6
9
|
* @internal
|
|
@@ -28,7 +31,7 @@ function findAndAdd3ProngsOnLoop(meta, cpStart) {
|
|
|
28
31
|
}
|
|
29
32
|
else {
|
|
30
33
|
reLoop = true;
|
|
31
|
-
replaceCloseBys(meta
|
|
34
|
+
replaceCloseBys(meta, closeBysFor3Prong, cpNodeSet, cpNodeGoodSet);
|
|
32
35
|
}
|
|
33
36
|
addedCpNodes.forEach(cpNodes => cpNodes.forEach(cpNode => cpNodeGoodSet.add(cpNode)));
|
|
34
37
|
}
|
|
@@ -50,13 +53,15 @@ function getLastItemOfSet(set) {
|
|
|
50
53
|
for (item of set) { }
|
|
51
54
|
return item;
|
|
52
55
|
}
|
|
53
|
-
function replaceCloseBys(
|
|
56
|
+
function replaceCloseBys(
|
|
57
|
+
// cpTrees: Map<Loop,LlRbTree<CpNode>>,
|
|
58
|
+
meta, closeBysFor3Prong, cpNodeSet, cpNodeGoodSet) {
|
|
54
59
|
for (const closeBy of [closeBysFor3Prong[0]]) {
|
|
55
60
|
getAllOnCircle(closeBy).forEach(v => {
|
|
56
61
|
cpNodeSet.delete(v);
|
|
57
62
|
cpNodeGoodSet.delete(v);
|
|
58
63
|
});
|
|
59
|
-
removeVertex(closeBy,
|
|
64
|
+
removeVertex(closeBy, meta);
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
67
|
export { findAndAdd3ProngsOnLoop };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-and-add-3-prongs-on-loop.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-and-add-3-prongs-on-loop.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,6CAA6C;AAC7C,sCAAsC;AACtC,qCAAqC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE;;;;;;IAMI;AACJ,SAAS,uBAAuB,CACxB,IAAa,EACb,OAA2B;IAE/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAAC,OAAO,SAAU,CAAC;IAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAE7B,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GACrC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEpC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;YAE/C,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC;gBACd,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACvE,CAAC;YAED,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,GAAG,iBAAiB,CAAC,aAAa,CAAE,CAAC;IAChD,CAAC;IAED,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AAGD,oDAAoD;AACpD,SAAS,iBAAiB,CAAI,GAAW;IACrC,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,qEAAqE;AACrE,2CAA2C;AAC3C,SAAS,gBAAgB,CAAI,GAAW;IACpC,IAAI,IAAI,CAAC;IACT,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA,CAAC;IAEpB,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,SAAS,eAAe;AAChB,uCAAuC;AACvC,IAAa,EACb,iBAA2B,EAC3B,SAAsB,EACtB,aAA0B;IAE9B,KAAK,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|
|
@@ -6,10 +6,14 @@ import { PointOnShape } from '../point-on-shape/point-on-shape.js';
|
|
|
6
6
|
* @internal
|
|
7
7
|
* Creates the initial ContactPoint loops from the given sharp corners.
|
|
8
8
|
*
|
|
9
|
-
* * modifies `cpTrees`
|
|
9
|
+
* * modifies `cpTrees` and `lastInsertId` of `meta`
|
|
10
10
|
*
|
|
11
|
-
* @param
|
|
11
|
+
* @param loops
|
|
12
|
+
* @param cpTrees
|
|
12
13
|
* @param sharpCornerss
|
|
14
|
+
* @param lastInsertId
|
|
13
15
|
*/
|
|
14
|
-
declare function createInitialCpTree(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>, sharpCornerss: PointOnShape[][]
|
|
16
|
+
declare function createInitialCpTree(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>, sharpCornerss: PointOnShape[][], lastInsertId: {
|
|
17
|
+
id: number;
|
|
18
|
+
}): CpNode | undefined;
|
|
15
19
|
export { createInitialCpTree };
|
|
@@ -6,12 +6,14 @@ const { cpNodeComparator } = CpNodeFs;
|
|
|
6
6
|
* @internal
|
|
7
7
|
* Creates the initial ContactPoint loops from the given sharp corners.
|
|
8
8
|
*
|
|
9
|
-
* * modifies `cpTrees`
|
|
9
|
+
* * modifies `cpTrees` and `lastInsertId` of `meta`
|
|
10
10
|
*
|
|
11
|
-
* @param
|
|
11
|
+
* @param loops
|
|
12
|
+
* @param cpTrees
|
|
12
13
|
* @param sharpCornerss
|
|
14
|
+
* @param lastInsertId
|
|
13
15
|
*/
|
|
14
|
-
function createInitialCpTree(loops, cpTrees, sharpCornerss) {
|
|
16
|
+
function createInitialCpTree(loops, cpTrees, sharpCornerss, lastInsertId) {
|
|
15
17
|
let cpNode;
|
|
16
18
|
for (let k = 0; k < sharpCornerss.length; k++) {
|
|
17
19
|
const sharpCorners = sharpCornerss[k];
|
|
@@ -22,8 +24,8 @@ function createInitialCpTree(loops, cpTrees, sharpCornerss) {
|
|
|
22
24
|
const circle = { center: pos.p, radius: 0 };
|
|
23
25
|
const cp1 = { pointOnShape: pos, circle, order: -1, order2: 0 };
|
|
24
26
|
const cp2 = { pointOnShape: pos, circle, order: +1, order2: 0 };
|
|
25
|
-
cpNode1 = insertCpNode(true, false, false, cpTree, cp1, cpNode2);
|
|
26
|
-
cpNode2 = insertCpNode(true, false, false, cpTree, cp2, cpNode1);
|
|
27
|
+
cpNode1 = insertCpNode(true, false, false, cpTree, cp1, cpNode2, lastInsertId);
|
|
28
|
+
cpNode2 = insertCpNode(true, false, false, cpTree, cp2, cpNode1, lastInsertId);
|
|
27
29
|
cpNode1.prevOnCircle = cpNode2;
|
|
28
30
|
cpNode2.prevOnCircle = cpNode1;
|
|
29
31
|
cpNode1.nextOnCircle = cpNode2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-initial-cp-tree.js","sourceRoot":"","sources":["../../src/find-mat/create-initial-cp-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"create-initial-cp-tree.js","sourceRoot":"","sources":["../../src/find-mat/create-initial-cp-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;AAGtC;;;;;;;;;;GAUG;AACH,SAAS,mBAAmB,CACpB,KAAa,EACb,OAAoC,EACpC,aAA+B,EAC/B,YAA4B;IAEhC,IAAI,MAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE5C,MAAM,GAAG,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC9E,MAAM,GAAG,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE9E,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YAChF,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YAEhF,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC;QAAC,CAAC;QAElC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CpNode } from '../cp-node/cp-node.js';
|
|
2
2
|
import { Loop } from 'flo-boolean';
|
|
3
3
|
import { MatOptions } from './mat-options.js';
|
|
4
|
+
import { MatMeta } from '../mat/mat-meta.js';
|
|
4
5
|
/**
|
|
5
6
|
* @internal
|
|
6
7
|
* Find the MAT of the given loops.
|
|
@@ -9,7 +10,7 @@ import { MatOptions } from './mat-options.js';
|
|
|
9
10
|
*/
|
|
10
11
|
declare function findMat(loops: Loop[], maxCoordinate: number, options: Required<MatOptions>): {
|
|
11
12
|
cpNode: CpNode;
|
|
12
|
-
meta:
|
|
13
|
+
meta: MatMeta;
|
|
13
14
|
};
|
|
14
15
|
export { findMat };
|
|
15
16
|
/** Curvilinear Shape Features (CSFs) */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { findAndAdd3ProngsOnLoop } from '../find-3-prong.ts/find-and-add-3-prongs-on-loop.js';
|
|
2
2
|
import { createInitialCpTree } from './create-initial-cp-tree.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 } from './get-meta.js';
|
|
4
4
|
import { getSharpCornersOnLoop } from './get-sharp-corners.js';
|
|
5
5
|
import { getDullCornersOnLoop } from './get-dull-corners-on-loop.js';
|
|
6
6
|
import { findAndAdd2ProngsOnAllLoops } from '../find-2-prong/find-and-add-2-prongs-on-all-loops.js';
|
|
@@ -21,12 +21,22 @@ function findMat(loops, maxCoordinate, options) {
|
|
|
21
21
|
const getFor2ProngsOnLoop_ = getFor2ProngsOnLoop(minBezLength, maxCurviness, maxLength);
|
|
22
22
|
const getFor1ProngsOnLoop_ = getFor1ProngsOnLoop(minBezLength);
|
|
23
23
|
const sharpCornersPerLoop = loops.map(getSharpCornersOnLoop_);
|
|
24
|
-
const cpTrees = new Map();
|
|
25
|
-
createInitialCpTree(loops, cpTrees, sharpCornersPerLoop);
|
|
26
24
|
const bounds = getShapeBounds(loops);
|
|
27
25
|
const squaredDiagonalLength = (bounds.maxX.p[0] - bounds.minX.p[0]) ** 2 +
|
|
28
26
|
(bounds.maxY.p[1] - bounds.minY.p[1]) ** 2;
|
|
29
|
-
const
|
|
27
|
+
const cpTrees = new Map();
|
|
28
|
+
const lastInsertId = { id: 0 };
|
|
29
|
+
createInitialCpTree(loops, cpTrees, sharpCornersPerLoop, lastInsertId);
|
|
30
|
+
const _meta = getPartialMeta(loops);
|
|
31
|
+
const pointToCpNode = getPointToCpNode(loops, cpTrees);
|
|
32
|
+
const meta = {
|
|
33
|
+
maxCoordinate, squaredDiagonalLength, loops, cpTrees, pointToCpNode,
|
|
34
|
+
lastInsertId, ..._meta
|
|
35
|
+
};
|
|
36
|
+
// const cpTrees: Map<Loop, LlRbTree<CpNode>> = new Map();
|
|
37
|
+
// const lastInsertId = { id: 0 };
|
|
38
|
+
// createInitialCpTree(loops, cpTrees, sharpCornersPerLoop, lastInsertId);
|
|
39
|
+
// const meta = getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees, lastInsertId);
|
|
30
40
|
let cpNode;
|
|
31
41
|
cpNode = findAndAddHoleClosing2Prongs(meta);
|
|
32
42
|
if (typeof _debug_ !== 'undefined') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-mat.js","sourceRoot":"","sources":["../../src/find-mat/find-mat.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"find-mat.js","sourceRoot":"","sources":["../../src/find-mat/find-mat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { Loop } from 'flo-boolean';
|
|
2
2
|
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
3
3
|
import { CpNode } from '../cp-node/cp-node.js';
|
|
4
|
+
import { TriMap } from '../utils/tri-map.js';
|
|
4
5
|
import { MatMeta } from '../mat/mat-meta.js';
|
|
5
6
|
/** @internal */
|
|
6
|
-
declare function
|
|
7
|
+
declare function getPointToCpNode(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>): TriMap<Loop, number, number, CpNode>;
|
|
8
|
+
/** @internal */
|
|
9
|
+
declare function getPartialMeta(loops: Loop[]): Omit<MatMeta, 'cpTrees' | 'pointToCpNode' | 'loops' | 'maxCoordinate' | 'squaredDiagonalLength' | 'lastInsertId'>;
|
|
7
10
|
/** @internal */
|
|
8
11
|
declare function addDebugInfo2(): void;
|
|
9
12
|
declare function addDebugInfo3(): void;
|
|
10
13
|
declare function addDebugInfo4(): void;
|
|
11
|
-
export {
|
|
14
|
+
export { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
|
|
@@ -4,14 +4,9 @@ import { TriMapFs } from '../utils/tri-map.js';
|
|
|
4
4
|
import { getCorner } from '../corner/get-corner.js';
|
|
5
5
|
let timingStart;
|
|
6
6
|
/** @internal */
|
|
7
|
-
function
|
|
7
|
+
function getPointToCpNode(loops, cpTrees) {
|
|
8
8
|
timingStart = performance.now();
|
|
9
9
|
const pointToCpNode = new Map();
|
|
10
|
-
const looseBoundingBoxes = [];
|
|
11
|
-
const tightBoundingBoxes = [];
|
|
12
|
-
const boundingHulls = [];
|
|
13
|
-
const sharpCorners = [];
|
|
14
|
-
const dullCorners = [];
|
|
15
10
|
for (const loop of loops) {
|
|
16
11
|
// Populate `posMap`
|
|
17
12
|
const cpTree = cpTrees.get(loop);
|
|
@@ -20,7 +15,18 @@ function getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees) {
|
|
|
20
15
|
const { p, t } = cpNode.cp.pointOnShape;
|
|
21
16
|
TriMapFs.set(pointToCpNode, loop, p[0], p[1], cpNode);
|
|
22
17
|
}
|
|
23
|
-
|
|
18
|
+
}
|
|
19
|
+
return pointToCpNode;
|
|
20
|
+
}
|
|
21
|
+
/** @internal */
|
|
22
|
+
function getPartialMeta(loops) {
|
|
23
|
+
const looseBoundingBoxes = [];
|
|
24
|
+
const tightBoundingBoxes = [];
|
|
25
|
+
const boundingHulls = [];
|
|
26
|
+
const sharpCorners = [];
|
|
27
|
+
const dullCorners = [];
|
|
28
|
+
for (const loop of loops) {
|
|
29
|
+
for (const curve of loop.curves) {
|
|
24
30
|
const ps = curve.ps;
|
|
25
31
|
const hull = getBoundingHull(ps, true);
|
|
26
32
|
boundingHulls.push(hull);
|
|
@@ -38,16 +44,11 @@ function getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees) {
|
|
|
38
44
|
}
|
|
39
45
|
}
|
|
40
46
|
return {
|
|
41
|
-
maxCoordinate,
|
|
42
|
-
squaredDiagonalLength,
|
|
43
47
|
looseBoundingBoxes,
|
|
44
48
|
tightBoundingBoxes,
|
|
45
49
|
boundingHulls,
|
|
46
50
|
sharpCorners,
|
|
47
|
-
dullCorners
|
|
48
|
-
loops,
|
|
49
|
-
cpTrees,
|
|
50
|
-
pointToCpNode
|
|
51
|
+
dullCorners
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
54
|
/** @internal */
|
|
@@ -78,5 +79,5 @@ function addDebugInfo4() {
|
|
|
78
79
|
const timing = generated.timing;
|
|
79
80
|
timing.threeProngs += performance.now() - timingStart;
|
|
80
81
|
}
|
|
81
|
-
export {
|
|
82
|
+
export { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
|
|
82
83
|
//# sourceMappingURL=get-meta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAInE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAOpD,IAAI,WAAmB,CAAC;AAGxB,gBAAgB;AAChB,SAAS,
|
|
1
|
+
{"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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"}
|
package/node/index.d.ts
CHANGED
|
@@ -46,5 +46,5 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
|
|
|
46
46
|
export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
|
|
47
47
|
export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
|
|
48
48
|
export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
|
|
49
|
-
export {
|
|
49
|
+
export { getPartialMeta, getPointToCpNode } from './find-mat/get-meta.js';
|
|
50
50
|
export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
|
package/node/index.js
CHANGED
|
@@ -30,6 +30,6 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
|
|
|
30
30
|
export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
|
|
31
31
|
export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
|
|
32
32
|
export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
|
|
33
|
-
export {
|
|
33
|
+
export { getPartialMeta, getPointToCpNode } from './find-mat/get-meta.js';
|
|
34
34
|
export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
|
|
35
35
|
//# sourceMappingURL=index.js.map
|
package/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6EAA6E,CAAC;AACxI,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6EAA6E,CAAC;AACxI,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { CpNode } from '../cp-node/cp-node.js';
|
|
1
|
+
import type { Circle } from '../geometry/circle.js';
|
|
2
|
+
import type { PointOnShape } from '../point-on-shape/point-on-shape.js';
|
|
3
|
+
import type { CpNode } from '../cp-node/cp-node.js';
|
|
4
|
+
import type { MatMeta } from '../index.js';
|
|
6
5
|
/**
|
|
7
6
|
* @param circle
|
|
8
7
|
* @param orders
|
|
@@ -12,7 +11,7 @@ import { CpNode } from '../cp-node/cp-node.js';
|
|
|
12
11
|
*
|
|
13
12
|
* @internal
|
|
14
13
|
*/
|
|
15
|
-
declare function addToCpTree(insertIfOrderIsWrong: boolean, isHoleClosing: boolean, circle: Circle, orders: number[],
|
|
14
|
+
declare function addToCpTree(insertIfOrderIsWrong: boolean, isHoleClosing: boolean, circle: Circle, orders: number[], meta: MatMeta, poss: PointOnShape[], neighbors?: CpNode[]): {
|
|
16
15
|
anyFailed: boolean;
|
|
17
16
|
cpNodes: (CpNode | undefined)[];
|
|
18
17
|
};
|
|
@@ -10,7 +10,10 @@ import { joinSpokes } from '../add-n-prong.ts/join-spokes.js';
|
|
|
10
10
|
*
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
13
|
-
function addToCpTree(insertIfOrderIsWrong, isHoleClosing, circle, orders,
|
|
13
|
+
function addToCpTree(insertIfOrderIsWrong, isHoleClosing, circle, orders,
|
|
14
|
+
// cpTrees: Map<Loop,LlRbTree<CpNode>>,
|
|
15
|
+
meta, poss, neighbors) {
|
|
16
|
+
const { cpTrees } = meta;
|
|
14
17
|
let anyFailed = false;
|
|
15
18
|
const cpNodes = poss.map((pos, i) => {
|
|
16
19
|
const order = orders[i];
|
|
@@ -19,7 +22,7 @@ function addToCpTree(insertIfOrderIsWrong, isHoleClosing, circle, orders, cpTree
|
|
|
19
22
|
const pred = neighbors === undefined
|
|
20
23
|
? getCpNodeToLeftOrSame(cpTree, pos, order, 0)
|
|
21
24
|
: neighbors[i];
|
|
22
|
-
const cpNode = insertCpNode(insertIfOrderIsWrong, isHoleClosing, false, cpTree, cp, pred);
|
|
25
|
+
const cpNode = insertCpNode(insertIfOrderIsWrong, isHoleClosing, false, cpTree, cp, pred, meta.lastInsertId);
|
|
23
26
|
if (cpNode === undefined) {
|
|
24
27
|
anyFailed = true;
|
|
25
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-to-cp-tree.js","sourceRoot":"","sources":["../../src/mat/add-to-cp-tree.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-to-cp-tree.js","sourceRoot":"","sources":["../../src/mat/add-to-cp-tree.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAG9D;;;;;;;;GAQG;AACH,SAAS,WAAW,CACZ,oBAA6B,EAC7B,aAAsB,EACtB,MAAc,EACd,MAAgB;AAChB,uCAAuC;AACvC,IAAa,EACb,IAAoB,EACpB,SAAqB;IAEzB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEzB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,CAAC,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAC5C,MAAM,EAAE,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEzE,MAAM,IAAI,GAAG,SAAS,KAAK,SAAS;YAChC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAG,YAAY,CACvB,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,MAAM,EACN,EAAE,EACF,IAAI,EACJ,IAAI,CAAC,YAAY,CACpB,CAAC;QAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAE/C,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,UAAU,CAAC,MAAM,EAAE,OAAmB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import { CpNode } from '../cp-node/cp-node.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns all branches associated with the give cpNode.
|
|
4
|
+
*
|
|
5
|
+
* * the final `CpNode` of each branch is not returned to improve symmetry
|
|
6
|
+
*
|
|
7
|
+
* @param cpNode `CpNode` representing the start vertex.
|
|
8
|
+
*/
|
|
2
9
|
declare function getBranches(cpNode: CpNode): CpNode[][];
|
|
3
10
|
export { getBranches };
|
package/node/mat/get-branches.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { getBranch } from '../cp-node/fs/get-branch.js';
|
|
2
2
|
import { getNonTerminatingOnCircle } from '../cp-node/fs/get-non-terminating-on-circle.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns all branches associated with the give cpNode.
|
|
5
|
+
*
|
|
6
|
+
* * the final `CpNode` of each branch is not returned to improve symmetry
|
|
7
|
+
*
|
|
8
|
+
* @param cpNode `CpNode` representing the start vertex.
|
|
9
|
+
*/
|
|
3
10
|
function getBranches(cpNode) {
|
|
4
11
|
const branches = [];
|
|
5
12
|
const cpNodeStack = [cpNode];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-branches.js","sourceRoot":"","sources":["../../src/mat/get-branches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAG3F,SAAS,WAAW,
|
|
1
|
+
{"version":3,"file":"get-branches.js","sourceRoot":"","sources":["../../src/mat/get-branches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAG3F;;;;;;GAMG;AACH,SAAS,WAAW,CACZ,MAAc;IAElB,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,WAAW,GAAa,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC7C,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAG,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE1D,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAExE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
package/node/mat/mat-meta.d.ts
CHANGED
|
@@ -14,11 +14,18 @@ interface MatMeta {
|
|
|
14
14
|
readonly loops: Loop[];
|
|
15
15
|
/**
|
|
16
16
|
* Primarily for internal use. A tree structure storing the
|
|
17
|
-
*
|
|
17
|
+
* `CpNode`s of the MAT by their compare order, i.e. their cyclic order
|
|
18
18
|
* around the shape boundary.
|
|
19
19
|
*/
|
|
20
20
|
readonly cpTrees: Map<Loop, LlRbTree<CpNode>>;
|
|
21
21
|
/** A map from a bezier and t value to a `PointOnShape` */
|
|
22
22
|
readonly pointToCpNode: TriMap<Loop, number, number, CpNode>;
|
|
23
|
+
/**
|
|
24
|
+
* Stores the last insert id so each `CpNode` can have a unique id for
|
|
25
|
+
* debugging purposes
|
|
26
|
+
*/
|
|
27
|
+
readonly lastInsertId: {
|
|
28
|
+
id: number;
|
|
29
|
+
};
|
|
23
30
|
}
|
|
24
31
|
export { MatMeta };
|
package/node/mat/mat.d.ts
CHANGED
|
@@ -3,13 +3,13 @@ import { MatMeta } from './mat-meta.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Represents a complete Medial Axis Transform (MAT).
|
|
5
5
|
*
|
|
6
|
-
* The MAT is fully described through its
|
|
6
|
+
* The MAT is fully described through its `CpNode` property. The `cpTrees`
|
|
7
7
|
* property is only added to facilitate extension of the MAT, e.g. by adding
|
|
8
|
-
* extra maximal disks and is typically not used. See
|
|
8
|
+
* extra maximal disks and is typically not used. See `CpNode` for more
|
|
9
9
|
* details.
|
|
10
10
|
*/
|
|
11
11
|
interface Mat {
|
|
12
|
-
/** A complete representation of the MAT. See
|
|
12
|
+
/** A complete representation of the MAT. See `CpNode`. */
|
|
13
13
|
cpNode: CpNode;
|
|
14
14
|
/**
|
|
15
15
|
* Stores additional info about the shape that could be useful for various
|
package/node/mat/simplify-mat.js
CHANGED
|
@@ -58,7 +58,7 @@ function simplifyMat(mat, hausdorffTolerance = 2 ** -3, maxIterations = 50) {
|
|
|
58
58
|
for (const cpNode of canDeletes) {
|
|
59
59
|
if (!isVertex(cpNode => (getProngCount(cpNode) !== 2) &&
|
|
60
60
|
!cpNode.isHoleClosing)(cpNode)) {
|
|
61
|
-
removeVertex(cpNode, mat.meta
|
|
61
|
+
removeVertex(cpNode, mat.meta);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplify-mat.js","sourceRoot":"","sources":["../../src/mat/simplify-mat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAIjE,oEAAoE;AACpE;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CACZ,GAAQ,EACR,kBAAkB,GAAG,CAAC,IAAE,CAAC,CAAC,EAC1B,aAAa,GAAG,EAAE;IAEtB,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,oBAAoB;IACpB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAErC,MAAM,UAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3B,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,CAAC;YACZ,OAAO,IAAI,EAAE,CAAC;gBACV,CAAC,EAAE,CAAC;gBAEJ,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAEnC,MAAM,EAAE,GAAG,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;gBAElE,IAAI,EAAE,GAAG,kBAAkB,EAAE,CAAC;oBAC1B,MAAM;gBACV,CAAC;qBAAM,CAAC;oBACJ,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YAED,IAAI,CAAC,GAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,4BAA4B;gBAC5B,SAAS;YACb,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAE,CAAC;IAErF,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CACf,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC,MAAM,CAAC,aAAa,CACxB,CAAC,MAAM,CAAC,EAAE,CAAC;YAEZ,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"simplify-mat.js","sourceRoot":"","sources":["../../src/mat/simplify-mat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PointOnShape } from "./point-on-shape.js";
|
|
2
2
|
/**
|
|
3
|
-
* Compares two
|
|
3
|
+
* Compares two `PointOnShape`s according to their cyclic ordering imposed
|
|
4
4
|
* by their relative positions on the shape boundary.
|
|
5
|
-
* @param a The first
|
|
6
|
-
* @param b The second
|
|
5
|
+
* @param a The first `PointOnShape`.
|
|
6
|
+
* @param b The second `PointOnShape`.
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
declare function comparePoss(a: PointOnShape, b: PointOnShape): number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Compares two
|
|
2
|
+
* Compares two `PointOnShape`s according to their cyclic ordering imposed
|
|
3
3
|
* by their relative positions on the shape boundary.
|
|
4
|
-
* @param a The first
|
|
5
|
-
* @param b The second
|
|
4
|
+
* @param a The first `PointOnShape`.
|
|
5
|
+
* @param b The second `PointOnShape`.
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
function comparePoss(a, b) {
|
|
@@ -5,7 +5,7 @@ import { PointOnShape } from './point-on-shape.js';
|
|
|
5
5
|
*
|
|
6
6
|
* @param minCurvature If not Number.POSITIVE_INFINITY then the
|
|
7
7
|
* circle radius will be limited to this value.
|
|
8
|
-
* @param pos The
|
|
8
|
+
* @param pos The `PointOnShape` identifying the point.
|
|
9
9
|
* @param useMaxRadius
|
|
10
10
|
*/
|
|
11
11
|
declare function getOsculatingCircle(minCurvature: number, pos: PointOnShape, useMaxRadius?: boolean): Circle;
|
|
@@ -4,7 +4,7 @@ import { tangentExact, ddCurvature } from 'flo-bezier3';
|
|
|
4
4
|
*
|
|
5
5
|
* @param minCurvature If not Number.POSITIVE_INFINITY then the
|
|
6
6
|
* circle radius will be limited to this value.
|
|
7
|
-
* @param pos The
|
|
7
|
+
* @param pos The `PointOnShape` identifying the point.
|
|
8
8
|
* @param useMaxRadius
|
|
9
9
|
*/
|
|
10
10
|
function getOsculatingCircle(minCurvature, pos,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Curve } from '../curve/curve.js';
|
|
2
2
|
interface PointOnShape {
|
|
3
|
-
/** The
|
|
3
|
+
/** The `Curve` on the shape boundary this points belong to. */
|
|
4
4
|
curve: Curve;
|
|
5
5
|
/** The bezier parameter value on the curve identifying the point coordinates. */
|
|
6
6
|
t: number;
|