flo-mat 2.0.2 → 2.0.4
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/browser/index.js +8409 -8358
- package/browser/index.min.js +1 -1
- package/node/circle.d.ts +20 -20
- package/node/circle.js +31 -31
- package/node/compare-curvatures-at-interface.d.ts +19 -19
- package/node/compare-curvatures-at-interface.js +124 -124
- 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/remove.d.ts +9 -9
- package/node/cp-node/remove.js +19 -19
- package/node/cp-node.d.ts +202 -202
- package/node/cp-node.js +320 -320
- package/node/curve.d.ts +46 -46
- package/node/curve.js +88 -88
- 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/branch.d.ts +4 -4
- package/node/debug/functions/draw-elem/branch.js +22 -22
- 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/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-elem.d.ts +8 -8
- package/node/debug/functions/draw-elem/draw-elem.js +45 -45
- 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/leaves.d.ts +4 -4
- package/node/debug/functions/draw-elem/leaves.js +12 -12
- 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/mat.d.ts +4 -4
- package/node/debug/functions/draw-elem/mat.js +30 -30
- 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/min-y.d.ts +4 -4
- package/node/debug/functions/draw-elem/min-y.js +13 -13
- 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.d.ts +4 -4
- package/node/debug/functions/draw-elem/one-prong.js +16 -16
- 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/three-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/three-prong.js +16 -16
- 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/two-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/two-prong.js +36 -36
- 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/general.d.ts +48 -48
- package/node/debug/functions/general.js +52 -52
- package/node/debug/functions/three-prong.d.ts +11 -11
- package/node/debug/functions/three-prong.js +184 -184
- package/node/debug/functions/two-prong.d.ts +13 -13
- package/node/debug/functions/two-prong.js +117 -117
- 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 -122
- 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-beziers-to-next.d.ts +8 -8
- package/node/get-boundary-beziers-to-next.js +44 -44
- 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-curve/get-curve-between.d.ts +9 -9
- package/node/get-curve/get-curve-between.js +56 -56
- 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-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/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.d.ts +16 -16
- package/node/loop.js +34 -34
- package/node/mat/add-to-cp-graph.d.ts +16 -16
- package/node/mat/add-to-cp-graph.js +30 -30
- 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 -72
- 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-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-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/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-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-closest-boundary-point.d.ts +18 -18
- package/node/mat/closest-boundary-point/get-closest-boundary-point.js +40 -40
- 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/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-2-prong.d.ts +21 -21
- package/node/mat/find-mat/add-2-prong.js +192 -192
- 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-debug-info.d.ts +9 -9
- package/node/mat/find-mat/add-debug-info.js +67 -67
- 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-initial-cp-graph.d.ts +12 -12
- package/node/mat/find-mat/create-initial-cp-graph.js +40 -40
- 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/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/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-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/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/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-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/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.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/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-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.d.ts +16 -16
- package/node/mat/find-mat/find-and-add-2-prongs.js +73 -73
- 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 -146
- 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/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-sharp-corners.d.ts +4 -4
- package/node/mat/find-mat/get-sharp-corners.js +17 -17
- 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/get-boundary-piece-beziers.d.ts +11 -11
- package/node/mat/get-boundary-piece-beziers.js +58 -58
- 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-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-neighboring-cps.d.ts +14 -14
- package/node/mat/get-neighboring-cps.js +30 -30
- 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/simplify-mat-map-only.d.ts +23 -23
- package/node/mat/simplify-mat-map-only.js +80 -80
- 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/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.d.ts +12 -12
- package/node/mat/to-scale-axis/cull.js +132 -132
- package/node/mat/trim-mat.d.ts +8 -8
- package/node/mat/trim-mat.js +16 -16
- 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/simplify-mat.d.ts +16 -16
- package/node/simplify-mat.js +71 -71
- package/node/svg/get-loop-bounds.d.ts +12 -12
- package/node/svg/get-loop-bounds.js +80 -80
- 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/sweep-line/sweep-line.d.ts +18 -18
- package/node/sweep-line/sweep-line.js +72 -72
- package/node/to-scale-axis.d.ts +16 -16
- package/node/to-scale-axis.js +74 -74
- package/node/traverse-edges.d.ts +10 -10
- package/node/traverse-edges.js +21 -21
- package/node/traverse-vertices.d.ts +12 -12
- package/node/traverse-vertices.js +27 -27
- package/package.json +15 -15
- package/tsconfig.json +0 -1
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 const getCornerAtEnd: (a: Curve) => Corner;
|
|
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
|
-
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 };
|
|
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
|
|
@@ -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
|
-
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 };
|
|
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 };
|
package/node/debug/debug.js
CHANGED
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import { generalDebugFunctions } from './functions/general.js';
|
|
2
|
-
import { twoProngDebugFunctions } from './functions/two-prong.js';
|
|
3
|
-
import { threeProngDebugFunctions } from './functions/three-prong.js';
|
|
4
|
-
import { drawElemFunctions } from './functions/draw-elem/draw-elem.js';
|
|
5
|
-
function enableDebugForMat(debugOn) {
|
|
6
|
-
if (!debugOn) {
|
|
7
|
-
window._debug_ = undefined;
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
let debug = window._debug_;
|
|
11
|
-
debug = {
|
|
12
|
-
...debug,
|
|
13
|
-
generated: {
|
|
14
|
-
//...debug?.generated,
|
|
15
|
-
...(!debug ? {} : !debug.generated ? {} : debug.generated),
|
|
16
|
-
elems: {
|
|
17
|
-
//...debug?.generated?.elems,
|
|
18
|
-
...(!debug ? {} : !debug.generated ? {} : !debug.generated.elems ? {} : debug.generated.elems),
|
|
19
|
-
twoProng_regular: [],
|
|
20
|
-
twoProng_failed: [],
|
|
21
|
-
twoProng_notAdded: [],
|
|
22
|
-
twoProng_deleted: [],
|
|
23
|
-
twoProng_holeClosing: [],
|
|
24
|
-
looseBoundingBox: [],
|
|
25
|
-
tightBoundingBox: [],
|
|
26
|
-
oneProng: [],
|
|
27
|
-
oneProngAtDullCorner: [],
|
|
28
|
-
sharpCorner: [],
|
|
29
|
-
dullCorner: [],
|
|
30
|
-
vertex: [],
|
|
31
|
-
threeProng: [],
|
|
32
|
-
boundingHull: [],
|
|
33
|
-
mat: [],
|
|
34
|
-
sat: [],
|
|
35
|
-
cpNode: [],
|
|
36
|
-
maxVertex: [],
|
|
37
|
-
leaves: [],
|
|
38
|
-
culls: [],
|
|
39
|
-
},
|
|
40
|
-
timing: {
|
|
41
|
-
//...debug?.generated?.timing,
|
|
42
|
-
...(!debug ? {} : !debug.generated ? {} : !debug.generated.timing ? {} : debug.generated.timing),
|
|
43
|
-
holeClosers: 0,
|
|
44
|
-
oneAnd2Prongs: 0,
|
|
45
|
-
threeProngs: 0,
|
|
46
|
-
sats: 0,
|
|
47
|
-
simplifyMat: 0,
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
fs: {
|
|
51
|
-
//...debug?.fs,
|
|
52
|
-
...(!debug ? {} : !debug.fs ? {} : debug.fs),
|
|
53
|
-
drawElem: {
|
|
54
|
-
//...debug?.fs?.drawElem,
|
|
55
|
-
...(!debug ? {} : !debug.fs ? {} : !debug.fs.drawElem ? {} : debug.fs.drawElem),
|
|
56
|
-
...drawElemFunctions
|
|
57
|
-
},
|
|
58
|
-
...generalDebugFunctions,
|
|
59
|
-
twoProng: twoProngDebugFunctions,
|
|
60
|
-
threeProng: threeProngDebugFunctions,
|
|
61
|
-
},
|
|
62
|
-
directives: {
|
|
63
|
-
//...debug?.directives,
|
|
64
|
-
...(!debug ? {} : !debug.directives ? {} : debug.directives),
|
|
65
|
-
stopAfterHoleClosers: false,
|
|
66
|
-
stopAfterHoleClosersNum: undefined,
|
|
67
|
-
stopAfterTwoProngs: false,
|
|
68
|
-
stopAfterTwoProngsNum: undefined,
|
|
69
|
-
stopAfterThreeProngs: false,
|
|
70
|
-
stopAfterThreeProngsNum: undefined,
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
window._debug_ = debug;
|
|
74
|
-
}
|
|
75
|
-
export { enableDebugForMat };
|
|
1
|
+
import { generalDebugFunctions } from './functions/general.js';
|
|
2
|
+
import { twoProngDebugFunctions } from './functions/two-prong.js';
|
|
3
|
+
import { threeProngDebugFunctions } from './functions/three-prong.js';
|
|
4
|
+
import { drawElemFunctions } from './functions/draw-elem/draw-elem.js';
|
|
5
|
+
function enableDebugForMat(debugOn) {
|
|
6
|
+
if (!debugOn) {
|
|
7
|
+
window._debug_ = undefined;
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
let debug = window._debug_;
|
|
11
|
+
debug = {
|
|
12
|
+
...debug,
|
|
13
|
+
generated: {
|
|
14
|
+
//...debug?.generated,
|
|
15
|
+
...(!debug ? {} : !debug.generated ? {} : debug.generated),
|
|
16
|
+
elems: {
|
|
17
|
+
//...debug?.generated?.elems,
|
|
18
|
+
...(!debug ? {} : !debug.generated ? {} : !debug.generated.elems ? {} : debug.generated.elems),
|
|
19
|
+
twoProng_regular: [],
|
|
20
|
+
twoProng_failed: [],
|
|
21
|
+
twoProng_notAdded: [],
|
|
22
|
+
twoProng_deleted: [],
|
|
23
|
+
twoProng_holeClosing: [],
|
|
24
|
+
looseBoundingBox: [],
|
|
25
|
+
tightBoundingBox: [],
|
|
26
|
+
oneProng: [],
|
|
27
|
+
oneProngAtDullCorner: [],
|
|
28
|
+
sharpCorner: [],
|
|
29
|
+
dullCorner: [],
|
|
30
|
+
vertex: [],
|
|
31
|
+
threeProng: [],
|
|
32
|
+
boundingHull: [],
|
|
33
|
+
mat: [],
|
|
34
|
+
sat: [],
|
|
35
|
+
cpNode: [],
|
|
36
|
+
maxVertex: [],
|
|
37
|
+
leaves: [],
|
|
38
|
+
culls: [],
|
|
39
|
+
},
|
|
40
|
+
timing: {
|
|
41
|
+
//...debug?.generated?.timing,
|
|
42
|
+
...(!debug ? {} : !debug.generated ? {} : !debug.generated.timing ? {} : debug.generated.timing),
|
|
43
|
+
holeClosers: 0,
|
|
44
|
+
oneAnd2Prongs: 0,
|
|
45
|
+
threeProngs: 0,
|
|
46
|
+
sats: 0,
|
|
47
|
+
simplifyMat: 0,
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
fs: {
|
|
51
|
+
//...debug?.fs,
|
|
52
|
+
...(!debug ? {} : !debug.fs ? {} : debug.fs),
|
|
53
|
+
drawElem: {
|
|
54
|
+
//...debug?.fs?.drawElem,
|
|
55
|
+
...(!debug ? {} : !debug.fs ? {} : !debug.fs.drawElem ? {} : debug.fs.drawElem),
|
|
56
|
+
...drawElemFunctions
|
|
57
|
+
},
|
|
58
|
+
...generalDebugFunctions,
|
|
59
|
+
twoProng: twoProngDebugFunctions,
|
|
60
|
+
threeProng: threeProngDebugFunctions,
|
|
61
|
+
},
|
|
62
|
+
directives: {
|
|
63
|
+
//...debug?.directives,
|
|
64
|
+
...(!debug ? {} : !debug.directives ? {} : debug.directives),
|
|
65
|
+
stopAfterHoleClosers: false,
|
|
66
|
+
stopAfterHoleClosersNum: undefined,
|
|
67
|
+
stopAfterTwoProngs: false,
|
|
68
|
+
stopAfterTwoProngsNum: undefined,
|
|
69
|
+
stopAfterThreeProngs: false,
|
|
70
|
+
stopAfterThreeProngsNum: undefined,
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
window._debug_ = debug;
|
|
74
|
+
}
|
|
75
|
+
export { enableDebugForMat };
|
|
76
76
|
//# sourceMappingURL=debug.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/** @hidden */
|
|
2
|
-
declare function boundingHull(g: SVGGElement, hull: number[][], style?: string): SVGPathElement[];
|
|
3
|
-
export { boundingHull };
|
|
1
|
+
/** @hidden */
|
|
2
|
+
declare function boundingHull(g: SVGGElement, hull: number[][], style?: string): SVGPathElement[];
|
|
3
|
+
export { boundingHull };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { drawFs } from 'flo-draw';
|
|
2
|
-
/** @hidden */
|
|
3
|
-
function boundingHull(g, hull, style = 'thin5 black nofill') {
|
|
4
|
-
const $polygon = drawFs.polygon(g, hull, style);
|
|
5
|
-
return $polygon;
|
|
6
|
-
}
|
|
7
|
-
export { boundingHull };
|
|
1
|
+
import { drawFs } from 'flo-draw';
|
|
2
|
+
/** @hidden */
|
|
3
|
+
function boundingHull(g, hull, style = 'thin5 black nofill') {
|
|
4
|
+
const $polygon = drawFs.polygon(g, hull, style);
|
|
5
|
+
return $polygon;
|
|
6
|
+
}
|
|
7
|
+
export { boundingHull };
|
|
8
8
|
//# sourceMappingURL=bounding-hull.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CpNode } from '../../../cp-node.js';
|
|
2
|
-
/** @hidden */
|
|
3
|
-
declare function drawBranch(g: SVGGElement, branch: CpNode[], delay?: number): SVGElement[];
|
|
4
|
-
export { drawBranch };
|
|
1
|
+
import { CpNode } from '../../../cp-node.js';
|
|
2
|
+
/** @hidden */
|
|
3
|
+
declare function drawBranch(g: SVGGElement, branch: CpNode[], delay?: number): SVGElement[];
|
|
4
|
+
export { drawBranch };
|