flo-mat 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/browser/index.js +8230 -8229
  2. package/browser/index.min.js +1 -1
  3. package/node/circle.d.ts +20 -20
  4. package/node/circle.js +31 -31
  5. package/node/compare-curvatures-at-interface.d.ts +19 -19
  6. package/node/compare-curvatures-at-interface.js +124 -124
  7. package/node/contact-point.d.ts +26 -26
  8. package/node/contact-point.js +25 -25
  9. package/node/cp-node/clone.d.ts +8 -8
  10. package/node/cp-node/clone.js +31 -31
  11. package/node/cp-node/remove.d.ts +9 -9
  12. package/node/cp-node/remove.js +19 -19
  13. package/node/cp-node.d.ts +202 -202
  14. package/node/cp-node.js +320 -320
  15. package/node/curve.d.ts +46 -46
  16. package/node/curve.js +88 -88
  17. package/node/debug/cp-node-for-debugging.d.ts +11 -11
  18. package/node/debug/cp-node-for-debugging.js +1 -1
  19. package/node/debug/debug-elem-types.d.ts +32 -32
  20. package/node/debug/debug-elem-types.js +1 -1
  21. package/node/debug/debug.d.ts +50 -50
  22. package/node/debug/debug.js +75 -75
  23. package/node/debug/functions/draw-elem/bounding-hull.d.ts +3 -3
  24. package/node/debug/functions/draw-elem/bounding-hull.js +7 -7
  25. package/node/debug/functions/draw-elem/branch.d.ts +4 -4
  26. package/node/debug/functions/draw-elem/branch.js +22 -22
  27. package/node/debug/functions/draw-elem/culls.d.ts +4 -4
  28. package/node/debug/functions/draw-elem/culls.js +21 -21
  29. package/node/debug/functions/draw-elem/draw-circle-percent.d.ts +3 -3
  30. package/node/debug/functions/draw-elem/draw-circle-percent.js +12 -12
  31. package/node/debug/functions/draw-elem/draw-elem.d.ts +8 -8
  32. package/node/debug/functions/draw-elem/draw-elem.js +45 -45
  33. package/node/debug/functions/draw-elem/dull-corner.d.ts +4 -4
  34. package/node/debug/functions/draw-elem/dull-corner.js +10 -10
  35. package/node/debug/functions/draw-elem/leaves.d.ts +4 -4
  36. package/node/debug/functions/draw-elem/leaves.js +12 -12
  37. package/node/debug/functions/draw-elem/loop.d.ts +4 -4
  38. package/node/debug/functions/draw-elem/loop.js +11 -11
  39. package/node/debug/functions/draw-elem/loops.d.ts +4 -4
  40. package/node/debug/functions/draw-elem/loops.js +6 -6
  41. package/node/debug/functions/draw-elem/loose-bounding-box.d.ts +3 -3
  42. package/node/debug/functions/draw-elem/loose-bounding-box.js +9 -9
  43. package/node/debug/functions/draw-elem/mat.d.ts +4 -4
  44. package/node/debug/functions/draw-elem/mat.js +30 -30
  45. package/node/debug/functions/draw-elem/max-vertex.d.ts +4 -4
  46. package/node/debug/functions/draw-elem/max-vertex.js +8 -8
  47. package/node/debug/functions/draw-elem/min-y.d.ts +4 -4
  48. package/node/debug/functions/draw-elem/min-y.js +13 -13
  49. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.d.ts +4 -4
  50. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js +12 -12
  51. package/node/debug/functions/draw-elem/one-prong.d.ts +4 -4
  52. package/node/debug/functions/draw-elem/one-prong.js +16 -16
  53. package/node/debug/functions/draw-elem/sharp-corner.d.ts +4 -4
  54. package/node/debug/functions/draw-elem/sharp-corner.js +9 -9
  55. package/node/debug/functions/draw-elem/three-prong.d.ts +4 -4
  56. package/node/debug/functions/draw-elem/three-prong.js +16 -16
  57. package/node/debug/functions/draw-elem/tight-bounding-box.d.ts +3 -3
  58. package/node/debug/functions/draw-elem/tight-bounding-box.js +7 -7
  59. package/node/debug/functions/draw-elem/two-prong.d.ts +4 -4
  60. package/node/debug/functions/draw-elem/two-prong.js +36 -36
  61. package/node/debug/functions/draw-elem/vertex.d.ts +4 -4
  62. package/node/debug/functions/draw-elem/vertex.js +27 -27
  63. package/node/debug/functions/general.d.ts +48 -48
  64. package/node/debug/functions/general.js +52 -52
  65. package/node/debug/functions/three-prong.d.ts +11 -11
  66. package/node/debug/functions/three-prong.js +184 -184
  67. package/node/debug/functions/two-prong.d.ts +13 -13
  68. package/node/debug/functions/two-prong.js +117 -117
  69. package/node/debug/three-prong-for-debugging.d.ts +31 -31
  70. package/node/debug/three-prong-for-debugging.js +20 -20
  71. package/node/debug/two-prong-for-debugging.d.ts +26 -26
  72. package/node/debug/two-prong-for-debugging.js +1 -1
  73. package/node/find-mats.d.ts +26 -26
  74. package/node/find-mats.js +122 -122
  75. package/node/get-boundary-bezier-parts-to-next.d.ts +9 -9
  76. package/node/get-boundary-bezier-parts-to-next.js +42 -42
  77. package/node/get-boundary-beziers-to-next.d.ts +8 -8
  78. package/node/get-boundary-beziers-to-next.js +44 -44
  79. package/node/get-bounding-box-.d.ts +2 -2
  80. package/node/get-bounding-box-.js +4 -4
  81. package/node/get-branches.d.ts +12 -12
  82. package/node/get-branches.js +68 -68
  83. package/node/get-curve/get-curve-between.d.ts +9 -9
  84. package/node/get-curve/get-curve-between.js +56 -56
  85. package/node/get-curve/get-edge-direction.d.ts +9 -9
  86. package/node/get-curve/get-edge-direction.js +53 -53
  87. package/node/get-curve-to-next.d.ts +9 -9
  88. package/node/get-curve-to-next.js +11 -11
  89. package/node/get-interface-ccw.d.ts +24 -24
  90. package/node/get-interface-ccw.js +97 -97
  91. package/node/index.d.ts +36 -36
  92. package/node/index.js +32 -32
  93. package/node/loop/get-max-coordinate.d.ts +10 -10
  94. package/node/loop/get-max-coordinate.js +43 -43
  95. package/node/loop.d.ts +16 -16
  96. package/node/loop.js +34 -34
  97. package/node/mat/add-to-cp-graph.d.ts +16 -16
  98. package/node/mat/add-to-cp-graph.js +30 -30
  99. package/node/mat/bezier-piece.d.ts +12 -12
  100. package/node/mat/bezier-piece.js +1 -1
  101. package/node/mat/closest-boundary-point/closest-points-on-curve.d.ts +14 -14
  102. package/node/mat/closest-boundary-point/closest-points-on-curve.js +72 -72
  103. package/node/mat/closest-boundary-point/cull-bezier-pieces.d.ts +9 -9
  104. package/node/mat/closest-boundary-point/cull-bezier-pieces.js +19 -19
  105. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.d.ts +11 -11
  106. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js +24 -24
  107. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.d.ts +11 -11
  108. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js +26 -26
  109. package/node/mat/closest-boundary-point/get-best-distance-squared.d.ts +8 -8
  110. package/node/mat/closest-boundary-point/get-best-distance-squared.js +24 -24
  111. package/node/mat/closest-boundary-point/get-close-boundary-points.d.ts +17 -17
  112. package/node/mat/closest-boundary-point/get-close-boundary-points.js +80 -80
  113. package/node/mat/closest-boundary-point/get-closest-boundary-point.d.ts +18 -18
  114. package/node/mat/closest-boundary-point/get-closest-boundary-point.js +40 -40
  115. package/node/mat/corner.d.ts +37 -37
  116. package/node/mat/corner.js +1 -1
  117. package/node/mat/create-new-cp-tree.d.ts +9 -9
  118. package/node/mat/create-new-cp-tree.js +23 -23
  119. package/node/mat/elem-type-two-prong.d.ts +3 -3
  120. package/node/mat/elem-type-two-prong.js +1 -1
  121. package/node/mat/find-mat/add-1-prong.d.ts +12 -12
  122. package/node/mat/find-mat/add-1-prong.js +42 -42
  123. package/node/mat/find-mat/add-2-prong.d.ts +21 -21
  124. package/node/mat/find-mat/add-2-prong.js +192 -192
  125. package/node/mat/find-mat/add-3-prong.d.ts +19 -19
  126. package/node/mat/find-mat/add-3-prong.js +54 -54
  127. package/node/mat/find-mat/add-debug-info.d.ts +9 -9
  128. package/node/mat/find-mat/add-debug-info.js +67 -67
  129. package/node/mat/find-mat/create-get-interesting-points-on-loop.d.ts +11 -11
  130. package/node/mat/find-mat/create-get-interesting-points-on-loop.js +51 -51
  131. package/node/mat/find-mat/create-initial-cp-graph.d.ts +12 -12
  132. package/node/mat/find-mat/create-initial-cp-graph.js +40 -40
  133. package/node/mat/find-mat/find-2-prong/add-debug-info.d.ts +8 -8
  134. package/node/mat/find-mat/find-2-prong/add-debug-info.js +21 -21
  135. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.d.ts +11 -11
  136. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js +29 -29
  137. package/node/mat/find-mat/find-2-prong/find-2-prong.d.ts +37 -37
  138. package/node/mat/find-mat/find-2-prong/find-2-prong.js +232 -232
  139. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.d.ts +9 -9
  140. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js +39 -39
  141. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.d.ts +11 -11
  142. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js +37 -37
  143. package/node/mat/find-mat/find-2-prong/x-for-debugging.d.ts +9 -9
  144. package/node/mat/find-mat/find-2-prong/x-for-debugging.js +1 -1
  145. package/node/mat/find-mat/find-3-prong/calc-better-x.d.ts +19 -19
  146. package/node/mat/find-mat/find-3-prong/calc-better-x.js +36 -36
  147. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.d.ts +13 -13
  148. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js +25 -25
  149. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.d.ts +22 -22
  150. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js +159 -159
  151. package/node/mat/find-mat/find-3-prong/find-3-prong.d.ts +16 -16
  152. package/node/mat/find-mat/find-3-prong/find-3-prong.js +76 -76
  153. package/node/mat/find-mat/find-3-prong/get-closest-points.d.ts +9 -9
  154. package/node/mat/find-mat/find-3-prong/get-closest-points.js +16 -16
  155. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.d.ts +15 -15
  156. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js +20 -20
  157. package/node/mat/find-mat/find-and-add-2-prongs.d.ts +16 -16
  158. package/node/mat/find-mat/find-and-add-2-prongs.js +73 -73
  159. package/node/mat/find-mat/find-and-add-3-prongs.d.ts +13 -13
  160. package/node/mat/find-mat/find-and-add-3-prongs.js +146 -146
  161. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.d.ts +14 -14
  162. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js +33 -33
  163. package/node/mat/find-mat/get-potential-2-prongs.d.ts +4 -4
  164. package/node/mat/find-mat/get-potential-2-prongs.js +16 -16
  165. package/node/mat/find-mat/get-sharp-corners.d.ts +4 -4
  166. package/node/mat/find-mat/get-sharp-corners.js +17 -17
  167. package/node/mat/geometry/get-closest-square-distance-to-rect.d.ts +5 -5
  168. package/node/mat/geometry/get-closest-square-distance-to-rect.js +49 -49
  169. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.d.ts +5 -5
  170. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js +15 -15
  171. package/node/mat/get-boundary-piece-beziers.d.ts +11 -11
  172. package/node/mat/get-boundary-piece-beziers.js +58 -58
  173. package/node/mat/get-contact-circles-at-interface.d.ts +8 -8
  174. package/node/mat/get-contact-circles-at-interface.js +20 -20
  175. package/node/mat/get-largest-vertex.d.ts +4 -4
  176. package/node/mat/get-largest-vertex.js +9 -9
  177. package/node/mat/get-leaves.d.ts +4 -4
  178. package/node/mat/get-leaves.js +12 -12
  179. package/node/mat/get-neighboring-cps.d.ts +14 -14
  180. package/node/mat/get-neighboring-cps.js +30 -30
  181. package/node/mat/get-two-prong-type.d.ts +5 -5
  182. package/node/mat/get-two-prong-type.js +8 -8
  183. package/node/mat/is-another-cp-closeby.d.ts +20 -20
  184. package/node/mat/is-another-cp-closeby.js +55 -55
  185. package/node/mat/simplify-mat-map-only.d.ts +23 -23
  186. package/node/mat/simplify-mat-map-only.js +80 -80
  187. package/node/mat/to-scale-axis/add-debug-info.d.ts +7 -7
  188. package/node/mat/to-scale-axis/add-debug-info.js +13 -13
  189. package/node/mat/to-scale-axis/cull-non-cycles.d.ts +9 -9
  190. package/node/mat/to-scale-axis/cull-non-cycles.js +51 -51
  191. package/node/mat/to-scale-axis/cull.d.ts +12 -12
  192. package/node/mat/to-scale-axis/cull.js +132 -132
  193. package/node/mat/trim-mat.d.ts +8 -8
  194. package/node/mat/trim-mat.js +16 -16
  195. package/node/mat.d.ts +22 -22
  196. package/node/mat.js +1 -1
  197. package/node/point-on-shape.d.ts +73 -73
  198. package/node/point-on-shape.js +167 -167
  199. package/node/simplify-mat.d.ts +16 -16
  200. package/node/simplify-mat.js +71 -71
  201. package/node/svg/get-loop-bounds.d.ts +12 -12
  202. package/node/svg/get-loop-bounds.js +80 -80
  203. package/node/svg/get-min-y-pos.d.ts +8 -8
  204. package/node/svg/get-min-y-pos.js +9 -9
  205. package/node/svg/get-shape-bounds.d.ts +9 -9
  206. package/node/svg/get-shape-bounds.js +35 -35
  207. package/node/sweep-line/sweep-line.d.ts +18 -18
  208. package/node/sweep-line/sweep-line.js +72 -72
  209. package/node/to-scale-axis.d.ts +16 -16
  210. package/node/to-scale-axis.js +74 -74
  211. package/node/traverse-edges.d.ts +10 -10
  212. package/node/traverse-edges.js +21 -21
  213. package/node/traverse-vertices.d.ts +12 -12
  214. package/node/traverse-vertices.js +27 -27
  215. package/package.json +11 -11
  216. package/tsconfig.json +0 -1
@@ -1,133 +1,133 @@
1
- import { getLeaves } from '../get-leaves.js';
2
- import { CpNode } from '../../cp-node.js';
3
- /**
4
- * @hidden
5
- * Returns the set of Vertices passing the following test: walk the MAT tree and
6
- * keep all Vertices not in the current cull set and any Vertices that have a
7
- * non-culled node further down the line toward the tree leaves.
8
- * @param culls The CpNodes (referred to by circles) that should be culled.
9
- * @param maxCpNode The start CpNode which must reprsesent the maximal vertex.
10
- */
11
- function cull(culls, maxCpNode) {
12
- const leaves = getLeaves(maxCpNode);
13
- function getNonTrivialEdges(cpStart) {
14
- let cp = cpStart;
15
- const cps = [];
16
- do {
17
- if (cp.next !== cp.nextOnCircle) {
18
- cps.push(cp);
19
- }
20
- cp = cp.nextOnCircle;
21
- } while (cp !== cpStart.prevOnCircle);
22
- return cps;
23
- }
24
- while (leaves.length) {
25
- const leaf = leaves.pop();
26
- // Preserve topology.
27
- if (leaf.isHoleClosing || leaf.isIntersection) {
28
- continue;
29
- }
30
- if (!culls.has(leaf.cp.circle)) {
31
- continue;
32
- }
33
- let cpNode = leaf.next; // Turn around
34
- while (true) {
35
- cpNode = cpNode.next;
36
- let cut = false;
37
- const cp1 = cpNode.prevOnCircle;
38
- if (!culls.has(cpNode.cp.circle)) {
39
- // Cut off the edge once a non-cull has been reached.
40
- cut = true;
41
- }
42
- else if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
43
- cut = true; // We are at the max disk - cut whole edge
44
- }
45
- else {
46
- const cps = getNonTrivialEdges(cpNode);
47
- if (cps.length === 1) {
48
- cpNode = cps[0];
49
- }
50
- else {
51
- cut = true;
52
- }
53
- }
54
- if (cut) {
55
- cp1.next = cpNode;
56
- cpNode.prev = cp1;
57
- break;
58
- }
59
- }
60
- }
61
- }
62
- /*
63
- function cull(
64
- culls: Set<Circle>,
65
- maxCpNode: CpNode) {
66
-
67
- let leaves = getLeaves(maxCpNode);
68
-
69
- function getNonTrivialBranches(cpStart: CpNode) {
70
- let cp = cpStart.next;
71
-
72
- let cps: CpNode[] = [];
73
- do {
74
- if (cp.next !== cp.nextOnCircle) {
75
- cps.push(cp);
76
- }
77
- cp = cp.nextOnCircle;
78
- } while (cp !== cpStart)
79
-
80
- return cps;
81
- }
82
-
83
- while (leaves.length) {
84
- let leaf = leaves.pop();
85
-
86
- // Preserve topology.
87
- if (leaf.isHoleClosing || leaf.isIntersection) { continue; }
88
-
89
- if (!culls.has(leaf.cp.circle)) {
90
- continue;
91
- }
92
-
93
- let cpNode = leaf.next; // Turn around
94
-
95
- while (true) {
96
- cpNode = cpNode.next;
97
- let cut = false;
98
- let cp1 = cpNode.prevOnCircle;
99
-
100
- if (!culls.has(cpNode.cp.circle)) {
101
- // Cut the branch once a non-cull has been reached.
102
- cut = true;
103
- } else {
104
- //let cp2 = cp1.prevOnCircle;
105
- let cp2 = cpNode.nextOnCircle;
106
-
107
- //if (maxCpNode === cpNode || maxCpNode === cp1 || maxCpNode === cp2) {
108
- if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
109
- cut = true; // We are at the max disk - cut whole edge
110
- } else if (cpNode.next === cp2) {
111
- // Continue but starting from cp2
112
- cpNode = cp2;
113
- } else if (cp2.next === cp1) {
114
- // Do nothing - ignore the branch starting from cp2 since it
115
- // is terminating.
116
- } else if (cp2.next !== cp1) {
117
- // At this stage (cpNode.next !== cp2 && cp2.next !== cp1)
118
- // so it is a bifurcation point - cut the edge.
119
- cut = true;
120
- }
121
- }
122
-
123
- if (cut) {
124
- cp1.next = cpNode;
125
- cpNode.prev = cp1;
126
- break;
127
- }
128
- }
129
- }
130
- }
131
- */
132
- export { cull };
1
+ import { getLeaves } from '../get-leaves.js';
2
+ import { CpNode } from '../../cp-node.js';
3
+ /**
4
+ * @hidden
5
+ * Returns the set of Vertices passing the following test: walk the MAT tree and
6
+ * keep all Vertices not in the current cull set and any Vertices that have a
7
+ * non-culled node further down the line toward the tree leaves.
8
+ * @param culls The CpNodes (referred to by circles) that should be culled.
9
+ * @param maxCpNode The start CpNode which must reprsesent the maximal vertex.
10
+ */
11
+ function cull(culls, maxCpNode) {
12
+ const leaves = getLeaves(maxCpNode);
13
+ function getNonTrivialEdges(cpStart) {
14
+ let cp = cpStart;
15
+ const cps = [];
16
+ do {
17
+ if (cp.next !== cp.nextOnCircle) {
18
+ cps.push(cp);
19
+ }
20
+ cp = cp.nextOnCircle;
21
+ } while (cp !== cpStart.prevOnCircle);
22
+ return cps;
23
+ }
24
+ while (leaves.length) {
25
+ const leaf = leaves.pop();
26
+ // Preserve topology.
27
+ if (leaf.isHoleClosing || leaf.isIntersection) {
28
+ continue;
29
+ }
30
+ if (!culls.has(leaf.cp.circle)) {
31
+ continue;
32
+ }
33
+ let cpNode = leaf.next; // Turn around
34
+ while (true) {
35
+ cpNode = cpNode.next;
36
+ let cut = false;
37
+ const cp1 = cpNode.prevOnCircle;
38
+ if (!culls.has(cpNode.cp.circle)) {
39
+ // Cut off the edge once a non-cull has been reached.
40
+ cut = true;
41
+ }
42
+ else if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
43
+ cut = true; // We are at the max disk - cut whole edge
44
+ }
45
+ else {
46
+ const cps = getNonTrivialEdges(cpNode);
47
+ if (cps.length === 1) {
48
+ cpNode = cps[0];
49
+ }
50
+ else {
51
+ cut = true;
52
+ }
53
+ }
54
+ if (cut) {
55
+ cp1.next = cpNode;
56
+ cpNode.prev = cp1;
57
+ break;
58
+ }
59
+ }
60
+ }
61
+ }
62
+ /*
63
+ function cull(
64
+ culls: Set<Circle>,
65
+ maxCpNode: CpNode) {
66
+
67
+ let leaves = getLeaves(maxCpNode);
68
+
69
+ function getNonTrivialBranches(cpStart: CpNode) {
70
+ let cp = cpStart.next;
71
+
72
+ let cps: CpNode[] = [];
73
+ do {
74
+ if (cp.next !== cp.nextOnCircle) {
75
+ cps.push(cp);
76
+ }
77
+ cp = cp.nextOnCircle;
78
+ } while (cp !== cpStart)
79
+
80
+ return cps;
81
+ }
82
+
83
+ while (leaves.length) {
84
+ let leaf = leaves.pop();
85
+
86
+ // Preserve topology.
87
+ if (leaf.isHoleClosing || leaf.isIntersection) { continue; }
88
+
89
+ if (!culls.has(leaf.cp.circle)) {
90
+ continue;
91
+ }
92
+
93
+ let cpNode = leaf.next; // Turn around
94
+
95
+ while (true) {
96
+ cpNode = cpNode.next;
97
+ let cut = false;
98
+ let cp1 = cpNode.prevOnCircle;
99
+
100
+ if (!culls.has(cpNode.cp.circle)) {
101
+ // Cut the branch once a non-cull has been reached.
102
+ cut = true;
103
+ } else {
104
+ //let cp2 = cp1.prevOnCircle;
105
+ let cp2 = cpNode.nextOnCircle;
106
+
107
+ //if (maxCpNode === cpNode || maxCpNode === cp1 || maxCpNode === cp2) {
108
+ if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
109
+ cut = true; // We are at the max disk - cut whole edge
110
+ } else if (cpNode.next === cp2) {
111
+ // Continue but starting from cp2
112
+ cpNode = cp2;
113
+ } else if (cp2.next === cp1) {
114
+ // Do nothing - ignore the branch starting from cp2 since it
115
+ // is terminating.
116
+ } else if (cp2.next !== cp1) {
117
+ // At this stage (cpNode.next !== cp2 && cp2.next !== cp1)
118
+ // so it is a bifurcation point - cut the edge.
119
+ cut = true;
120
+ }
121
+ }
122
+
123
+ if (cut) {
124
+ cp1.next = cpNode;
125
+ cpNode.prev = cp1;
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ }
131
+ */
132
+ export { cull };
133
133
  //# sourceMappingURL=cull.js.map
@@ -1,8 +1,8 @@
1
- import { Mat } from '../mat.js';
2
- /**
3
- * Trims the given Medial Axis Transform so that only cycles remain. Similar to
4
- * toScaleAxis(mat, Number.POSITIVE_INFINITY).
5
- * @param mat The MAT to trim.
6
- */
7
- declare function trimMat(mat: Mat): Mat;
8
- export { trimMat };
1
+ import { Mat } from '../mat.js';
2
+ /**
3
+ * Trims the given Medial Axis Transform so that only cycles remain. Similar to
4
+ * toScaleAxis(mat, Number.POSITIVE_INFINITY).
5
+ * @param mat The MAT to trim.
6
+ */
7
+ declare function trimMat(mat: Mat): Mat;
8
+ export { trimMat };
@@ -1,17 +1,17 @@
1
- import { createNewCpTree } from './create-new-cp-tree.js';
2
- import { cullNonCycles } from './to-scale-axis/cull-non-cycles.js';
3
- import { clone } from '../cp-node/clone.js';
4
- /**
5
- * Trims the given Medial Axis Transform so that only cycles remain. Similar to
6
- * toScaleAxis(mat, Number.POSITIVE_INFINITY).
7
- * @param mat The MAT to trim.
8
- */
9
- function trimMat(mat) {
10
- const cpNode = cullNonCycles(clone(mat.cpNode));
11
- if (!cpNode) {
12
- return undefined;
13
- }
14
- return { cpNode, cpTrees: createNewCpTree(cpNode) };
15
- }
16
- export { trimMat };
1
+ import { createNewCpTree } from './create-new-cp-tree.js';
2
+ import { cullNonCycles } from './to-scale-axis/cull-non-cycles.js';
3
+ import { clone } from '../cp-node/clone.js';
4
+ /**
5
+ * Trims the given Medial Axis Transform so that only cycles remain. Similar to
6
+ * toScaleAxis(mat, Number.POSITIVE_INFINITY).
7
+ * @param mat The MAT to trim.
8
+ */
9
+ function trimMat(mat) {
10
+ const cpNode = cullNonCycles(clone(mat.cpNode));
11
+ if (!cpNode) {
12
+ return undefined;
13
+ }
14
+ return { cpNode, cpTrees: createNewCpTree(cpNode) };
15
+ }
16
+ export { trimMat };
17
17
  //# sourceMappingURL=trim-mat.js.map
package/node/mat.d.ts CHANGED
@@ -1,22 +1,22 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { CpNode } from './cp-node.js';
3
- import { Loop } from './loop.js';
4
- /**
5
- * Represents a complete Medial Axis Transform (MAT).
6
- *
7
- * The MAT is fully described through its [[CpNode]] property. The [[cpTrees]]
8
- * property is only added to facilitate extension of the MAT, e.g. by adding
9
- * extra maximal disks and is typically not used. See [[CpNode]] for more
10
- * details.
11
- */
12
- interface Mat {
13
- /** A complete representation of the MAT. See [[CpNode]]. */
14
- cpNode: CpNode;
15
- /**
16
- * Primarily for internal use. A tree structure storing the
17
- * [[CpNode]]s of the MAT by their compare order, i.e. their cyclic order
18
- * around the shape boundary.
19
- */
20
- cpTrees: Map<Loop, LlRbTree<CpNode>>;
21
- }
22
- export { Mat };
1
+ import { LlRbTree } from 'flo-ll-rb-tree';
2
+ import { CpNode } from './cp-node.js';
3
+ import { Loop } from './loop.js';
4
+ /**
5
+ * Represents a complete Medial Axis Transform (MAT).
6
+ *
7
+ * The MAT is fully described through its [[CpNode]] property. The [[cpTrees]]
8
+ * property is only added to facilitate extension of the MAT, e.g. by adding
9
+ * extra maximal disks and is typically not used. See [[CpNode]] for more
10
+ * details.
11
+ */
12
+ interface Mat {
13
+ /** A complete representation of the MAT. See [[CpNode]]. */
14
+ cpNode: CpNode;
15
+ /**
16
+ * Primarily for internal use. A tree structure storing the
17
+ * [[CpNode]]s of the MAT by their compare order, i.e. their cyclic order
18
+ * around the shape boundary.
19
+ */
20
+ cpTrees: Map<Loop, LlRbTree<CpNode>>;
21
+ }
22
+ export { Mat };
package/node/mat.js CHANGED
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=mat.js.map
@@ -1,73 +1,73 @@
1
- import { Curve } from './curve.js';
2
- import { Circle } from './circle.js';
3
- interface IPointOnShape {
4
- /** The [[ICurve]] on the shape boundary this points belong to. */
5
- curve: Curve;
6
- /** The bezier parameter value on the curve identifying the point coordinates. */
7
- t: number;
8
- p: number[];
9
- }
10
- /**
11
- * Represents a point on the shape boundary for which MAT vertex information
12
- * has not *necessarily* been calculated.
13
- */
14
- declare class PointOnShape implements IPointOnShape {
15
- readonly curve: Curve;
16
- readonly t: number;
17
- /**
18
- * @param curve The [[ICurve]] on the shape boundary this points belong to.
19
- * @param t The bezier parameter value on the curve to identify the point
20
- * coordinates.
21
- */
22
- constructor(curve: Curve, t: number);
23
- private p_;
24
- /**
25
- * The planar point coordinates of this [[PointOnShape]].
26
- */
27
- get p(): number[];
28
- }
29
- /**
30
- * @hidden
31
- */
32
- declare const isPosSharpCorner: (a: IPointOnShape) => boolean;
33
- /**
34
- * @hidden
35
- */
36
- declare const isPosDullCorner: (a: IPointOnShape) => boolean;
37
- /**
38
- * @hidden
39
- */
40
- declare const isPosQuiteSharpCorner: (a: IPointOnShape) => boolean;
41
- /**
42
- * @hidden
43
- */
44
- declare const isPosQuiteDullCorner: (a: IPointOnShape) => boolean;
45
- /**
46
- * Returns a human-readable string of the given [[PointOnShape]].
47
- * For debugging only.
48
- * @hidden
49
- */
50
- declare function posToHumanString(pos: IPointOnShape): string;
51
- /**
52
- * @hidden
53
- * Calculates the order (to distinguish between points lying on top of each
54
- * other) of the contact point if it is a dull corner.
55
- * @param pos
56
- */
57
- declare function calcPosOrder(circle: Circle, pos: IPointOnShape): number;
58
- /**
59
- * Compares two [[PointOnShape]]s according to their cyclic ordering imposed
60
- * by their relative positions on the shape boundary.
61
- * @param a The first [[PointOnShape]].
62
- * @param b The second [[PointOnShape]].
63
- * @hidden
64
- */
65
- declare function comparePoss(a: IPointOnShape, b: IPointOnShape): number;
66
- /**
67
- * Returns the osculating circle at this point of the curve.
68
- * @param maxOsculatingCircleRadius If not Number.POSITIVE_INFINITY then the
69
- * circle radius will be limited to this value.
70
- * @param pos The [[PointOnShape]] identifying the point.
71
- */
72
- declare function getOsculatingCircle(maxOsculatingCircleRadius: number, pos: IPointOnShape): Circle;
73
- export { IPointOnShape, PointOnShape, getOsculatingCircle, comparePoss, calcPosOrder, posToHumanString, isPosSharpCorner, isPosDullCorner, isPosQuiteSharpCorner, isPosQuiteDullCorner };
1
+ import { Curve } from './curve.js';
2
+ import { Circle } from './circle.js';
3
+ interface IPointOnShape {
4
+ /** The [[ICurve]] on the shape boundary this points belong to. */
5
+ curve: Curve;
6
+ /** The bezier parameter value on the curve identifying the point coordinates. */
7
+ t: number;
8
+ p: number[];
9
+ }
10
+ /**
11
+ * Represents a point on the shape boundary for which MAT vertex information
12
+ * has not *necessarily* been calculated.
13
+ */
14
+ declare class PointOnShape implements IPointOnShape {
15
+ readonly curve: Curve;
16
+ readonly t: number;
17
+ /**
18
+ * @param curve The [[ICurve]] on the shape boundary this points belong to.
19
+ * @param t The bezier parameter value on the curve to identify the point
20
+ * coordinates.
21
+ */
22
+ constructor(curve: Curve, t: number);
23
+ private p_;
24
+ /**
25
+ * The planar point coordinates of this [[PointOnShape]].
26
+ */
27
+ get p(): number[];
28
+ }
29
+ /**
30
+ * @hidden
31
+ */
32
+ declare const isPosSharpCorner: (a: IPointOnShape) => boolean;
33
+ /**
34
+ * @hidden
35
+ */
36
+ declare const isPosDullCorner: (a: IPointOnShape) => boolean;
37
+ /**
38
+ * @hidden
39
+ */
40
+ declare const isPosQuiteSharpCorner: (a: IPointOnShape) => boolean;
41
+ /**
42
+ * @hidden
43
+ */
44
+ declare const isPosQuiteDullCorner: (a: IPointOnShape) => boolean;
45
+ /**
46
+ * Returns a human-readable string of the given [[PointOnShape]].
47
+ * For debugging only.
48
+ * @hidden
49
+ */
50
+ declare function posToHumanString(pos: IPointOnShape): string;
51
+ /**
52
+ * @hidden
53
+ * Calculates the order (to distinguish between points lying on top of each
54
+ * other) of the contact point if it is a dull corner.
55
+ * @param pos
56
+ */
57
+ declare function calcPosOrder(circle: Circle, pos: IPointOnShape): number;
58
+ /**
59
+ * Compares two [[PointOnShape]]s according to their cyclic ordering imposed
60
+ * by their relative positions on the shape boundary.
61
+ * @param a The first [[PointOnShape]].
62
+ * @param b The second [[PointOnShape]].
63
+ * @hidden
64
+ */
65
+ declare function comparePoss(a: IPointOnShape, b: IPointOnShape): number;
66
+ /**
67
+ * Returns the osculating circle at this point of the curve.
68
+ * @param maxOsculatingCircleRadius If not Number.POSITIVE_INFINITY then the
69
+ * circle radius will be limited to this value.
70
+ * @param pos The [[PointOnShape]] identifying the point.
71
+ */
72
+ declare function getOsculatingCircle(maxOsculatingCircleRadius: number, pos: IPointOnShape): Circle;
73
+ export { IPointOnShape, PointOnShape, getOsculatingCircle, comparePoss, calcPosOrder, posToHumanString, isPosSharpCorner, isPosDullCorner, isPosQuiteSharpCorner, isPosQuiteDullCorner };