@jscad/core 2.6.1 → 2.6.2
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/CHANGELOG.md +8 -0
- package/dist/jscad-core.min.js +25 -25
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.6.2](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/core@2.6.1...@jscad/core@2.6.2) (2022-07-17)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @jscad/core
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [2.6.1](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/core@2.6.0...@jscad/core@2.6.1) (2022-06-12)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @jscad/core
|
package/dist/jscad-core.min.js
CHANGED
|
@@ -26,7 +26,7 @@ var cachedSetTimeout,cachedClearTimeout,process=module.exports={};function defau
|
|
|
26
26
|
},{}],8:[function(require,module,exports){
|
|
27
27
|
module.exports={
|
|
28
28
|
"name": "@jscad/core",
|
|
29
|
-
"version": "2.6.
|
|
29
|
+
"version": "2.6.2",
|
|
30
30
|
"description": "Core functionality for JSCAD Applications",
|
|
31
31
|
"homepage": "https://openjscad.xyz/",
|
|
32
32
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -62,9 +62,9 @@ module.exports={
|
|
|
62
62
|
"license": "MIT",
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@jscad/array-utils": "2.1.4",
|
|
65
|
-
"@jscad/io": "2.4.
|
|
66
|
-
"@jscad/io-utils": "2.0.
|
|
67
|
-
"@jscad/modeling": "2.9.
|
|
65
|
+
"@jscad/io": "2.4.1",
|
|
66
|
+
"@jscad/io-utils": "2.0.21",
|
|
67
|
+
"@jscad/modeling": "2.9.6",
|
|
68
68
|
"json5": "2.2.0",
|
|
69
69
|
"strip-bom": "4.0.0"
|
|
70
70
|
},
|
|
@@ -196,7 +196,7 @@ const zipSync=require("fflate").zipSync,strToU8=require("fflate").strToU8,string
|
|
|
196
196
|
},{"xmlchars/xml/1.0/ed5":42,"xmlchars/xml/1.1/ed2":43,"xmlchars/xmlns/1.0/ed3":44}],46:[function(require,module,exports){
|
|
197
197
|
module.exports={
|
|
198
198
|
"name": "@jscad/amf-deserializer",
|
|
199
|
-
"version": "2.3.
|
|
199
|
+
"version": "2.3.1",
|
|
200
200
|
"description": "AMF Deserializer for JSCAD",
|
|
201
201
|
"repository": "https://github.com/jscad/OpenJSCAD.org/",
|
|
202
202
|
"main": "src/index.js",
|
|
@@ -227,7 +227,7 @@ module.exports={
|
|
|
227
227
|
],
|
|
228
228
|
"license": "MIT",
|
|
229
229
|
"dependencies": {
|
|
230
|
-
"@jscad/modeling": "2.9.
|
|
230
|
+
"@jscad/modeling": "2.9.6",
|
|
231
231
|
"saxes": "5.0.1"
|
|
232
232
|
},
|
|
233
233
|
"devDependencies": {
|
|
@@ -285,7 +285,7 @@ const{geometries:geometries,maths:maths,primitives:primitives}=require("@jscad/m
|
|
|
285
285
|
},{"./helpers":59,"@jscad/modeling":212}],62:[function(require,module,exports){
|
|
286
286
|
module.exports={
|
|
287
287
|
"name": "@jscad/dxf-deserializer",
|
|
288
|
-
"version": "2.3.
|
|
288
|
+
"version": "2.3.18",
|
|
289
289
|
"description": "DXF Deserializer for JSCAD",
|
|
290
290
|
"homepage": "https://openjscad.xyz/",
|
|
291
291
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -313,7 +313,7 @@ module.exports={
|
|
|
313
313
|
],
|
|
314
314
|
"license": "MIT",
|
|
315
315
|
"dependencies": {
|
|
316
|
-
"@jscad/modeling": "2.9.
|
|
316
|
+
"@jscad/modeling": "2.9.6"
|
|
317
317
|
},
|
|
318
318
|
"devDependencies": {
|
|
319
319
|
"ava": "3.15.0",
|
|
@@ -369,7 +369,7 @@ const{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),version=req
|
|
|
369
369
|
},{"./package.json":77,"@jscad/array-utils":525}],77:[function(require,module,exports){
|
|
370
370
|
module.exports={
|
|
371
371
|
"name": "@jscad/json-deserializer",
|
|
372
|
-
"version": "2.0.
|
|
372
|
+
"version": "2.0.22",
|
|
373
373
|
"description": "JSON Deserializer for JSCAD",
|
|
374
374
|
"homepage": "https://openjscad.xyz/",
|
|
375
375
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -400,7 +400,7 @@ module.exports={
|
|
|
400
400
|
"@jscad/array-utils": "2.1.4"
|
|
401
401
|
},
|
|
402
402
|
"devDependencies": {
|
|
403
|
-
"@jscad/modeling": "2.9.
|
|
403
|
+
"@jscad/modeling": "2.9.6",
|
|
404
404
|
"ava": "3.15.0",
|
|
405
405
|
"nyc": "15.1.0"
|
|
406
406
|
},
|
|
@@ -416,7 +416,7 @@ const{colors:colors,primitives:primitives}=require("@jscad/modeling"),version=re
|
|
|
416
416
|
},{"./package.json":80,"@jscad/modeling":212}],80:[function(require,module,exports){
|
|
417
417
|
module.exports={
|
|
418
418
|
"name": "@jscad/obj-deserializer",
|
|
419
|
-
"version": "2.0.
|
|
419
|
+
"version": "2.0.21",
|
|
420
420
|
"description": "OBJ Deserializer for JSCAD",
|
|
421
421
|
"homepage": "https://openjscad.xyz/",
|
|
422
422
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -448,7 +448,7 @@ module.exports={
|
|
|
448
448
|
],
|
|
449
449
|
"license": "MIT",
|
|
450
450
|
"dependencies": {
|
|
451
|
-
"@jscad/modeling": "2.9.
|
|
451
|
+
"@jscad/modeling": "2.9.6"
|
|
452
452
|
},
|
|
453
453
|
"devDependencies": {
|
|
454
454
|
"ava": "3.15.0",
|
|
@@ -466,7 +466,7 @@ const{maths:maths,primitives:primitives}=require("@jscad/modeling"),{BinaryReade
|
|
|
466
466
|
},{"./package.json":83,"@jscad/io-utils":70,"@jscad/modeling":212}],83:[function(require,module,exports){
|
|
467
467
|
module.exports={
|
|
468
468
|
"name": "@jscad/stl-deserializer",
|
|
469
|
-
"version": "2.1.
|
|
469
|
+
"version": "2.1.18",
|
|
470
470
|
"description": "STL Deserializer for JSCAD",
|
|
471
471
|
"homepage": "https://openjscad.xyz/",
|
|
472
472
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -498,8 +498,8 @@ module.exports={
|
|
|
498
498
|
],
|
|
499
499
|
"license": "MIT",
|
|
500
500
|
"dependencies": {
|
|
501
|
-
"@jscad/io-utils": "2.0.
|
|
502
|
-
"@jscad/modeling": "2.9.
|
|
501
|
+
"@jscad/io-utils": "2.0.21",
|
|
502
|
+
"@jscad/modeling": "2.9.6"
|
|
503
503
|
},
|
|
504
504
|
"devDependencies": {
|
|
505
505
|
"ava": "3.15.0",
|
|
@@ -532,7 +532,7 @@ const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{fla
|
|
|
532
532
|
},{"xmlchars/xml/1.0/ed5":87,"xmlchars/xml/1.1/ed2":88,"xmlchars/xmlns/1.0/ed3":89}],91:[function(require,module,exports){
|
|
533
533
|
module.exports={
|
|
534
534
|
"name": "@jscad/svg-deserializer",
|
|
535
|
-
"version": "2.5.
|
|
535
|
+
"version": "2.5.1",
|
|
536
536
|
"description": "SVG Deserializer for JSCAD",
|
|
537
537
|
"homepage": "https://openjscad.xyz/",
|
|
538
538
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -565,7 +565,7 @@ module.exports={
|
|
|
565
565
|
"license": "MIT",
|
|
566
566
|
"dependencies": {
|
|
567
567
|
"@jscad/array-utils": "2.1.4",
|
|
568
|
-
"@jscad/modeling": "2.9.
|
|
568
|
+
"@jscad/modeling": "2.9.6",
|
|
569
569
|
"saxes": "5.0.1"
|
|
570
570
|
},
|
|
571
571
|
"devDependencies": {
|
|
@@ -602,7 +602,7 @@ const{geometries:geometries,maths:maths,measurements:measurements,utils:utils}=r
|
|
|
602
602
|
},{}],100:[function(require,module,exports){
|
|
603
603
|
module.exports={
|
|
604
604
|
"name": "@jscad/svg-serializer",
|
|
605
|
-
"version": "2.3.
|
|
605
|
+
"version": "2.3.9",
|
|
606
606
|
"description": "SVG Serializer for JSCAD",
|
|
607
607
|
"homepage": "https://openjscad.xyz/",
|
|
608
608
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -634,7 +634,7 @@ module.exports={
|
|
|
634
634
|
],
|
|
635
635
|
"license": "MIT",
|
|
636
636
|
"dependencies": {
|
|
637
|
-
"@jscad/modeling": "2.9.
|
|
637
|
+
"@jscad/modeling": "2.9.6",
|
|
638
638
|
"onml": "1.3.0"
|
|
639
639
|
},
|
|
640
640
|
"devDependencies": {
|
|
@@ -659,7 +659,7 @@ module.exports={
|
|
|
659
659
|
},{"xmlchars/xml/1.0/ed5":101,"xmlchars/xml/1.1/ed2":102,"xmlchars/xmlns/1.0/ed3":103}],105:[function(require,module,exports){
|
|
660
660
|
module.exports={
|
|
661
661
|
"name": "@jscad/x3d-deserializer",
|
|
662
|
-
"version": "2.2.
|
|
662
|
+
"version": "2.2.1",
|
|
663
663
|
"description": "X3D Deserializer for JSCAD",
|
|
664
664
|
"repository": "https://github.com/jscad/OpenJSCAD.org/",
|
|
665
665
|
"main": "src/index.js",
|
|
@@ -686,7 +686,7 @@ module.exports={
|
|
|
686
686
|
},
|
|
687
687
|
"dependencies": {
|
|
688
688
|
"@jscad/array-utils": "2.1.4",
|
|
689
|
-
"@jscad/modeling": "2.9.
|
|
689
|
+
"@jscad/modeling": "2.9.6",
|
|
690
690
|
"saxes": "5.0.1"
|
|
691
691
|
},
|
|
692
692
|
"devDependencies": {
|
|
@@ -897,9 +897,9 @@ const vec2=require("../../maths/vec2"),fromPoints=require("./fromPoints"),toPoin
|
|
|
897
897
|
const vec2=require("../../maths/vec2"),vec3=require("../../maths/vec2"),appendPoints=require("./appendPoints"),toPoints=require("./toPoints"),appendBezier=(e,t)=>{let{controlPoints:o,segments:r}=Object.assign({},{segments:16},e);if(!Array.isArray(o))throw new Error("controlPoints must be an array of one or more points");if(o.length<1)throw new Error("controlPoints must be an array of one or more points");if(r<4)throw new Error("segments must be four or more");if(t.isClosed)throw new Error("the given geometry cannot be closed");const n=toPoints(t);if(n.length<1)throw new Error("the given path must contain one or more points (as the starting point for the bezier curve)");if(null===(o=o.slice())[0]){if(o.length<2)throw new Error("a null control point must be passed with one more control points");let e=n[n.length-2];if("lastBezierControlPoint"in t&&(e=t.lastBezierControlPoint),!Array.isArray(e))throw new Error("the given path must contain TWO or more points if given a null control point");const r=vec2.scale(vec2.create(),n[n.length-1],2);vec2.subtract(r,r,e),o[0]=r}o.unshift(n[n.length-1]);const s=o.length-1,i=[];let c=1;for(let e=0;e<=s;++e)e>0&&(c*=e),i.push(c);const a=[];for(let e=0;e<=s;++e){const t=i[s]/(i[e]*i[s-e]);a.push(t)}const l=vec2.create(),h=vec2.create(),p=vec3.create(),u=e=>{let t=1,r=Math.pow(1-e,s);const n=1!==e?1/(1-e):1,i=vec2.create();for(let c=0;c<=s;++c){c===s&&(r=1);const h=a[c]*t*r,p=vec2.scale(l,o[c],h);vec2.add(i,i,p),t*=e,r*=n}return i},v=[],f=[],m=s+1;for(let e=0;e<m;++e){const t=e/(m-1),o=u(t);v.push(o),f.push(t)}let g=1;const w=2*Math.PI/r,P=Math.sin(w);for(;g<v.length-1;){const e=vec2.subtract(l,v[g],v[g-1]);vec2.normalize(e,e);const t=vec2.subtract(h,v[g+1],v[g]);vec2.normalize(t,t);const o=vec2.cross(p,e,t);if(Math.abs(o[2])>P){const e=f[g-1],t=f[g+1],o=e+1*(t-e)/3,r=e+2*(t-e)/3,n=u(o),s=u(r);v.splice(g,1,n,s),f.splice(g,1,o,r),--g<1&&(g=1)}else++g}v.shift();const b=appendPoints(v,t);return b.lastBezierControlPoint=o[o.length-2],b};module.exports=appendBezier;
|
|
898
898
|
|
|
899
899
|
},{"../../maths/vec2":310,"./appendPoints":173,"./toPoints":186}],173:[function(require,module,exports){
|
|
900
|
-
const
|
|
900
|
+
const concat=require("./concat"),create=require("./create"),appendPoints=(e,c)=>concat(c,create(e));module.exports=appendPoints;
|
|
901
901
|
|
|
902
|
-
},{"./
|
|
902
|
+
},{"./concat":177,"./create":178}],174:[function(require,module,exports){
|
|
903
903
|
const mat4=require("../../maths/mat4"),vec2=require("../../maths/vec2"),applyTransforms=r=>mat4.isIdentity(r.transforms)?r:(r.points=r.points.map(s=>vec2.transform(vec2.create(),s,r.transforms)),r.transforms=mat4.create(),r);module.exports=applyTransforms;
|
|
904
904
|
|
|
905
905
|
},{"../../maths/mat4":263,"../../maths/vec2":310}],175:[function(require,module,exports){
|
|
@@ -909,7 +909,7 @@ const clone=e=>Object.assign({},e);module.exports=clone;
|
|
|
909
909
|
const{EPS:EPS}=require("../../maths/constants"),vec2=require("../../maths/vec2"),clone=require("./clone"),close=e=>{if(e.isClosed)return e;const t=clone(e);if(t.isClosed=!0,t.points.length>1){const e=t.points,n=e[0];let o=e[e.length-1];for(;vec2.distance(n,o)<EPS*EPS&&(e.pop(),1!==e.length);)o=e[e.length-1]}return t};module.exports=close;
|
|
910
910
|
|
|
911
911
|
},{"../../maths/constants":214,"../../maths/vec2":310,"./clone":175}],177:[function(require,module,exports){
|
|
912
|
-
const fromPoints=require("./fromPoints"),toPoints=require("./toPoints"),{equals:equals}=require("../../maths/vec2"),concat=(...
|
|
912
|
+
const fromPoints=require("./fromPoints"),toPoints=require("./toPoints"),{equals:equals}=require("../../maths/vec2"),concat=(...t)=>{let o=!1,e=[];return t.forEach((t,n)=>{const s=toPoints(t).slice();if(e.length>0&&s.length>0&&equals(s[0],e[e.length-1])&&s.shift(),s.length>0&&o)throw new Error(`Cannot concatenate to a closed path; check the ${n}th path`);o=t.isClosed,e=e.concat(s)}),fromPoints({closed:o},e)};module.exports=concat;
|
|
913
913
|
|
|
914
914
|
},{"../../maths/vec2":310,"./fromPoints":181,"./toPoints":186}],178:[function(require,module,exports){
|
|
915
915
|
const mat4=require("../../maths/mat4"),create=e=>(void 0===e&&(e=[]),{points:e,isClosed:!1,transforms:mat4.create()});module.exports=create;
|
|
@@ -1788,7 +1788,7 @@ const flatten=require("../../utils/flatten"),measureEpsilon=require("../../measu
|
|
|
1788
1788
|
module.exports={generalize:require("./generalize"),snap:require("./snap")};
|
|
1789
1789
|
|
|
1790
1790
|
},{"./generalize":468,"./snap":474}],470:[function(require,module,exports){
|
|
1791
|
-
const constants=require("../../maths/constants"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),assert=!1,getTag=e=>`${e}`,addSide=(e,t,n,
|
|
1791
|
+
const constants=require("../../maths/constants"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),assert=!1,getTag=e=>`${e}`,addSide=(e,t,s,n,r,c)=>{const o=getTag(n),g=getTag(r);const l=`${o}/${g}`,a=`${g}/${o}`;if(e.has(a))return deleteSide(e,t,s,r,n,null),null;const i={vertex0:n,vertex1:r,polygonindex:c};return e.has(l)?e.get(l).push(i):e.set(l,[i]),t.has(o)?t.get(o).push(l):t.set(o,[l]),s.has(g)?s.get(g).push(l):s.set(g,[l]),l},deleteSide=(e,t,s,n,r,c)=>{const o=getTag(n),g=getTag(r),l=`${o}/${g}`;let a=-1;const i=e.get(l);for(let e=0;e<i.length;e++){const t=i[e];let s=getTag(t.vertex0);if(s===o&&((s=getTag(t.vertex1))===g&&(null===c||t.polygonindex===c))){a=e;break}}i.splice(a,1),0===i.length&&e.delete(l),a=t.get(o).indexOf(l),t.get(o).splice(a,1),0===t.get(o).length&&t.delete(o),a=s.get(g).indexOf(l),s.get(g).splice(a,1),0===s.get(g).length&&s.delete(g)},insertTjunctions=e=>{const t=new Map;for(let s=0;s<e.length;s++){const n=e[s],r=n.vertices.length;if(r>=3){let e=n.vertices[0],c=getTag(e);for(let o=0;o<r;o++){let g=o+1;g===r&&(g=0);const l=n.vertices[g],a=getTag(l),i=`${c}/${a}`,v=`${a}/${c}`;if(t.has(v)){const e=t.get(v);e.splice(-1,1),0===e.length&&t.delete(v)}else{const n={vertex0:e,vertex1:l,polygonindex:s};t.has(i)?t.get(i).push(n):t.set(i,[n])}e=l,c=a}}else console.warn("warning: invalid polygon found during insertTjunctions")}if(t.size>0){const s=new Map,n=new Map,r=new Map;for(const[e,c]of t)r.set(e,!0),c.forEach(t=>{const r=getTag(t.vertex0),c=getTag(t.vertex1);s.has(r)?s.get(r).push(e):s.set(r,[e]),n.has(c)?n.get(c).push(e):n.set(c,[e])});const c=e.slice(0);for(;0!==t.size;){for(const e of t.keys())r.set(e,!0);let e=!1;for(;;){const o=Array.from(r.keys());if(0===o.length)break;const g=o[0];let l=!0;if(t.has(g)){const o=t.get(g);0;const a=o[0];for(let o=0;o<2;o++){const g=0===o?a.vertex0:a.vertex1,i=0===o?a.vertex1:a.vertex0,v=getTag(g),d=getTag(i);let h=[];0===o?n.has(v)&&(h=n.get(v)):s.has(v)&&(h=s.get(v));for(let a=0;a<h.length;a++){const v=h[a],f=t.get(v)[0],u=0===o?f.vertex0:f.vertex1,x=0===o?f.vertex1:f.vertex0,p=getTag(u);getTag(x);if(p===d){deleteSide(t,s,n,g,i,null),deleteSide(t,s,n,i,g,null),l=!1,o=2,e=!0;break}{const a=g,v=i,d=u,h=vec3.subtract(vec3.create(),d,a),x=vec3.dot(vec3.subtract(vec3.create(),v,a),h)/vec3.dot(h,h);if(x>0&&x<1){const g=vec3.scale(vec3.create(),h,x);if(vec3.add(g,g,a),vec3.squaredDistance(g,v)<constants.EPS*constants.EPS){const g=f.polygonindex,a=c[g],v=getTag(f.vertex1);let d=-1;for(let e=0;e<a.vertices.length;e++)if(getTag(a.vertices[e])===v){d=e;break}0;const h=a.vertices.slice(0);h.splice(d,0,i);const u=poly3.create(h);c[g]=u,deleteSide(t,s,n,f.vertex0,f.vertex1,g);const x=addSide(t,s,n,f.vertex0,i,g),p=addSide(t,s,n,i,f.vertex1,g);null!==x&&r.set(x,!0),null!==p&&r.set(p,!0),l=!1,o=2,e=!0;break}}}}}}l&&r.delete(g)}if(!e)break}e=c}return t.clear(),e};module.exports=insertTjunctions;
|
|
1792
1792
|
|
|
1793
1793
|
},{"../../geometries/poly3":199,"../../maths/constants":214,"../../maths/vec3":341}],471:[function(require,module,exports){
|
|
1794
1794
|
const aboutEqualNormals=require("../../maths/utils/aboutEqualNormals"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),createEdges=e=>{const n=poly3.toPoints(e),t=[];for(let e=0;e<n.length;e++){const l=(e+1)%n.length,r={v1:n[e],v2:n[l]};t.push(r)}for(let e=0;e<t.length;e++){const l=(e+1)%n.length;t[e].next=t[l],t[l].prev=t[e]}return t},insertEdge=(e,n)=>{const t=`${n.v1}:${n.v2}`;e.set(t,n)},deleteEdge=(e,n)=>{const t=`${n.v1}:${n.v2}`;e.delete(t)},findOppositeEdge=(e,n)=>{const t=`${n.v2}:${n.v1}`;return e.get(t)},calculateAnglesBetween=(e,n,t)=>{let l=e.prev.v1,r=e.prev.v2,o=n.next.v2;const v=calculateAngle(l,r,o,t);return l=n.prev.v1,r=n.prev.v2,o=e.next.v2,[v,calculateAngle(l,r,o,t)]},v1=vec3.create(),v2=vec3.create(),calculateAngle=(e,n,t,l)=>{const r=vec3.subtract(v1,n,e),o=vec3.subtract(v2,t,n);return vec3.cross(r,r,o),vec3.dot(r,l)},createPolygonAnd=e=>{let n;const t=[];for(;e.next;){const n=e.next;t.push(e.v1),e.v1=null,e.v2=null,e.next=null,e.prev=null,e=n}return t.length>0&&(n=poly3.create(t)),n},mergeCoplanarPolygons=e=>{if(e.length<2)return e;const n=e[0].plane,t=e.slice(),l=new Map;for(;t.length>0;){const e=t.shift(),r=createEdges(e);for(let e=0;e<r.length;e++){const t=r[e],o=findOppositeEdge(l,t);if(o){const e=calculateAnglesBetween(t,o,n);if(e[0]>=0&&e[1]>=0){const n=o.next,r=t.next;t.prev.next=o.next,t.next.prev=o.prev,o.prev.next=t.next,o.next.prev=t.prev,t.v1=null,t.v2=null,t.next=null,t.prev=null,deleteEdge(l,o),o.v1=null,o.v2=null,o.next=null,o.prev=null;const v=(e,n,t)=>{const l={v1:t.v1,v2:n.v2,next:n.next,prev:t.prev};t.prev.next=l,n.next.prev=l,deleteEdge(e,n),n.v1=null,n.v2=null,n.next=null,n.prev=null,deleteEdge(e,t),t.v1=null,t.v2=null,t.next=null,t.prev=null};0===e[0]&&v(l,n,n.prev),0===e[1]&&v(l,r,r.prev)}}else t.next&&insertEdge(l,t)}}const r=[];return l.forEach(e=>{const n=createPolygonAnd(e);n&&r.push(n)}),l.clear(),r},coplanar=(e,n)=>Math.abs(e[3]-n[3])<1.5e-7&&aboutEqualNormals(e,n),mergePolygons=(e,n)=>{const t=[];n.forEach(e=>{const n=t.find(n=>coplanar(n[0],poly3.plane(e)));if(n){n[1].push(e)}else t.push([poly3.plane(e),[e]])});let l=[];return t.forEach(e=>{const n=e[1],t=mergeCoplanarPolygons(n);l=l.concat(t)}),l};module.exports=mergePolygons;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jscad/core",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2",
|
|
4
4
|
"description": "Core functionality for JSCAD Applications",
|
|
5
5
|
"homepage": "https://openjscad.xyz/",
|
|
6
6
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"license": "MIT",
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@jscad/array-utils": "2.1.4",
|
|
39
|
-
"@jscad/io": "2.4.
|
|
40
|
-
"@jscad/io-utils": "2.0.
|
|
41
|
-
"@jscad/modeling": "2.9.
|
|
39
|
+
"@jscad/io": "2.4.1",
|
|
40
|
+
"@jscad/io-utils": "2.0.21",
|
|
41
|
+
"@jscad/modeling": "2.9.6",
|
|
42
42
|
"json5": "2.2.0",
|
|
43
43
|
"strip-bom": "4.0.0"
|
|
44
44
|
},
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"url": "https://opencollective.com/openjscad",
|
|
54
54
|
"logo": "https://opencollective.com/openjscad/logo.txt"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "9768af96e5da00cd113c00ddeb0f6046707819b1"
|
|
57
57
|
}
|