flo-mat 3.0.0 → 3.0.1

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.
@@ -122,15 +122,11 @@ function find2Prong(angle, loops, extreme, squaredDiagonalLength, cpTrees, y, is
122
122
  return undefined;
123
123
  }
124
124
  }
125
- // const zs_ = zs;
126
- // console.log(zs.length)
127
- // const zPos = createPos(z.curve, z.t, false);
128
125
  const circle = { center: x, radius: distanceBetween(x, z.p) };
129
126
  if (typeof _debug_ !== 'undefined') {
130
127
  addDebugInfo(bezierPieces, false, x, y, z, circle, δ, xs, isHoleClosing);
131
128
  }
132
- // return { circle, zs: zs_ };
133
- return { circle, zs: zs };
129
+ return { circle, zs: [z] };
134
130
  }
135
131
  function addDebugInfo2(isHoleClosing) {
136
132
  if (typeof _debug_ !== 'undefined') {
@@ -1 +1 @@
1
- {"version":3,"file":"find-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/find-2-prong.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAGrC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,SAAS,UAAU,CACjB,KAAa,EACb,KAAa,EACb,OAAe,EACf,qBAA6B,EAC7B,OAAmC,EAC7B,CAAe,EACrB,aAAsB,EACtB,CAAS,EACT,SAAkB;IAEnB,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,0BAA0B,GAAG,CAAC,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC,IAAE,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC;IACxC,MAAM,yBAAyB,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,CAAC,GAAC,yBAAyB,CAAC;IAEjD,IAAI,EAAY,CAAC,CAAE,mCAAmC;IACtD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,EAAU,CAAC;IACf,IAAI,aAAa,EAAE;QAClB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC;QAC9C,EAAE,GAAG,yBAAyB,CAAC;KAC/B;SAAM;QACN,IAAI,KAAK,KAAK,CAAC,EAAE;YAChB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;SACpE;aAAM;YACN,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACxB;KACD;IAED,6DAA6D;IAC7D,yDAAyD;IACzD,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,sBAAsB,CACjD,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACtE,CAAC;IAEF,yDAAyD;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;IAEX,sCAAsC;IACtC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,GAAG,EAAE,EAAE;QACZ,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAC,EAAE,CAAC,CAAC;KAC9B;IAED,6CAA6C;IAC7C,MAAM,EAAE,GAAqB,EAAE,CAAC;IAChC,2DAA2D;IAC3D,IAAI,EAAE,GAAmB,SAAU,CAAC;IACpC,IAAI,CAAC,GAAiB,SAAU,CAAC;IACjC,IAAI,aAAa,GAAG,YAAY,CAAC;IAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,cAAc,EAAE;QAC1B,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,aAAa,GAAG,iBAAiB,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SAAE;QAEvE,EAAE,GAAG,+BAA+B,CACnC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAC9B,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAC,YAAY,EAC5C,KAAK,CACL,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEV,IAAI,CAAC,KAAK,SAAS,EAAE;YACpB,aAAa,CAAC,aAAa,CAAC,CAAC;YAC7B,OAAO,SAAS,CAAC;SACjB;QAED,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9C,kBAAkB;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAE,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC9B,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9B,OAAO,SAAS,CAAC;aACjB;YACD,oBAAoB;SACpB;QAED,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;YAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAAE;QAGrG,IAAI,CAAC,aAAa,EAAE;YACnB,IAAI,EAAE,IAAI,0BAA0B,EAAE;gBACrC,qGAAqG;gBACrG,OAAO,SAAS,CAAC;aACjB;SACD;QAED,2DAA2D;QAC3D,qDAAqD;QACrD,MAAM,KAAK,GAAG,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,qCAAqC;QAErC,CAAC,GAAG,KAAK,CAAC;QAEV,IAAI,KAAK,GAAG,cAAc,EAAE;YAC3B,MAAM;SACN;QAED,CAAC,EAAE,CAAC;QAEJ,IAAI,CAAC,KAAK,cAAc,EAAE;YACzB,4BAA4B;YAC5B,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;gBAAE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;aAAE;YAC7F,OAAO,SAAS,CAAC;SACjB;KACD;IAED,kBAAkB;IAClB,yBAAyB;IACzB,+CAA+C;IAE/C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9D,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;QAAE,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAO,EAAE,CAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;KAAE;IAEnH,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,CAAC;AAGD,SAAS,aAAa,CAAC,aAAsB;IAC5C,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACtC,MAAM,IAAI,GAAG,aAAa,CAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAA;QACjF,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,OAAO,CAAC,CAAC;KACrD;AACF,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"find-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/find-2-prong.ts"],"names":[],"mappings":"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"}
package/node/sat/cull.js CHANGED
@@ -59,75 +59,5 @@ function cull(culls, maxCpNode) {
59
59
  }
60
60
  }
61
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
62
  export { cull };
133
63
  //# sourceMappingURL=cull.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cull.js","sourceRoot":"","sources":["../../src/sat/cull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAU,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG/D;;;;;;;GAOG;AACH,SAAS,IAAI,CACL,KAAkB,EAClB,SAAiB;IAErB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,SAAS,kBAAkB,CAAC,OAAe;QAC7C,IAAI,EAAE,GAAG,OAAO,CAAC;QAEX,MAAM,GAAG,GAAa,EAAE,CAAC;QAC/B,GAAG;YACO,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,YAAY,EAAE;gBAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChB;YACV,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC;SACrB,QAAQ,EAAE,KAAK,OAAO,CAAC,YAAY,EAAC;QAErC,OAAO,GAAG,CAAC;IACT,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAG,CAAC;QAE3B,qBAAqB;QACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,SAAS;SAAE;QAE5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAC5B,SAAS;SACZ;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc;QAEtC,OAAO,IAAI,EAAE;YACT,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;YAEhC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC9B,qDAAqD;gBACrD,GAAG,GAAG,IAAI,CAAC;aACd;iBAAM,IAAI,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;gBAC1C,GAAG,GAAG,IAAI,CAAC,CAAC,0CAA0C;aACzD;iBAAM;gBACH,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAEvC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBACnB;qBAAM;oBACH,GAAG,GAAG,IAAI,CAAC;iBACd;aACJ;YAED,IAAI,GAAG,EAAE;gBACL,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;gBAClB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;gBAClB,MAAM;aACT;SACJ;KACJ;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEE;AAGF,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"cull.js","sourceRoot":"","sources":["../../src/sat/cull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAU,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG/D;;;;;;;GAOG;AACH,SAAS,IAAI,CACL,KAAkB,EAClB,SAAiB;IAErB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,SAAS,kBAAkB,CAAC,OAAe;QAC7C,IAAI,EAAE,GAAG,OAAO,CAAC;QAEX,MAAM,GAAG,GAAa,EAAE,CAAC;QAC/B,GAAG;YACO,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,YAAY,EAAE;gBAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChB;YACV,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC;SACrB,QAAQ,EAAE,KAAK,OAAO,CAAC,YAAY,EAAC;QAErC,OAAO,GAAG,CAAC;IACT,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAG,CAAC;QAE3B,qBAAqB;QACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,SAAS;SAAE;QAE5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAC5B,SAAS;SACZ;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc;QAEtC,OAAO,IAAI,EAAE;YACT,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;YAEhC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC9B,qDAAqD;gBACrD,GAAG,GAAG,IAAI,CAAC;aACd;iBAAM,IAAI,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;gBAC1C,GAAG,GAAG,IAAI,CAAC,CAAC,0CAA0C;aACzD;iBAAM;gBACH,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAEvC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBACnB;qBAAM;oBACH,GAAG,GAAG,IAAI,CAAC;iBACd;aACJ;YAED,IAAI,GAAG,EAAE;gBACL,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;gBAClB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;gBAClB,MAAM;aACT;SACJ;KACJ;AACL,CAAC;AAGD,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -3,11 +3,11 @@ import { getAllOnLoop, isTerminating } from '../cp-node/cp-node.js';
3
3
  function getLeaves(cpNode) {
4
4
  const leaves = [];
5
5
  const cps = getAllOnLoop(cpNode);
6
- cps.forEach(function (cp) {
6
+ for (const cp of cps) {
7
7
  if (isTerminating(cp)) {
8
8
  leaves.push(cp);
9
9
  }
10
- });
10
+ }
11
11
  return leaves;
12
12
  }
13
13
  export { getLeaves };
@@ -1 +1 @@
1
- {"version":3,"file":"get-leaves.js","sourceRoot":"","sources":["../../src/sat/get-leaves.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG5E,gBAAgB;AAChB,SAAS,SAAS,CAAC,MAAc;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,OAAO,CAAC,UAAS,EAAE;QACnB,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnB;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"get-leaves.js","sourceRoot":"","sources":["../../src/sat/get-leaves.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG5E,gBAAgB;AAChB,SAAS,SAAS,CAAC,MAAc;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;QAClB,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnB;KACJ;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -1,5 +1,4 @@
1
1
  import { Mat } from '../mat/mat.js';
2
- /** @internal */
3
2
  /**
4
3
  * Apply and returns an enhanced version of the Scale Axis Transform (SAT) to
5
4
  * the given MAT. The returned SAT is guaranteed to be a subset of the MAT and
@@ -12,5 +11,5 @@ import { Mat } from '../mat/mat.js';
12
11
  * @param mat The Medial Axis Transform ([[Mat]]) on which to apply the SAT.
13
12
  * @param s The scale factor >= 1 (e.g. 1.3)
14
13
  */
15
- declare function toScaleAxis(mat: Mat, s: number, f?: (s: number) => (r: number) => number): Mat;
14
+ declare function toScaleAxis(mat: Mat, s: number): Mat;
16
15
  export { toScaleAxis };
@@ -8,13 +8,6 @@ import { cull } from './cull.js';
8
8
  import { addDebugInfo } from './add-debug-info.js';
9
9
  import { clone } from '../cp-node/clone.js';
10
10
  import { getCurveToNext } from '../cp-node/get-curve-to-next.js';
11
- function linearScale(s) {
12
- return function (r) {
13
- return s * r;
14
- };
15
- }
16
- /** @internal */
17
- //let len = length([0,1]);
18
11
  /**
19
12
  * Apply and returns an enhanced version of the Scale Axis Transform (SAT) to
20
13
  * the given MAT. The returned SAT is guaranteed to be a subset of the MAT and
@@ -27,7 +20,7 @@ function linearScale(s) {
27
20
  * @param mat The Medial Axis Transform ([[Mat]]) on which to apply the SAT.
28
21
  * @param s The scale factor >= 1 (e.g. 1.3)
29
22
  */
30
- function toScaleAxis(mat, s, f = linearScale) {
23
+ function toScaleAxis(mat, s) {
31
24
  let timingStart = 0;
32
25
  if (typeof _debug_ !== 'undefined') {
33
26
  timingStart = performance.now();
@@ -38,7 +31,7 @@ function toScaleAxis(mat, s, f = linearScale) {
38
31
  const cpNodes = [];
39
32
  traverseVertices(clone(mat.cpNode), cpNode => { cpNodes.push(cpNode); });
40
33
  const cpNode = getLargestVertex(cpNodes);
41
- const f_ = f(s);
34
+ // console.log(cpNodes.map(c => c.cp.circle.radius).length)
42
35
  if (typeof _debug_ !== 'undefined') {
43
36
  _debug_.generated.elems.maxVertex.push(cpNode);
44
37
  }
@@ -50,11 +43,11 @@ function toScaleAxis(mat, s, f = linearScale) {
50
43
  const rMap = new Map();
51
44
  traverseEdges(cpNode, function (cpNode) {
52
45
  /** The occulating radius stored with this vertex. */
53
- const R = rMap.get(cpNode) || f_(cpNode.cp.circle.radius);
46
+ const R = rMap.get(cpNode) || (s * cpNode.cp.circle.radius);
54
47
  const cpNode_ = cpNode.next;
55
48
  const l = length([0, 1], getCurveToNext(cpNode));
56
49
  const r = cpNode_.cp.circle.radius;
57
- const r_ = f_(r);
50
+ const r_ = s * r;
58
51
  if (R - l > r_) {
59
52
  for (const cpNode of getCpNodesOnCircle(cpNode_)) {
60
53
  rMap.set(cpNode, R - l); // Update osculating radii
@@ -1 +1 @@
1
- {"version":3,"file":"to-scale-axis.js","sourceRoot":"","sources":["../../src/sat/to-scale-axis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"to-scale-axis.js","sourceRoot":"","sources":["../../src/sat/to-scale-axis.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flo-mat",
3
3
  "sideEffects": false,
4
4
  "description": "Medial / Scale Axis Transform (MAT/SAT) Library.",
5
- "version": "3.0.0",
5
+ "version": "3.0.1",
6
6
  "author": {
7
7
  "name": "Floris Steenkamp"
8
8
  },
@@ -46,8 +46,8 @@
46
46
  "@types/chai": "^4.3.5",
47
47
  "@types/mocha": "^10.0.1",
48
48
  "@types/node": "^20.4.8",
49
- "@typescript-eslint/eslint-plugin": "^6.2.1",
50
- "@typescript-eslint/parser": "^6.2.1",
49
+ "@typescript-eslint/eslint-plugin": "^6.3.0",
50
+ "@typescript-eslint/parser": "^6.3.0",
51
51
  "c8": "^8.0.1",
52
52
  "chai": "^4.3.7",
53
53
  "circular-dependency-plugin": "^5.2.2",
@@ -166,16 +166,11 @@ function find2Prong(
166
166
  }
167
167
  }
168
168
 
169
- // const zs_ = zs;
170
- // console.log(zs.length)
171
- // const zPos = createPos(z.curve, z.t, false);
172
-
173
169
  const circle = { center: x, radius: distanceBetween(x, z.p) };
174
170
 
175
171
  if (typeof _debug_ !== 'undefined') { addDebugInfo(bezierPieces, false, x, y, z, circle!, δ!, xs, isHoleClosing); }
176
172
 
177
- // return { circle, zs: zs_ };
178
- return { circle, zs: zs };
173
+ return { circle, zs: [z] };
179
174
  }
180
175
 
181
176
 
package/src/sat/cull.ts CHANGED
@@ -72,76 +72,5 @@ function cull(
72
72
  }
73
73
  }
74
74
 
75
- /*
76
- function cull(
77
- culls: Set<Circle>,
78
- maxCpNode: CpNode) {
79
-
80
- let leaves = getLeaves(maxCpNode);
81
-
82
- function getNonTrivialBranches(cpStart: CpNode) {
83
- let cp = cpStart.next;
84
-
85
- let cps: CpNode[] = [];
86
- do {
87
- if (cp.next !== cp.nextOnCircle) {
88
- cps.push(cp);
89
- }
90
- cp = cp.nextOnCircle;
91
- } while (cp !== cpStart)
92
-
93
- return cps;
94
- }
95
-
96
- while (leaves.length) {
97
- let leaf = leaves.pop();
98
-
99
- // Preserve topology.
100
- if (leaf.isHoleClosing || leaf.isIntersection) { continue; }
101
-
102
- if (!culls.has(leaf.cp.circle)) {
103
- continue;
104
- }
105
-
106
- let cpNode = leaf.next; // Turn around
107
-
108
- while (true) {
109
- cpNode = cpNode.next;
110
- let cut = false;
111
- let cp1 = cpNode.prevOnCircle;
112
-
113
- if (!culls.has(cpNode.cp.circle)) {
114
- // Cut the branch once a non-cull has been reached.
115
- cut = true;
116
- } else {
117
- //let cp2 = cp1.prevOnCircle;
118
- let cp2 = cpNode.nextOnCircle;
119
-
120
- //if (maxCpNode === cpNode || maxCpNode === cp1 || maxCpNode === cp2) {
121
- if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
122
- cut = true; // We are at the max disk - cut whole edge
123
- } else if (cpNode.next === cp2) {
124
- // Continue but starting from cp2
125
- cpNode = cp2;
126
- } else if (cp2.next === cp1) {
127
- // Do nothing - ignore the branch starting from cp2 since it
128
- // is terminating.
129
- } else if (cp2.next !== cp1) {
130
- // At this stage (cpNode.next !== cp2 && cp2.next !== cp1)
131
- // so it is a bifurcation point - cut the edge.
132
- cut = true;
133
- }
134
- }
135
-
136
- if (cut) {
137
- cp1.next = cpNode;
138
- cpNode.prev = cp1;
139
- break;
140
- }
141
- }
142
- }
143
- }
144
- */
145
-
146
75
 
147
76
  export { cull }
@@ -6,11 +6,11 @@ function getLeaves(cpNode: CpNode) {
6
6
  const leaves: CpNode[] = [];
7
7
 
8
8
  const cps = getAllOnLoop(cpNode);
9
- cps.forEach(function(cp) {
9
+ for (const cp of cps) {
10
10
  if (isTerminating(cp)) {
11
11
  leaves.push(cp);
12
12
  }
13
- });
13
+ }
14
14
 
15
15
  return leaves;
16
16
  }
@@ -17,17 +17,6 @@ import { clone } from '../cp-node/clone.js';
17
17
  import { getCurveToNext } from '../cp-node/get-curve-to-next.js';
18
18
 
19
19
 
20
- function linearScale(s: number) {
21
- return function(r: number) {
22
- return s*r;
23
- }
24
- }
25
-
26
-
27
- /** @internal */
28
- //let len = length([0,1]);
29
-
30
-
31
20
  /**
32
21
  * Apply and returns an enhanced version of the Scale Axis Transform (SAT) to
33
22
  * the given MAT. The returned SAT is guaranteed to be a subset of the MAT and
@@ -42,8 +31,7 @@ function linearScale(s: number) {
42
31
  */
43
32
  function toScaleAxis(
44
33
  mat: Mat,
45
- s: number,
46
- f: (s: number) => (r: number) => number = linearScale): Mat {
34
+ s: number): Mat {
47
35
 
48
36
  let timingStart = 0;
49
37
  if (typeof _debug_ !== 'undefined') {
@@ -60,7 +48,7 @@ function toScaleAxis(
60
48
  );
61
49
 
62
50
  const cpNode = getLargestVertex(cpNodes);
63
- const f_ = f(s);
51
+ // console.log(cpNodes.map(c => c.cp.circle.radius).length)
64
52
 
65
53
  if (typeof _debug_ !== 'undefined') {
66
54
  _debug_.generated.elems.maxVertex.push(cpNode);
@@ -76,14 +64,14 @@ function toScaleAxis(
76
64
 
77
65
  traverseEdges(cpNode, function(cpNode) {
78
66
  /** The occulating radius stored with this vertex. */
79
- const R = rMap.get(cpNode) || f_(cpNode.cp.circle.radius);
67
+ const R = rMap.get(cpNode) || (s*cpNode.cp.circle.radius);
80
68
 
81
69
  const cpNode_ = cpNode.next;
82
70
 
83
71
  const l = length([0,1], getCurveToNext(cpNode));
84
72
 
85
73
  const r = cpNode_.cp.circle.radius;
86
- const r_ = f_(r);
74
+ const r_ = s*r;
87
75
  if (R - l > r_) {
88
76
  for (const cpNode of getCpNodesOnCircle(cpNode_)) {
89
77
  rMap.set(cpNode, R - l); // Update osculating radii
package/src/sat/t-tree.ts DELETED
@@ -1,8 +0,0 @@
1
- import { Circle } from '../geometry/circle.js';
2
-
3
-
4
- /** @internal */
5
- export type TTree = {
6
- trees?: Map<number,TTree>,
7
- circles?: Set<Circle>
8
- }
@@ -1,34 +0,0 @@
1
- import { Circle } from '../geometry/circle.js';
2
- import { TTree } from './t-tree.js';
3
-
4
-
5
- /**
6
- * @internal
7
- * Traverses the spacial tree and calls the given callback function for each
8
- * MAT circle in the tree and iteravely for each subtree.
9
- * @param tree The spacial tree to traverse
10
- * @param f A function to call for each MAT circle in the tree.
11
- */
12
- function traverseSpacialTree(
13
- tree: TTree,
14
- f: (circle: Circle) => void) {
15
-
16
- g(tree);
17
-
18
- function g(tree: TTree) {
19
- if (!tree) { return; }
20
-
21
- if (tree.circles!.size) {
22
- tree.circles!.forEach(f);
23
-
24
- return; // Leaf reached
25
- }
26
-
27
- [5,0,2,4,1,3].forEach(
28
- i => g(tree.trees!.get(i)!)
29
- );
30
- }
31
- }
32
-
33
-
34
- export { traverseSpacialTree }