flo-mat 3.0.7 → 3.0.10

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 (117) hide show
  1. package/browser/index.js +215 -208
  2. package/browser/index.min.js +1 -1
  3. package/node/closest-boundary-point/cull-bezier-pieces.d.ts +5 -4
  4. package/node/closest-boundary-point/cull-bezier-pieces.js +9 -8
  5. package/node/closest-boundary-point/cull-bezier-pieces.js.map +1 -1
  6. package/node/closest-boundary-point/cull-by-loose-bounding-box.d.ts +2 -2
  7. package/node/closest-boundary-point/cull-by-loose-bounding-box.js +8 -8
  8. package/node/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -1
  9. package/node/closest-boundary-point/cull-by-tight-boundary-box.d.ts +2 -2
  10. package/node/closest-boundary-point/cull-by-tight-boundary-box.js +8 -8
  11. package/node/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -1
  12. package/node/closest-boundary-point/get-best-distance-squared.d.ts +1 -1
  13. package/node/closest-boundary-point/get-best-distance-squared.js +6 -6
  14. package/node/closest-boundary-point/get-best-distance-squared.js.map +1 -1
  15. package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +2 -2
  16. package/node/closest-boundary-point/get-close-boundary-points-certified.js +7 -7
  17. package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
  18. package/node/cp-node/cp-node-fs.d.ts +11 -11
  19. package/node/cp-node/cp-node-fs.js +11 -11
  20. package/node/cp-node/cp-node.d.ts +15 -15
  21. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.d.ts +1 -1
  22. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js +11 -16
  23. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js.map +1 -1
  24. package/node/cp-node/fs/get-boundary-beziers-between.js +4 -6
  25. package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -1
  26. package/node/cp-node/fs/get-boundary-beziers-to-next.d.ts +10 -1
  27. package/node/cp-node/fs/get-boundary-beziers-to-next.js +70 -35
  28. package/node/cp-node/fs/get-boundary-beziers-to-next.js.map +1 -1
  29. package/node/cp-node/fs/get-salience.js +2 -2
  30. package/node/cp-node/fs/get-salience.js.map +1 -1
  31. package/node/cp-node/fs/get-speed.js +0 -1
  32. package/node/cp-node/fs/get-speed.js.map +1 -1
  33. package/node/find-2-prong/cull-bezier-pieces.d.ts +4 -4
  34. package/node/find-2-prong/cull-bezier-pieces.js +9 -9
  35. package/node/find-2-prong/cull-bezier-pieces.js.map +1 -1
  36. package/node/find-2-prong/find-2-prong.js +8 -8
  37. package/node/find-2-prong/find-2-prong.js.map +1 -1
  38. package/node/find-2-prong/get-initial-bezier-pieces.d.ts +2 -2
  39. package/node/find-2-prong/get-initial-bezier-pieces.js +2 -2
  40. package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
  41. package/node/find-2-prong/reduce-radius.d.ts +1 -1
  42. package/node/find-2-prong/reduce-radius.js +5 -5
  43. package/node/find-2-prong/reduce-radius.js.map +1 -1
  44. package/node/find-3-prong.ts/calc-better-x.d.ts +2 -2
  45. package/node/find-3-prong.ts/calc-better-x.js +3 -3
  46. package/node/find-3-prong.ts/calc-better-x.js.map +1 -1
  47. package/node/find-3-prong.ts/calc-initial-3-prong-center.d.ts +2 -2
  48. package/node/find-3-prong.ts/calc-initial-3-prong-center.js +3 -3
  49. package/node/find-3-prong.ts/calc-initial-3-prong-center.js.map +1 -1
  50. package/node/find-3-prong.ts/find-3-prong-for-delta3s.d.ts +2 -2
  51. package/node/find-3-prong.ts/find-3-prong-for-delta3s.js +16 -16
  52. package/node/find-3-prong.ts/find-3-prong-for-delta3s.js.map +1 -1
  53. package/node/find-3-prong.ts/find-3-prong.js +2 -2
  54. package/node/find-3-prong.ts/find-3-prong.js.map +1 -1
  55. package/node/find-3-prong.ts/get-closest-points.d.ts +2 -2
  56. package/node/find-3-prong.ts/get-closest-points.js +4 -4
  57. package/node/find-3-prong.ts/get-closest-points.js.map +1 -1
  58. package/node/find-mat/find-mat.js +4 -0
  59. package/node/find-mat/find-mat.js.map +1 -1
  60. package/node/find-mat/get-meta.js.map +1 -1
  61. package/node/index.d.ts +1 -0
  62. package/node/index.js +1 -1
  63. package/node/index.js.map +1 -1
  64. package/node/mat/get-boundary-piece-beziers.js +7 -7
  65. package/node/mat/get-boundary-piece-beziers.js.map +1 -1
  66. package/node/mat/mat.d.ts +1 -1
  67. package/node/point-on-shape/compare-poss.d.ts +3 -3
  68. package/node/point-on-shape/compare-poss.js +3 -3
  69. package/node/point-on-shape/get-osculating-circle.d.ts +1 -1
  70. package/node/point-on-shape/get-osculating-circle.js +1 -1
  71. package/node/point-on-shape/pos-to-human-string.d.ts +1 -1
  72. package/node/point-on-shape/pos-to-human-string.js +1 -1
  73. package/node/sat/cull.d.ts +7 -5
  74. package/node/sat/cull.js +7 -4
  75. package/node/sat/cull.js.map +1 -1
  76. package/node/sat/to-scale-axis.d.ts +3 -2
  77. package/node/sat/to-scale-axis.js +3 -2
  78. package/node/sat/to-scale-axis.js.map +1 -1
  79. package/package.json +5 -5
  80. package/src/closest-boundary-point/cull-bezier-pieces.ts +12 -11
  81. package/src/closest-boundary-point/cull-by-loose-bounding-box.ts +8 -8
  82. package/src/closest-boundary-point/cull-by-tight-boundary-box.ts +8 -8
  83. package/src/closest-boundary-point/get-best-distance-squared.ts +6 -6
  84. package/src/closest-boundary-point/get-close-boundary-points-certified.ts +8 -8
  85. package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +12 -18
  86. package/src/cp-node/fs/get-boundary-beziers-between.ts +6 -7
  87. package/src/cp-node/fs/get-boundary-beziers-to-next.ts +79 -53
  88. package/src/cp-node/fs/get-salience.ts +2 -2
  89. package/src/cp-node/fs/get-speed.ts +1 -6
  90. package/src/curve/curve.ts +5 -5
  91. package/src/debug/functions/draw-elem/two-prong.ts +40 -40
  92. package/src/debug/functions/two-prong.ts +195 -195
  93. package/src/debug/two-prong-for-debugging.ts +26 -26
  94. package/src/find-2-prong/add-debug-info.ts +38 -38
  95. package/src/find-2-prong/cull-bezier-pieces.ts +10 -10
  96. package/src/find-2-prong/find-2-prong.ts +8 -8
  97. package/src/find-2-prong/get-initial-bezier-pieces.ts +2 -2
  98. package/src/find-2-prong/reduce-radius.ts +5 -5
  99. package/src/find-3-prong.ts/calc-better-x.ts +3 -3
  100. package/src/find-3-prong.ts/calc-initial-3-prong-center.ts +3 -3
  101. package/src/find-3-prong.ts/find-3-prong-for-delta3s.ts +16 -16
  102. package/src/find-3-prong.ts/find-3-prong.ts +2 -2
  103. package/src/find-3-prong.ts/get-closest-points.ts +4 -4
  104. package/src/find-mat/add-2-prongs-by-error.ts +7 -7
  105. package/src/find-mat/find-mat.ts +6 -0
  106. package/src/find-mat/get-meta.ts +7 -1
  107. package/src/index.ts +2 -2
  108. package/src/mat/get-boundary-piece-beziers.ts +7 -7
  109. package/src/mat/get-two-prong-type.ts +8 -8
  110. package/src/sat/cull.ts +10 -7
  111. package/src/sat/to-scale-axis.ts +18 -17
  112. package/src/utils/bezier-piece-to-bezier.ts +7 -7
  113. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.d.ts +0 -3
  114. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js +0 -6
  115. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js.map +0 -1
  116. package/src/closest-boundary-point/get-closest-boundary-point-certified.ts +0 -70
  117. package/src/cp-node/fs/cp-nodes-to-boundary-beziers.ts +0 -10
@@ -1,203 +1,203 @@
1
- declare let _debug_: Debug;
2
-
3
- import { drawFs } from 'flo-draw';
4
- import { getObjClosestTo, distanceBetween, squaredDistanceBetween } from 'flo-vector2d';
5
- import { Debug, Generated } from '../debug.js';
6
- import { CpNode } from '../../cp-node/cp-node.js';
7
- import { Circle } from '../../geometry/circle.js';
8
- import { TwoProngForDebugging } from '../two-prong-for-debugging.js';
9
- import { ElemType_TwoProng } from '../../mat/elem-type-two-prong.js';
10
-
11
-
12
- /** @internal */
13
- interface ITwoProngDebugFunctions {
14
- logδ : (n: number, type?: ElemType_TwoProng) => void,
15
- log : (n: number, type?: ElemType_TwoProng) => void,
16
- drawNormal : typeof drawNormal,
17
- logδBasic : (n: number) => void,
18
- logNearest : (
19
- showSpokes? : boolean,
20
- showTrace? : boolean,
21
- showBoundaries? : boolean
22
- ) => (g: SVGGElement, p: number[], showDelay?: number, scale?: number) => void,
23
- traceConvergence: typeof traceConvergence,
24
- }
25
-
26
-
27
- /**
28
- * @internal
29
- */
30
- function logδ(n: number, type: ElemType_TwoProng = 'twoProng_regular') {
31
- const δ =_debug_.generated.elems[type][n].δ;
1
+ // declare let _debug_: Debug;
2
+
3
+ // import { drawFs } from 'flo-draw';
4
+ // import { getObjClosestTo, distanceBetween, squaredDistanceBetween } from 'flo-vector2d';
5
+ // import { Debug, Generated } from '../debug.js';
6
+ // import { CpNode } from '../../cp-node/cp-node.js';
7
+ // import { Circle } from '../../geometry/circle.js';
8
+ // import { TwoProngForDebugging } from '../two-prong-for-debugging.js';
9
+ // import { ElemType_TwoProng } from '../../mat/elem-type-two-prong.js';
10
+
11
+
12
+ // /** @internal */
13
+ // interface ITwoProngDebugFunctions {
14
+ // logδ : (n: number, type?: ElemType_TwoProng) => void,
15
+ // log : (n: number, type?: ElemType_TwoProng) => void,
16
+ // drawNormal : typeof drawNormal,
17
+ // logδBasic : (n: number) => void,
18
+ // logNearest : (
19
+ // showSpokes? : boolean,
20
+ // showTrace? : boolean,
21
+ // showBoundaries? : boolean
22
+ // ) => (g: SVGGElement, p: number[], showDelay?: number, scale?: number) => void,
23
+ // traceConvergence: typeof traceConvergence,
24
+ // }
25
+
26
+
27
+ // /**
28
+ // * @internal
29
+ // */
30
+ // function logδ(n: number, type: ElemType_TwoProng = 'twoProng_regular') {
31
+ // const δ =_debug_.generated.elems[type][n].δ;
32
32
 
33
- console.log(δ);
34
- }
35
-
36
-
37
- /**
38
- * @internal
39
- */
40
- function log(n: number, type: ElemType_TwoProng = 'twoProng_regular') {
41
- const twoProng = _debug_.generated.elems[type][n];
42
- console.log(twoProng);
43
- }
44
-
45
-
46
- /**
47
- * @internal
48
- */
49
- function drawNormal(
50
- g: SVGGElement,
51
- twoProng: TwoProngForDebugging,
52
- showDelay = 1000) {
53
-
54
- drawFs.line(
55
- g, [twoProng.pos.p, twoProng.circle.center], 'thin10 blue', showDelay
56
- );
57
- }
58
-
59
-
60
- /**
61
- * @internal
62
- */
63
- function logδBasic(
64
- n: number,
65
- type: ElemType_TwoProng = 'twoProng_regular') {
66
-
67
- const delta = _debug_.generated.elems[type][n].δ;
68
-
69
- function logδBasic_(x: CpNode) {
70
- const pos = x.cp.pointOnShape;
71
- return {
72
- bez: pos.curve.ps,
73
- t: pos.t
74
- }
75
- }
33
+ // console.log(δ);
34
+ // }
35
+
36
+
37
+ // /**
38
+ // * @internal
39
+ // */
40
+ // function log(n: number, type: ElemType_TwoProng = 'twoProng_regular') {
41
+ // const twoProng = _debug_.generated.elems[type][n];
42
+ // console.log(twoProng);
43
+ // }
44
+
45
+
46
+ // /**
47
+ // * @internal
48
+ // */
49
+ // function drawNormal(
50
+ // g: SVGGElement,
51
+ // twoProng: TwoProngForDebugging,
52
+ // showDelay = 1000) {
53
+
54
+ // drawFs.line(
55
+ // g, [twoProng.pos.p, twoProng.circle.center], 'thin10 blue', showDelay
56
+ // );
57
+ // }
58
+
59
+
60
+ // /**
61
+ // * @internal
62
+ // */
63
+ // function logδBasic(
64
+ // n: number,
65
+ // type: ElemType_TwoProng = 'twoProng_regular') {
66
+
67
+ // const delta = _debug_.generated.elems[type][n].δ;
68
+
69
+ // function logδBasic_(x: CpNode) {
70
+ // const pos = x.cp.pointOnShape;
71
+ // return {
72
+ // bez: pos.curve.ps,
73
+ // t: pos.t
74
+ // }
75
+ // }
76
76
 
77
- console.log(logδBasic_(delta[0]));
78
- console.log(logδBasic_(delta[1]));
79
- }
80
-
81
-
82
- /**
83
- * @internal
84
- * Draws 3 lines from the given 3-prong center to its 3 contact points.
85
- * @param n - The 3-prong's zero-based index.
86
- */
87
- function drawSpokes(
88
- g: SVGGElement,
89
- twoProng: TwoProngForDebugging,
90
- showDelay = 1000): void {
91
-
92
- const cc = twoProng.circle.center;
93
- const { pos, circle, cpNode, xs, z, δ } = twoProng;
77
+ // console.log(logδBasic_(delta[0]));
78
+ // console.log(logδBasic_(delta[1]));
79
+ // }
80
+
81
+
82
+ // /**
83
+ // * @internal
84
+ // * Draws 3 lines from the given 3-prong center to its 3 contact points.
85
+ // * @param n - The 3-prong's zero-based index.
86
+ // */
87
+ // function drawSpokes(
88
+ // g: SVGGElement,
89
+ // twoProng: TwoProngForDebugging,
90
+ // showDelay = 1000): void {
91
+
92
+ // const cc = twoProng.circle.center;
93
+ // const { pos, circle, cpNode, xs, z, δ } = twoProng;
94
94
 
95
- drawFs.line(g, [pos.p, cc], 'thin5 red', showDelay);
96
- drawFs.line(g, [z, cc], 'thin5 red', showDelay);
97
- }
98
-
99
-
100
- /**
101
- * @internal
102
- */
103
- function logNearest(
104
- showSpokes?: boolean,
105
- showTrace?: boolean,
106
- showBoundaries?: boolean) {
95
+ // drawFs.line(g, [pos.p, cc], 'thin5 red', showDelay);
96
+ // drawFs.line(g, [z, cc], 'thin5 red', showDelay);
97
+ // }
98
+
99
+
100
+ // /**
101
+ // * @internal
102
+ // */
103
+ // function logNearest(
104
+ // showSpokes?: boolean,
105
+ // showTrace?: boolean,
106
+ // showBoundaries?: boolean) {
107
107
 
108
- return (g: SVGGElement,
109
- p: number[],
110
- showDelay = 1000,
111
- scale = 1) => {
108
+ // return (g: SVGGElement,
109
+ // p: number[],
110
+ // showDelay = 1000,
111
+ // scale = 1) => {
112
112
 
113
- const closestPerLoops: TwoProngForDebugging[] = [];
114
-
115
- const generated = _debug_.generated;
116
- const twoProng = getObjClosestTo<TwoProngForDebugging>(
117
- p,
118
- // generated.elems[type],
119
- generated.elems['twoProng_regular'],
120
- twoProng => twoProng.circle.center
121
- )!;
122
- closestPerLoops.push(twoProng!);
123
-
124
- console.log(twoProng);
113
+ // const closestPerLoops: TwoProngForDebugging[] = [];
114
+
115
+ // const generated = _debug_.generated;
116
+ // const twoProng = getObjClosestTo<TwoProngForDebugging>(
117
+ // p,
118
+ // // generated.elems[type],
119
+ // generated.elems['twoProng_regular'],
120
+ // twoProng => twoProng.circle.center
121
+ // )!;
122
+ // closestPerLoops.push(twoProng!);
123
+
124
+ // console.log(twoProng);
125
125
 
126
- let n;
127
- //for (let i=0; i<_debug_.generated.elems[type].length; i++) {
128
- // const twoProng_ = _debug_.generated.elems[type][i];
129
- for (let i=0; i<_debug_.generated.elems['twoProng_regular'].length; i++) {
130
- const twoProng_ = _debug_.generated.elems['twoProng_regular'][i];
131
- if (twoProng_ === twoProng) {
132
- n = i;
133
- break;
134
- }
135
- }
136
-
137
- if (showSpokes) {
138
- drawSpokes(g, twoProng, showDelay)
139
- }
126
+ // let n;
127
+ // //for (let i=0; i<_debug_.generated.elems[type].length; i++) {
128
+ // // const twoProng_ = _debug_.generated.elems[type][i];
129
+ // for (let i=0; i<_debug_.generated.elems['twoProng_regular'].length; i++) {
130
+ // const twoProng_ = _debug_.generated.elems['twoProng_regular'][i];
131
+ // if (twoProng_ === twoProng) {
132
+ // n = i;
133
+ // break;
134
+ // }
135
+ // }
136
+
137
+ // if (showSpokes) {
138
+ // drawSpokes(g, twoProng, showDelay)
139
+ // }
140
140
 
141
- if (n !== undefined && showTrace) {
142
- traceConvergence(g, twoProng, showDelay, scale);
143
- }
144
- }
145
- }
146
-
147
-
148
- /**
149
- * @internal
150
- * @param n - The 2-prong's zero-based index.
151
- * @param range
152
- */
153
- function traceConvergence(
154
- g: SVGGElement,
155
- twoProng: TwoProngForDebugging,
156
- showDelay = 1000,
157
- scale = 1) {
158
-
159
- const xs = twoProng.xs;
160
-
161
- console.log(twoProng);
162
- console.log(
163
- twoProng.xs.map(x => ({
164
- x: x.x,
165
- y: x.y,
166
- z: x.z,
167
- d: x.z ? squaredDistanceBetween(x.y.p, x.z.p) : 0,
168
- t: x.t,
169
- })
170
- )
171
- );
172
-
173
- console.log(xs.length)
174
- for (let i=0; i<xs.length; i++) {
175
- const x = twoProng.xs[i];
176
-
177
- const circle = { center: x.x, radius: distanceBetween(x.x, x.y.p) };
178
- drawFs.crossHair(g, x.x, 'red thin10 nofill', 0.002*scale, showDelay);
179
- drawFs.circle(g, circle, 'blue thin10 nofill', showDelay);
180
- if (x.z !== undefined) {
181
- drawFs.crossHair(
182
- g, x.z.p, 'yellow thin10 nofill', 0.001*scale, showDelay
183
- );
184
- }
185
- }
186
-
187
- // twoProngDebugFunctions.drawNormal(g, twoProng, showDelay);
188
- }
189
-
190
-
191
- /** @internal */
192
- const twoProngDebugFunctions: ITwoProngDebugFunctions = {
193
- logδ,
194
- log,
195
- drawNormal,
196
- logδBasic,
197
- traceConvergence,
198
- logNearest,
199
- }
200
-
201
-
202
- export { ITwoProngDebugFunctions, twoProngDebugFunctions };
141
+ // if (n !== undefined && showTrace) {
142
+ // traceConvergence(g, twoProng, showDelay, scale);
143
+ // }
144
+ // }
145
+ // }
146
+
147
+
148
+ // /**
149
+ // * @internal
150
+ // * @param n - The 2-prong's zero-based index.
151
+ // * @param range
152
+ // */
153
+ // function traceConvergence(
154
+ // g: SVGGElement,
155
+ // twoProng: TwoProngForDebugging,
156
+ // showDelay = 1000,
157
+ // scale = 1) {
158
+
159
+ // const xs = twoProng.xs;
160
+
161
+ // console.log(twoProng);
162
+ // console.log(
163
+ // twoProng.xs.map(x => ({
164
+ // x: x.x,
165
+ // y: x.y,
166
+ // z: x.z,
167
+ // d: x.z ? squaredDistanceBetween(x.y.p, x.z.p) : 0,
168
+ // t: x.t,
169
+ // })
170
+ // )
171
+ // );
172
+
173
+ // console.log(xs.length)
174
+ // for (let i=0; i<xs.length; i++) {
175
+ // const x = twoProng.xs[i];
176
+
177
+ // const circle = { center: x.x, radius: distanceBetween(x.x, x.y.p) };
178
+ // drawFs.crossHair(g, x.x, 'red thin10 nofill', 0.002*scale, showDelay);
179
+ // drawFs.circle(g, circle, 'blue thin10 nofill', showDelay);
180
+ // if (x.z !== undefined) {
181
+ // drawFs.crossHair(
182
+ // g, x.z.p, 'yellow thin10 nofill', 0.001*scale, showDelay
183
+ // );
184
+ // }
185
+ // }
186
+
187
+ // // twoProngDebugFunctions.drawNormal(g, twoProng, showDelay);
188
+ // }
189
+
190
+
191
+ // /** @internal */
192
+ // const twoProngDebugFunctions: ITwoProngDebugFunctions = {
193
+ // logδ,
194
+ // log,
195
+ // drawNormal,
196
+ // logδBasic,
197
+ // traceConvergence,
198
+ // logNearest,
199
+ // }
200
+
201
+
202
+ // export { ITwoProngDebugFunctions, twoProngDebugFunctions };
203
203
 
@@ -1,30 +1,30 @@
1
- import { CpNode } from '../cp-node/cp-node.js';
2
- import { PointOnShape } from '../point-on-shape/point-on-shape.js';
3
- import { Circle } from '../geometry/circle.js';
4
- import { CurvePiece } from '../mat/bezier-piece.js';
5
- import { Generated } from './debug.js';
1
+ // import { CpNode } from '../cp-node/cp-node.js';
2
+ // import { PointOnShape } from '../point-on-shape/point-on-shape.js';
3
+ // import { Circle } from '../geometry/circle.js';
4
+ // import { CurvePiece } from '../mat/bezier-piece.js';
5
+ // import { Generated } from './debug.js';
6
6
 
7
7
 
8
- /** @internal */
9
- interface TwoProngForDebugging {
10
- generated: Generated;
11
- bezierPieces: CurvePiece[];
12
- pos: PointOnShape;
13
- δ: CpNode[];
14
- z: number[];
15
- circle: Circle;
16
- xs: {
17
- x: number[];
18
- y: PointOnShape;
19
- z: PointOnShape;
20
- t: number;
21
- }[];
22
- failed: boolean;
23
- holeClosing: boolean;
24
- notAdded: boolean;
25
- deleted: boolean;
26
- cpNode: CpNode;
27
- }
8
+ // /** @internal */
9
+ // interface TwoProngForDebugging {
10
+ // generated: Generated;
11
+ // bezierPieces: CurvePiece[];
12
+ // pos: PointOnShape;
13
+ // δ: CpNode[];
14
+ // z: number[];
15
+ // circle: Circle;
16
+ // xs: {
17
+ // x: number[];
18
+ // y: PointOnShape;
19
+ // z: PointOnShape;
20
+ // t: number;
21
+ // }[];
22
+ // failed: boolean;
23
+ // holeClosing: boolean;
24
+ // notAdded: boolean;
25
+ // deleted: boolean;
26
+ // cpNode: CpNode;
27
+ // }
28
28
 
29
29
 
30
- export { TwoProngForDebugging }
30
+ // export { TwoProngForDebugging }
@@ -1,45 +1,45 @@
1
- import { PointOnShape } from '../point-on-shape/point-on-shape.js';
2
- import { Circle } from '../geometry/circle.js';
3
- import { CpNode } from '../cp-node/cp-node.js';
4
- import { CurvePiece } from '../mat/bezier-piece.js';
5
- import { TwoProngForDebugging } from '../debug/two-prong-for-debugging.js';
6
- import { getTwoProngType } from '../mat/get-two-prong-type.js';
7
- import { ElemType_TwoProng } from '../mat/elem-type-two-prong.js';
8
- import { TXForDebugging } from './x-for-debugging.js';
1
+ // import { PointOnShape } from '../point-on-shape/point-on-shape.js';
2
+ // import { Circle } from '../geometry/circle.js';
3
+ // import { CpNode } from '../cp-node/cp-node.js';
4
+ // import { CurvePiece } from '../mat/bezier-piece.js';
5
+ // import { TwoProngForDebugging } from '../debug/two-prong-for-debugging.js';
6
+ // import { getTwoProngType } from '../mat/get-two-prong-type.js';
7
+ // import { ElemType_TwoProng } from '../mat/elem-type-two-prong.js';
8
+ // import { TXForDebugging } from './x-for-debugging.js';
9
9
 
10
10
 
11
- /** @internal */
12
- function addDebugInfo(
13
- bezierPieces: CurvePiece[],
14
- failed: boolean,
15
- x: number[],
16
- y: PointOnShape,
17
- z: PointOnShape,
18
- circle: Circle,
19
- δ: CpNode[],
20
- xs: TXForDebugging[],
21
- holeClosing: boolean) {
11
+ // /** @internal */
12
+ // function addDebugInfo(
13
+ // bezierPieces: CurvePiece[],
14
+ // failed: boolean,
15
+ // x: number[],
16
+ // y: PointOnShape,
17
+ // z: PointOnShape,
18
+ // circle: Circle,
19
+ // δ: CpNode[],
20
+ // xs: TXForDebugging[],
21
+ // holeClosing: boolean) {
22
22
 
23
- // xs.push({ x, y, z, t: y.t });
23
+ // // xs.push({ x, y, z, t: y.t });
24
24
 
25
- // const twoProng: TwoProngForDebugging = {
26
- // generated: _debug_.generated,
27
- // bezierPieces,
28
- // pos: y,
29
- // δ,
30
- // z: z ? z.p : undefined!,
31
- // circle,
32
- // xs,
33
- // failed,
34
- // holeClosing,
35
- // notAdded: false,
36
- // deleted: false,
37
- // cpNode: undefined!
38
- // };
25
+ // // const twoProng: TwoProngForDebugging = {
26
+ // // generated: _debug_.generated,
27
+ // // bezierPieces,
28
+ // // pos: y,
29
+ // // δ,
30
+ // // z: z ? z.p : undefined!,
31
+ // // circle,
32
+ // // xs,
33
+ // // failed,
34
+ // // holeClosing,
35
+ // // notAdded: false,
36
+ // // deleted: false,
37
+ // // cpNode: undefined!
38
+ // // };
39
39
 
40
- // const twoProngType = getTwoProngType(twoProng) as ElemType_TwoProng;
41
- // _debug_.generated.elems[twoProngType].push(twoProng);
42
- }
40
+ // // const twoProngType = getTwoProngType(twoProng) as ElemType_TwoProng;
41
+ // // _debug_.generated.elems[twoProngType].push(twoProng);
42
+ // }
43
43
 
44
44
 
45
- export { addDebugInfo }
45
+ // export { addDebugInfo }
@@ -5,32 +5,32 @@ import { getBoundingBox$ } from '../geometry/get-bounding-box-.js';
5
5
 
6
6
  /**
7
7
  * @internal
8
- * Cull all bezierPieces not within given radius of a given point.
8
+ * Cull all curvePieces not within given radius of a given point.
9
9
  * @param extreme
10
- * @param bezierPieces
10
+ * @param curvePieces
11
11
  * @param p
12
12
  * @param rSquared
13
13
  */
14
- function cullBezierPieces2(
15
- bezierPieces: CurvePiece[],
14
+ function cullCurvePieces2(
15
+ curvePieces: CurvePiece[],
16
16
  p: number[],
17
17
  rSquared: number) {
18
18
 
19
19
  const TOLERANCE = 1 + 2**-10;
20
20
 
21
- if (bezierPieces.length <= 1) {
22
- return bezierPieces;
21
+ if (curvePieces.length <= 1) {
22
+ return curvePieces;
23
23
  }
24
24
 
25
25
 
26
26
  const newPieces = [];
27
- for (const bezierPiece of bezierPieces) {
28
- const ps = bezierPiece.curve.ps;
27
+ for (const curvePiece of curvePieces) {
28
+ const ps = curvePiece.curve.ps;
29
29
 
30
30
  const rect = getBoundingBox$(ps);
31
31
  const bd = getClosestSquareDistanceToRect(rect, p);
32
32
  if (bd <= TOLERANCE*rSquared) {
33
- newPieces.push(bezierPiece);
33
+ newPieces.push(curvePiece);
34
34
  }
35
35
  }
36
36
 
@@ -38,4 +38,4 @@ function cullBezierPieces2(
38
38
  }
39
39
 
40
40
 
41
- export { cullBezierPieces2 }
41
+ export { cullCurvePieces2 }
@@ -3,11 +3,11 @@ import { Circle } from '../geometry/circle.js';
3
3
  import { PointOnShape } from '../point-on-shape/point-on-shape.js';
4
4
  import { getOsculatingCircle } from '../point-on-shape/get-osculating-circle.js';
5
5
  import { findEquidistantPointOnLineDd } from './find-equidistant-point-on-line-dd.js';
6
- import { getInitialBezierPieces } from './get-initial-bezier-pieces.js';
6
+ import { getInitialCurvePieces } from './get-initial-bezier-pieces.js';
7
7
  import { getCloseBoundaryPointsCertified } from '../closest-boundary-point/get-close-boundary-points-certified.js';
8
8
  import { reduceRadius } from './reduce-radius.js';
9
9
  import { squaredDistanceBetweenDd } from './squared-distance-between-dd.js';
10
- import { cullBezierPieces2 } from './cull-bezier-pieces.js';
10
+ import { cullCurvePieces2 } from './cull-bezier-pieces.js';
11
11
  import { add1Prong } from './add-1-prong.js';
12
12
  import { createPos } from '../point-on-shape/create-pos.js';
13
13
  import { MatMeta } from '../mat/mat-meta.js';
@@ -67,16 +67,16 @@ function find2Prong(
67
67
 
68
68
  // The boundary piece that should contain the other point of
69
69
  // the 2-prong circle. (Defined by start and end points).
70
- let bezierPieces = getInitialBezierPieces(
70
+ let curvePieces = getInitialCurvePieces(
71
71
  angle, isHoleClosing, loop, loops, meta, y, { center: xO, radius: rO }
72
72
  );
73
- // console.log(bezierPieces.length);
73
+ // console.log(curvePieces.length);
74
74
 
75
75
  /** The center of the two-prong (successively refined) */
76
76
  let x = xO;
77
77
 
78
78
  // The lines below is an optimization.
79
- const r_ = sqrt(reduceRadius(maxCoordinate, bezierPieces, p, xO));
79
+ const r_ = sqrt(reduceRadius(maxCoordinate, curvePieces, p, xO));
80
80
  if (rO > r_) {
81
81
  x = interpolate(p, xO, r_/rO);
82
82
  }
@@ -89,11 +89,11 @@ function find2Prong(
89
89
  while (i < MAX_ITERATIONS) {
90
90
  const xy = squaredDistanceBetweenDd(x, y.p);
91
91
 
92
- if (i < 2) { bezierPieces = cullBezierPieces2(bezierPieces, x, xy); }
92
+ if (i < 2) { curvePieces = cullCurvePieces2(curvePieces, x, xy); }
93
93
  const pow = max(0,ceil(log2(maxCoordinate/xy))) + 1; // determines accuracy
94
94
  // console.log(pow);
95
95
  const _zs = getCloseBoundaryPointsCertified(
96
- pow, bezierPieces, x, y.curve, y.t,
96
+ pow, curvePieces, x, y.curve, y.t,
97
97
  for1Prong && i == 0 && rO !== 1/minCurvature,
98
98
  angle
99
99
  ).map(info => createPos(info.curve, info.t, false));
@@ -168,7 +168,7 @@ function find2Prong(
168
168
 
169
169
  const circle = { center: x, radius: distanceBetween(x, z.p) };
170
170
 
171
- // if (typeof _debug_ !== 'undefined') { addDebugInfo(bezierPieces, false, x, y, z, circle!, δ!, xs, isHoleClosing); }
171
+ // if (typeof _debug_ !== 'undefined') { addDebugInfo(curvePieces, false, x, y, z, circle!, δ!, xs, isHoleClosing); }
172
172
 
173
173
  // return { circle, zs };
174
174
  // zs = zs.filter(z => z !== undefined)
@@ -13,7 +13,7 @@ import { MatMeta } from '../index.js';
13
13
 
14
14
 
15
15
  /** @internal */
16
- function getInitialBezierPieces(
16
+ function getInitialCurvePieces(
17
17
  angle: number,
18
18
  isHoleClosing: boolean,
19
19
  loop: Loop,
@@ -54,4 +54,4 @@ function getInitialBezierPieces(
54
54
  }
55
55
 
56
56
 
57
- export { getInitialBezierPieces }
57
+ export { getInitialCurvePieces }