circuit-json-to-gltf 0.0.95 → 0.0.97

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 (2) hide show
  1. package/dist/index.js +306 -234
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -860,13 +860,13 @@ var require_squaredLength = __commonJS({
860
860
  var require_subtract = __commonJS({
861
861
  "node_modules/@jscad/modeling/src/maths/vec3/subtract.js"(exports, module) {
862
862
  "use strict";
863
- var subtract2 = (out, a, b) => {
863
+ var subtract3 = (out, a, b) => {
864
864
  out[0] = a[0] - b[0];
865
865
  out[1] = a[1] - b[1];
866
866
  out[2] = a[2] - b[2];
867
867
  return out;
868
868
  };
869
- module.exports = subtract2;
869
+ module.exports = subtract3;
870
870
  }
871
871
  });
872
872
 
@@ -1407,7 +1407,7 @@ var require_scale2 = __commonJS({
1407
1407
  var require_subtract2 = __commonJS({
1408
1408
  "node_modules/@jscad/modeling/src/maths/mat4/subtract.js"(exports, module) {
1409
1409
  "use strict";
1410
- var subtract2 = (out, a, b) => {
1410
+ var subtract3 = (out, a, b) => {
1411
1411
  out[0] = a[0] - b[0];
1412
1412
  out[1] = a[1] - b[1];
1413
1413
  out[2] = a[2] - b[2];
@@ -1426,7 +1426,7 @@ var require_subtract2 = __commonJS({
1426
1426
  out[15] = a[15] - b[15];
1427
1427
  return out;
1428
1428
  };
1429
- module.exports = subtract2;
1429
+ module.exports = subtract3;
1430
1430
  }
1431
1431
  });
1432
1432
 
@@ -1936,12 +1936,12 @@ var require_squaredLength2 = __commonJS({
1936
1936
  var require_subtract3 = __commonJS({
1937
1937
  "node_modules/@jscad/modeling/src/maths/vec2/subtract.js"(exports, module) {
1938
1938
  "use strict";
1939
- var subtract2 = (out, a, b) => {
1939
+ var subtract3 = (out, a, b) => {
1940
1940
  out[0] = a[0] - b[0];
1941
1941
  out[1] = a[1] - b[1];
1942
1942
  return out;
1943
1943
  };
1944
- module.exports = subtract2;
1944
+ module.exports = subtract3;
1945
1945
  }
1946
1946
  });
1947
1947
 
@@ -2402,14 +2402,14 @@ var require_point_line_distance = __commonJS({
2402
2402
  "node_modules/@jscad/modeling/src/operations/hulls/quickhull/point-line-distance.js"(exports, module) {
2403
2403
  "use strict";
2404
2404
  var cross2 = require_cross();
2405
- var subtract2 = require_subtract();
2405
+ var subtract3 = require_subtract();
2406
2406
  var squaredLength = require_squaredLength();
2407
2407
  var distanceSquared = (p, a, b) => {
2408
2408
  const ab = [];
2409
2409
  const ap = [];
2410
2410
  const cr = [];
2411
- subtract2(ab, b, a);
2412
- subtract2(ap, p, a);
2411
+ subtract3(ab, b, a);
2412
+ subtract3(ap, p, a);
2413
2413
  const area = squaredLength(cross2(cr, ap, ab));
2414
2414
  const s = squaredLength(ab);
2415
2415
  if (s === 0) {
@@ -2428,11 +2428,11 @@ var require_get_plane_normal = __commonJS({
2428
2428
  "use strict";
2429
2429
  var cross2 = require_cross();
2430
2430
  var normalize = require_normalize();
2431
- var subtract2 = require_subtract();
2431
+ var subtract3 = require_subtract();
2432
2432
  var planeNormal = (out, point1, point2, point3) => {
2433
2433
  const tmp = [0, 0, 0];
2434
- subtract2(out, point1, point2);
2435
- subtract2(tmp, point2, point3);
2434
+ subtract3(out, point1, point2);
2435
+ subtract3(tmp, point2, point3);
2436
2436
  cross2(out, out, tmp);
2437
2437
  return normalize(out, out);
2438
2438
  };
@@ -2646,7 +2646,7 @@ var require_Face = __commonJS({
2646
2646
  var length = require_length();
2647
2647
  var normalize = require_normalize();
2648
2648
  var scale = require_scale();
2649
- var subtract2 = require_subtract();
2649
+ var subtract3 = require_subtract();
2650
2650
  var HalfEdge = require_HalfEdge();
2651
2651
  var VISIBLE = 0;
2652
2652
  var NON_CONVEX = 1;
@@ -2680,14 +2680,14 @@ var require_Face = __commonJS({
2680
2680
  const e0 = this.edge;
2681
2681
  const e1 = e0.next;
2682
2682
  let e2 = e1.next;
2683
- const v2 = subtract2([], e1.head().point, e0.head().point);
2683
+ const v2 = subtract3([], e1.head().point, e0.head().point);
2684
2684
  const t = [];
2685
2685
  const v1 = [];
2686
2686
  this.nVertices = 2;
2687
2687
  this.normal = [0, 0, 0];
2688
2688
  while (e2 !== e0) {
2689
2689
  copy(v1, v2);
2690
- subtract2(v2, e2.head().point, e0.head().point);
2690
+ subtract3(v2, e2.head().point, e0.head().point);
2691
2691
  add(this.normal, this.normal, cross2(t, v1, v2));
2692
2692
  e2 = e2.next;
2693
2693
  this.nVertices += 1;
@@ -2711,7 +2711,7 @@ var require_Face = __commonJS({
2711
2711
  } while (edge !== this.edge);
2712
2712
  const p1 = maxEdge.tail().point;
2713
2713
  const p2 = maxEdge.head().point;
2714
- const maxVector = subtract2([], p2, p1);
2714
+ const maxVector = subtract3([], p2, p1);
2715
2715
  const maxLength = Math.sqrt(maxSquaredLength);
2716
2716
  scale(maxVector, maxVector, 1 / maxLength);
2717
2717
  const maxProjection = dot2(this.normal, maxVector);
@@ -3985,7 +3985,7 @@ var require_measureBoundingBox = __commonJS({
3985
3985
  "node_modules/@jscad/modeling/src/geometries/poly3/measureBoundingBox.js"(exports, module) {
3986
3986
  "use strict";
3987
3987
  var vec3 = require_vec3();
3988
- var measureBoundingBox2 = (polygon3) => {
3988
+ var measureBoundingBox3 = (polygon3) => {
3989
3989
  const vertices = polygon3.vertices;
3990
3990
  const numvertices = vertices.length;
3991
3991
  const min = numvertices === 0 ? vec3.create() : vec3.clone(vertices[0]);
@@ -3996,7 +3996,7 @@ var require_measureBoundingBox = __commonJS({
3996
3996
  }
3997
3997
  return [min, max];
3998
3998
  };
3999
- module.exports = measureBoundingBox2;
3999
+ module.exports = measureBoundingBox3;
4000
4000
  }
4001
4001
  });
4002
4002
 
@@ -4339,8 +4339,8 @@ var require_toPolygons = __commonJS({
4339
4339
  "node_modules/@jscad/modeling/src/geometries/geom3/toPolygons.js"(exports, module) {
4340
4340
  "use strict";
4341
4341
  var applyTransforms = require_applyTransforms2();
4342
- var toPolygons3 = (geometry) => applyTransforms(geometry).polygons;
4343
- module.exports = toPolygons3;
4342
+ var toPolygons4 = (geometry) => applyTransforms(geometry).polygons;
4343
+ module.exports = toPolygons4;
4344
4344
  }
4345
4345
  });
4346
4346
 
@@ -4350,9 +4350,9 @@ var require_invert3 = __commonJS({
4350
4350
  "use strict";
4351
4351
  var poly3 = require_poly3();
4352
4352
  var create = require_create5();
4353
- var toPolygons3 = require_toPolygons();
4353
+ var toPolygons4 = require_toPolygons();
4354
4354
  var invert = (geometry) => {
4355
- const polygons = toPolygons3(geometry);
4355
+ const polygons = toPolygons4(geometry);
4356
4356
  const newpolygons = polygons.map((polygon3) => poly3.invert(polygon3));
4357
4357
  return create(newpolygons);
4358
4358
  };
@@ -4384,14 +4384,14 @@ var require_isConvex2 = __commonJS({
4384
4384
  "use strict";
4385
4385
  var { EPS } = require_constants();
4386
4386
  var vec3 = require_vec3();
4387
- var geom33 = require_isA3();
4388
- var toPolygons3 = require_toPolygons();
4387
+ var geom34 = require_isA3();
4388
+ var toPolygons4 = require_toPolygons();
4389
4389
  var poly3 = require_poly3();
4390
4390
  var isConvex = (geometry) => {
4391
- if (!geom33(geometry)) {
4391
+ if (!geom34(geometry)) {
4392
4392
  throw new Error("isConvex requires a geom3 geometry");
4393
4393
  }
4394
- const polygons = toPolygons3(geometry);
4394
+ const polygons = toPolygons4(geometry);
4395
4395
  if (polygons.length === 0) {
4396
4396
  return true;
4397
4397
  }
@@ -4429,9 +4429,9 @@ var require_toPoints3 = __commonJS({
4429
4429
  "node_modules/@jscad/modeling/src/geometries/geom3/toPoints.js"(exports, module) {
4430
4430
  "use strict";
4431
4431
  var poly3 = require_poly3();
4432
- var toPolygons3 = require_toPolygons();
4432
+ var toPolygons4 = require_toPolygons();
4433
4433
  var toPoints = (geometry) => {
4434
- const polygons = toPolygons3(geometry);
4434
+ const polygons = toPolygons4(geometry);
4435
4435
  const listofpoints = polygons.map((polygon3) => poly3.toPoints(polygon3));
4436
4436
  return listofpoints;
4437
4437
  };
@@ -4444,9 +4444,9 @@ var require_toString7 = __commonJS({
4444
4444
  "node_modules/@jscad/modeling/src/geometries/geom3/toString.js"(exports, module) {
4445
4445
  "use strict";
4446
4446
  var poly3 = require_poly3();
4447
- var toPolygons3 = require_toPolygons();
4447
+ var toPolygons4 = require_toPolygons();
4448
4448
  var toString = (geometry) => {
4449
- const polygons = toPolygons3(geometry);
4449
+ const polygons = toPolygons4(geometry);
4450
4450
  let result = "geom3 (" + polygons.length + " polygons):\n";
4451
4451
  polygons.forEach((polygon3) => {
4452
4452
  result += " " + poly3.toString(polygon3) + "\n";
@@ -5181,7 +5181,7 @@ var require_colorize = __commonJS({
5181
5181
  "use strict";
5182
5182
  var flatten = require_flatten();
5183
5183
  var geom2 = require_geom2();
5184
- var geom33 = require_geom3();
5184
+ var geom34 = require_geom3();
5185
5185
  var path2 = require_path2();
5186
5186
  var poly3 = require_poly3();
5187
5187
  var colorGeom2 = (color, object) => {
@@ -5190,7 +5190,7 @@ var require_colorize = __commonJS({
5190
5190
  return newgeom2;
5191
5191
  };
5192
5192
  var colorGeom3 = (color, object) => {
5193
- const newgeom3 = geom33.clone(object);
5193
+ const newgeom3 = geom34.clone(object);
5194
5194
  newgeom3.color = color;
5195
5195
  return newgeom3;
5196
5196
  };
@@ -5212,7 +5212,7 @@ var require_colorize = __commonJS({
5212
5212
  if (objects.length === 0) throw new Error("wrong number of arguments");
5213
5213
  const results = objects.map((object) => {
5214
5214
  if (geom2.isA(object)) return colorGeom2(color, object);
5215
- if (geom33.isA(object)) return colorGeom3(color, object);
5215
+ if (geom34.isA(object)) return colorGeom3(color, object);
5216
5216
  if (path2.isA(object)) return colorPath2(color, object);
5217
5217
  if (poly3.isA(object)) return colorPoly3(color, object);
5218
5218
  object.color = color;
@@ -6657,7 +6657,7 @@ var require_measureArea3 = __commonJS({
6657
6657
  "use strict";
6658
6658
  var flatten = require_flatten();
6659
6659
  var geom2 = require_geom2();
6660
- var geom33 = require_geom3();
6660
+ var geom34 = require_geom3();
6661
6661
  var path2 = require_path2();
6662
6662
  var poly3 = require_poly3();
6663
6663
  var cache = /* @__PURE__ */ new WeakMap();
@@ -6674,7 +6674,7 @@ var require_measureArea3 = __commonJS({
6674
6674
  var measureAreaOfGeom3 = (geometry) => {
6675
6675
  let area = cache.get(geometry);
6676
6676
  if (area) return area;
6677
- const polygons = geom33.toPolygons(geometry);
6677
+ const polygons = geom34.toPolygons(geometry);
6678
6678
  area = polygons.reduce((area2, polygon3) => area2 + poly3.measureArea(polygon3), 0);
6679
6679
  cache.set(geometry, area);
6680
6680
  return area;
@@ -6685,7 +6685,7 @@ var require_measureArea3 = __commonJS({
6685
6685
  const results = geometries.map((geometry) => {
6686
6686
  if (path2.isA(geometry)) return measureAreaOfPath2(geometry);
6687
6687
  if (geom2.isA(geometry)) return measureAreaOfGeom2(geometry);
6688
- if (geom33.isA(geometry)) return measureAreaOfGeom3(geometry);
6688
+ if (geom34.isA(geometry)) return measureAreaOfGeom3(geometry);
6689
6689
  return 0;
6690
6690
  });
6691
6691
  return results.length === 1 ? results[0] : results;
@@ -6722,7 +6722,7 @@ var require_measureBoundingBox2 = __commonJS({
6722
6722
  var vec2 = require_vec2();
6723
6723
  var vec3 = require_vec3();
6724
6724
  var geom2 = require_geom2();
6725
- var geom33 = require_geom3();
6725
+ var geom34 = require_geom3();
6726
6726
  var path2 = require_path2();
6727
6727
  var poly3 = require_poly3();
6728
6728
  var cache = /* @__PURE__ */ new WeakMap();
@@ -6771,7 +6771,7 @@ var require_measureBoundingBox2 = __commonJS({
6771
6771
  var measureBoundingBoxOfGeom3 = (geometry) => {
6772
6772
  let boundingBox = cache.get(geometry);
6773
6773
  if (boundingBox) return boundingBox;
6774
- const polygons = geom33.toPolygons(geometry);
6774
+ const polygons = geom34.toPolygons(geometry);
6775
6775
  let minpoint = vec3.create();
6776
6776
  if (polygons.length > 0) {
6777
6777
  const points = poly3.toPoints(polygons[0]);
@@ -6790,18 +6790,18 @@ var require_measureBoundingBox2 = __commonJS({
6790
6790
  cache.set(geometry, boundingBox);
6791
6791
  return boundingBox;
6792
6792
  };
6793
- var measureBoundingBox2 = (...geometries) => {
6793
+ var measureBoundingBox3 = (...geometries) => {
6794
6794
  geometries = flatten(geometries);
6795
6795
  if (geometries.length === 0) throw new Error("wrong number of arguments");
6796
6796
  const results = geometries.map((geometry) => {
6797
6797
  if (path2.isA(geometry)) return measureBoundingBoxOfPath2(geometry);
6798
6798
  if (geom2.isA(geometry)) return measureBoundingBoxOfGeom2(geometry);
6799
- if (geom33.isA(geometry)) return measureBoundingBoxOfGeom3(geometry);
6799
+ if (geom34.isA(geometry)) return measureBoundingBoxOfGeom3(geometry);
6800
6800
  return [[0, 0, 0], [0, 0, 0]];
6801
6801
  });
6802
6802
  return results.length === 1 ? results[0] : results;
6803
6803
  };
6804
- module.exports = measureBoundingBox2;
6804
+ module.exports = measureBoundingBox3;
6805
6805
  }
6806
6806
  });
6807
6807
 
@@ -6812,11 +6812,11 @@ var require_measureAggregateBoundingBox = __commonJS({
6812
6812
  var flatten = require_flatten();
6813
6813
  var vec3min = require_min();
6814
6814
  var vec3max = require_max();
6815
- var measureBoundingBox2 = require_measureBoundingBox2();
6815
+ var measureBoundingBox3 = require_measureBoundingBox2();
6816
6816
  var measureAggregateBoundingBox = (...geometries) => {
6817
6817
  geometries = flatten(geometries);
6818
6818
  if (geometries.length === 0) throw new Error("measureAggregateBoundingBox: no geometries supplied");
6819
- const bounds = measureBoundingBox2(geometries);
6819
+ const bounds = measureBoundingBox3(geometries);
6820
6820
  if (geometries.length === 1) {
6821
6821
  return bounds;
6822
6822
  }
@@ -6853,7 +6853,7 @@ var require_measureAggregateEpsilon = __commonJS({
6853
6853
  var flatten = require_flatten();
6854
6854
  var measureAggregateBoundingBox = require_measureAggregateBoundingBox();
6855
6855
  var calculateEpsilonFromBounds = require_calculateEpsilonFromBounds();
6856
- var { geom2, geom3: geom33, path2 } = require_geometries();
6856
+ var { geom2, geom3: geom34, path2 } = require_geometries();
6857
6857
  var measureAggregateEpsilon = (...geometries) => {
6858
6858
  geometries = flatten(geometries);
6859
6859
  if (geometries.length === 0) throw new Error("measureAggregateEpsilon: no geometries supplied");
@@ -6861,7 +6861,7 @@ var require_measureAggregateEpsilon = __commonJS({
6861
6861
  let dimensions = 0;
6862
6862
  dimensions = geometries.reduce((dimensions2, geometry) => {
6863
6863
  if (path2.isA(geometry) || geom2.isA(geometry)) return Math.max(dimensions2, 2);
6864
- if (geom33.isA(geometry)) return Math.max(dimensions2, 3);
6864
+ if (geom34.isA(geometry)) return Math.max(dimensions2, 3);
6865
6865
  return 0;
6866
6866
  }, dimensions);
6867
6867
  return calculateEpsilonFromBounds(bounds, dimensions);
@@ -6876,7 +6876,7 @@ var require_measureVolume = __commonJS({
6876
6876
  "use strict";
6877
6877
  var flatten = require_flatten();
6878
6878
  var geom2 = require_geom2();
6879
- var geom33 = require_geom3();
6879
+ var geom34 = require_geom3();
6880
6880
  var path2 = require_path2();
6881
6881
  var poly3 = require_poly3();
6882
6882
  var cache = /* @__PURE__ */ new WeakMap();
@@ -6885,7 +6885,7 @@ var require_measureVolume = __commonJS({
6885
6885
  var measureVolumeOfGeom3 = (geometry) => {
6886
6886
  let volume = cache.get(geometry);
6887
6887
  if (volume) return volume;
6888
- const polygons = geom33.toPolygons(geometry);
6888
+ const polygons = geom34.toPolygons(geometry);
6889
6889
  volume = polygons.reduce((volume2, polygon3) => volume2 + poly3.measureSignedVolume(polygon3), 0);
6890
6890
  cache.set(geometry, volume);
6891
6891
  return volume;
@@ -6896,7 +6896,7 @@ var require_measureVolume = __commonJS({
6896
6896
  const results = geometries.map((geometry) => {
6897
6897
  if (path2.isA(geometry)) return measureVolumeOfPath2(geometry);
6898
6898
  if (geom2.isA(geometry)) return measureVolumeOfGeom2(geometry);
6899
- if (geom33.isA(geometry)) return measureVolumeOfGeom3(geometry);
6899
+ if (geom34.isA(geometry)) return measureVolumeOfGeom3(geometry);
6900
6900
  return 0;
6901
6901
  });
6902
6902
  return results.length === 1 ? results[0] : results;
@@ -6933,7 +6933,7 @@ var require_measureBoundingSphere2 = __commonJS({
6933
6933
  var vec2 = require_vec2();
6934
6934
  var vec3 = require_vec3();
6935
6935
  var geom2 = require_geom2();
6936
- var geom33 = require_geom3();
6936
+ var geom34 = require_geom3();
6937
6937
  var path2 = require_path2();
6938
6938
  var poly3 = require_poly3();
6939
6939
  var cacheOfBoundingSpheres = /* @__PURE__ */ new WeakMap();
@@ -6988,7 +6988,7 @@ var require_measureBoundingSphere2 = __commonJS({
6988
6988
  if (boundingSphere !== void 0) return boundingSphere;
6989
6989
  const centroid = vec3.create();
6990
6990
  let radius = 0;
6991
- const polygons = geom33.toPolygons(geometry);
6991
+ const polygons = geom34.toPolygons(geometry);
6992
6992
  if (polygons.length > 0) {
6993
6993
  let numPoints = 0;
6994
6994
  polygons.forEach((polygon3) => {
@@ -7014,7 +7014,7 @@ var require_measureBoundingSphere2 = __commonJS({
7014
7014
  const results = geometries.map((geometry) => {
7015
7015
  if (path2.isA(geometry)) return measureBoundingSphereOfPath2(geometry);
7016
7016
  if (geom2.isA(geometry)) return measureBoundingSphereOfGeom2(geometry);
7017
- if (geom33.isA(geometry)) return measureBoundingSphereOfGeom3(geometry);
7017
+ if (geom34.isA(geometry)) return measureBoundingSphereOfGeom3(geometry);
7018
7018
  return [[0, 0, 0], 0];
7019
7019
  });
7020
7020
  return results.length === 1 ? results[0] : results;
@@ -7028,11 +7028,11 @@ var require_measureCenter = __commonJS({
7028
7028
  "node_modules/@jscad/modeling/src/measurements/measureCenter.js"(exports, module) {
7029
7029
  "use strict";
7030
7030
  var flatten = require_flatten();
7031
- var measureBoundingBox2 = require_measureBoundingBox2();
7031
+ var measureBoundingBox3 = require_measureBoundingBox2();
7032
7032
  var measureCenter = (...geometries) => {
7033
7033
  geometries = flatten(geometries);
7034
7034
  const results = geometries.map((geometry) => {
7035
- const bounds = measureBoundingBox2(geometry);
7035
+ const bounds = measureBoundingBox3(geometry);
7036
7036
  return [
7037
7037
  bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2,
7038
7038
  bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2,
@@ -7052,7 +7052,7 @@ var require_measureCenterOfMass = __commonJS({
7052
7052
  var flatten = require_flatten();
7053
7053
  var vec3 = require_vec3();
7054
7054
  var geom2 = require_geom2();
7055
- var geom33 = require_geom3();
7055
+ var geom34 = require_geom3();
7056
7056
  var cacheOfCenterOfMass = /* @__PURE__ */ new WeakMap();
7057
7057
  var measureCenterOfMassGeom2 = (geometry) => {
7058
7058
  let centerOfMass = cacheOfCenterOfMass.get(geometry);
@@ -7083,7 +7083,7 @@ var require_measureCenterOfMass = __commonJS({
7083
7083
  let centerOfMass = cacheOfCenterOfMass.get(geometry);
7084
7084
  if (centerOfMass !== void 0) return centerOfMass;
7085
7085
  centerOfMass = vec3.create();
7086
- const polygons = geom33.toPolygons(geometry);
7086
+ const polygons = geom34.toPolygons(geometry);
7087
7087
  if (polygons.length === 0) return centerOfMass;
7088
7088
  let totalVolume = 0;
7089
7089
  const vector = vec3.create();
@@ -7107,7 +7107,7 @@ var require_measureCenterOfMass = __commonJS({
7107
7107
  geometries = flatten(geometries);
7108
7108
  const results = geometries.map((geometry) => {
7109
7109
  if (geom2.isA(geometry)) return measureCenterOfMassGeom2(geometry);
7110
- if (geom33.isA(geometry)) return measureCenterOfMassGeom3(geometry);
7110
+ if (geom34.isA(geometry)) return measureCenterOfMassGeom3(geometry);
7111
7111
  return [0, 0, 0];
7112
7112
  });
7113
7113
  return results.length === 1 ? results[0] : results;
@@ -7121,11 +7121,11 @@ var require_measureDimensions = __commonJS({
7121
7121
  "node_modules/@jscad/modeling/src/measurements/measureDimensions.js"(exports, module) {
7122
7122
  "use strict";
7123
7123
  var flatten = require_flatten();
7124
- var measureBoundingBox2 = require_measureBoundingBox2();
7124
+ var measureBoundingBox3 = require_measureBoundingBox2();
7125
7125
  var measureDimensions = (...geometries) => {
7126
7126
  geometries = flatten(geometries);
7127
7127
  const results = geometries.map((geometry) => {
7128
- const boundingBox = measureBoundingBox2(geometry);
7128
+ const boundingBox = measureBoundingBox3(geometry);
7129
7129
  return [
7130
7130
  boundingBox[1][0] - boundingBox[0][0],
7131
7131
  boundingBox[1][1] - boundingBox[0][1],
@@ -7143,19 +7143,19 @@ var require_measureEpsilon = __commonJS({
7143
7143
  "node_modules/@jscad/modeling/src/measurements/measureEpsilon.js"(exports, module) {
7144
7144
  "use strict";
7145
7145
  var flatten = require_flatten();
7146
- var { geom2, geom3: geom33, path2 } = require_geometries();
7146
+ var { geom2, geom3: geom34, path2 } = require_geometries();
7147
7147
  var calculateEpsilonFromBounds = require_calculateEpsilonFromBounds();
7148
- var measureBoundingBox2 = require_measureBoundingBox2();
7149
- var measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox2(geometry), 2);
7150
- var measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox2(geometry), 2);
7151
- var measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox2(geometry), 3);
7148
+ var measureBoundingBox3 = require_measureBoundingBox2();
7149
+ var measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 2);
7150
+ var measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 2);
7151
+ var measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 3);
7152
7152
  var measureEpsilon = (...geometries) => {
7153
7153
  geometries = flatten(geometries);
7154
7154
  if (geometries.length === 0) throw new Error("wrong number of arguments");
7155
7155
  const results = geometries.map((geometry) => {
7156
7156
  if (path2.isA(geometry)) return measureEpsilonOfPath2(geometry);
7157
7157
  if (geom2.isA(geometry)) return measureEpsilonOfGeom2(geometry);
7158
- if (geom33.isA(geometry)) return measureEpsilonOfGeom3(geometry);
7158
+ if (geom34.isA(geometry)) return measureEpsilonOfGeom3(geometry);
7159
7159
  return 0;
7160
7160
  });
7161
7161
  return results.length === 1 ? results[0] : results;
@@ -7354,7 +7354,7 @@ var require_circle = __commonJS({
7354
7354
  var require_cuboid = __commonJS({
7355
7355
  "node_modules/@jscad/modeling/src/primitives/cuboid.js"(exports, module) {
7356
7356
  "use strict";
7357
- var geom33 = require_geom3();
7357
+ var geom34 = require_geom3();
7358
7358
  var poly3 = require_poly3();
7359
7359
  var { isNumberArray } = require_commonChecks();
7360
7360
  var cuboid = (options) => {
@@ -7366,8 +7366,8 @@ var require_cuboid = __commonJS({
7366
7366
  if (!isNumberArray(center, 3)) throw new Error("center must be an array of X, Y and Z values");
7367
7367
  if (!isNumberArray(size, 3)) throw new Error("size must be an array of width, depth and height values");
7368
7368
  if (!size.every((n) => n >= 0)) throw new Error("size values must be positive");
7369
- if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom33.create();
7370
- const result = geom33.create(
7369
+ if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom34.create();
7370
+ const result = geom34.create(
7371
7371
  // adjust a basic shape to size
7372
7372
  [
7373
7373
  [[0, 4, 6, 2], [-1, 0, 0]],
@@ -7420,7 +7420,7 @@ var require_cylinderElliptic = __commonJS({
7420
7420
  "use strict";
7421
7421
  var { EPS, TAU } = require_constants();
7422
7422
  var vec3 = require_vec3();
7423
- var geom33 = require_geom3();
7423
+ var geom34 = require_geom3();
7424
7424
  var poly3 = require_poly3();
7425
7425
  var { sin, cos } = require_trigonometry();
7426
7426
  var { isGT, isGTE, isNumberArray } = require_commonChecks();
@@ -7509,7 +7509,7 @@ var require_cylinderElliptic = __commonJS({
7509
7509
  polygons.push(fromPoints(start, end, point(0, 1, startRadius)));
7510
7510
  polygons.push(fromPoints(point(0, 1, startRadius), end, point(1, 1, endRadius)));
7511
7511
  }
7512
- const result = geom33.create(polygons);
7512
+ const result = geom34.create(polygons);
7513
7513
  return result;
7514
7514
  };
7515
7515
  module.exports = cylinderElliptic;
@@ -7520,7 +7520,7 @@ var require_cylinderElliptic = __commonJS({
7520
7520
  var require_cylinder = __commonJS({
7521
7521
  "node_modules/@jscad/modeling/src/primitives/cylinder.js"(exports, module) {
7522
7522
  "use strict";
7523
- var geom33 = require_geom3();
7523
+ var geom34 = require_geom3();
7524
7524
  var cylinderElliptic = require_cylinderElliptic();
7525
7525
  var { isGTE } = require_commonChecks();
7526
7526
  var cylinder2 = (options) => {
@@ -7532,7 +7532,7 @@ var require_cylinder = __commonJS({
7532
7532
  };
7533
7533
  const { center, height, radius, segments } = Object.assign({}, defaults, options);
7534
7534
  if (!isGTE(radius, 0)) throw new Error("radius must be positive");
7535
- if (height === 0 || radius === 0) return geom33.create();
7535
+ if (height === 0 || radius === 0) return geom34.create();
7536
7536
  const newoptions = {
7537
7537
  center,
7538
7538
  height,
@@ -7552,7 +7552,7 @@ var require_ellipsoid = __commonJS({
7552
7552
  "use strict";
7553
7553
  var { TAU } = require_constants();
7554
7554
  var vec3 = require_vec3();
7555
- var geom33 = require_geom3();
7555
+ var geom34 = require_geom3();
7556
7556
  var poly3 = require_poly3();
7557
7557
  var { sin, cos } = require_trigonometry();
7558
7558
  var { isGTE, isNumberArray } = require_commonChecks();
@@ -7568,7 +7568,7 @@ var require_ellipsoid = __commonJS({
7568
7568
  if (!isNumberArray(radius, 3)) throw new Error("radius must be an array of X, Y and Z values");
7569
7569
  if (!radius.every((n) => n >= 0)) throw new Error("radius values must be positive");
7570
7570
  if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
7571
- if (radius[0] === 0 || radius[1] === 0 || radius[2] === 0) return geom33.create();
7571
+ if (radius[0] === 0 || radius[1] === 0 || radius[2] === 0) return geom34.create();
7572
7572
  const xvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[0]), radius[0]);
7573
7573
  const yvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[1]), radius[1]);
7574
7574
  const zvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[2]), radius[2]);
@@ -7620,7 +7620,7 @@ var require_ellipsoid = __commonJS({
7620
7620
  }
7621
7621
  prevcylinderpoint = cylinderpoint;
7622
7622
  }
7623
- return geom33.create(polygons);
7623
+ return geom34.create(polygons);
7624
7624
  };
7625
7625
  module.exports = ellipsoid;
7626
7626
  }
@@ -7630,7 +7630,7 @@ var require_ellipsoid = __commonJS({
7630
7630
  var require_polyhedron = __commonJS({
7631
7631
  "node_modules/@jscad/modeling/src/primitives/polyhedron.js"(exports, module) {
7632
7632
  "use strict";
7633
- var geom33 = require_geom3();
7633
+ var geom34 = require_geom3();
7634
7634
  var poly3 = require_poly3();
7635
7635
  var { isNumberArray } = require_commonChecks();
7636
7636
  var polyhedron = (options) => {
@@ -7673,7 +7673,7 @@ var require_polyhedron = __commonJS({
7673
7673
  if (colors && colors[findex]) polygon3.color = colors[findex];
7674
7674
  return polygon3;
7675
7675
  });
7676
- return geom33.create(polygons);
7676
+ return geom34.create(polygons);
7677
7677
  };
7678
7678
  module.exports = polyhedron;
7679
7679
  }
@@ -7685,7 +7685,7 @@ var require_geodesicSphere = __commonJS({
7685
7685
  "use strict";
7686
7686
  var mat4 = require_mat4();
7687
7687
  var vec3 = require_vec3();
7688
- var geom33 = require_geom3();
7688
+ var geom34 = require_geom3();
7689
7689
  var polyhedron = require_polyhedron();
7690
7690
  var { isGTE } = require_commonChecks();
7691
7691
  var geodesicSphere = (options) => {
@@ -7696,7 +7696,7 @@ var require_geodesicSphere = __commonJS({
7696
7696
  let { radius, frequency } = Object.assign({}, defaults, options);
7697
7697
  if (!isGTE(radius, 0)) throw new Error("radius must be positive");
7698
7698
  if (!isGTE(frequency, 6)) throw new Error("frequency must be six or more");
7699
- if (radius === 0) return geom33.create();
7699
+ if (radius === 0) return geom34.create();
7700
7700
  frequency = Math.floor(frequency / 6);
7701
7701
  const ci = [
7702
7702
  // hard-coded data of icosahedron (20 faces, all triangles)
@@ -7799,7 +7799,7 @@ var require_geodesicSphere = __commonJS({
7799
7799
  offset = g.offset;
7800
7800
  }
7801
7801
  let geometry = polyhedron({ points, faces, orientation: "inward" });
7802
- if (radius !== 1) geometry = geom33.transform(mat4.fromScaling(mat4.create(), [radius, radius, radius]), geometry);
7802
+ if (radius !== 1) geometry = geom34.transform(mat4.fromScaling(mat4.create(), [radius, radius, radius]), geometry);
7803
7803
  return geometry;
7804
7804
  };
7805
7805
  module.exports = geodesicSphere;
@@ -7907,7 +7907,7 @@ var require_roundedCuboid = __commonJS({
7907
7907
  var { EPS, TAU } = require_constants();
7908
7908
  var vec2 = require_vec2();
7909
7909
  var vec3 = require_vec3();
7910
- var geom33 = require_geom3();
7910
+ var geom34 = require_geom3();
7911
7911
  var poly3 = require_poly3();
7912
7912
  var { sin, cos } = require_trigonometry();
7913
7913
  var { isGTE, isNumberArray } = require_commonChecks();
@@ -8012,7 +8012,7 @@ var require_roundedCuboid = __commonJS({
8012
8012
  if (!size.every((n) => n >= 0)) throw new Error("size values must be positive");
8013
8013
  if (!isGTE(roundRadius, 0)) throw new Error("roundRadius must be positive");
8014
8014
  if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
8015
- if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom33.create();
8015
+ if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom34.create();
8016
8016
  if (roundRadius === 0) return cuboid({ center, size });
8017
8017
  size = size.map((v) => v / 2);
8018
8018
  if (roundRadius > size[0] - EPS || roundRadius > size[1] - EPS || roundRadius > size[2] - EPS) throw new Error("roundRadius must be smaller than the radius of all dimensions");
@@ -8047,7 +8047,7 @@ var require_roundedCuboid = __commonJS({
8047
8047
  prevCornersPos = cornersPos;
8048
8048
  prevCornersNeg = cornersNeg;
8049
8049
  }
8050
- return geom33.create(polygons);
8050
+ return geom34.create(polygons);
8051
8051
  };
8052
8052
  module.exports = roundedCuboid;
8053
8053
  }
@@ -8059,7 +8059,7 @@ var require_roundedCylinder = __commonJS({
8059
8059
  "use strict";
8060
8060
  var { EPS, TAU } = require_constants();
8061
8061
  var vec3 = require_vec3();
8062
- var geom33 = require_geom3();
8062
+ var geom34 = require_geom3();
8063
8063
  var poly3 = require_poly3();
8064
8064
  var { sin, cos } = require_trigonometry();
8065
8065
  var { isGTE, isNumberArray } = require_commonChecks();
@@ -8079,7 +8079,7 @@ var require_roundedCylinder = __commonJS({
8079
8079
  if (!isGTE(roundRadius, 0)) throw new Error("roundRadius must be positive");
8080
8080
  if (roundRadius > radius) throw new Error("roundRadius must be smaller than the radius");
8081
8081
  if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
8082
- if (height === 0 || radius === 0) return geom33.create();
8082
+ if (height === 0 || radius === 0) return geom34.create();
8083
8083
  if (roundRadius === 0) return cylinder2({ center, height, radius });
8084
8084
  const start = [0, 0, -(height / 2)];
8085
8085
  const end = [0, 0, height / 2];
@@ -8159,7 +8159,7 @@ var require_roundedCylinder = __commonJS({
8159
8159
  }
8160
8160
  prevcylinderpoint = cylinderpoint;
8161
8161
  }
8162
- const result = geom33.create(polygons);
8162
+ const result = geom34.create(polygons);
8163
8163
  return result;
8164
8164
  };
8165
8165
  module.exports = roundedCylinder;
@@ -8330,7 +8330,7 @@ var require_mirror = __commonJS({
8330
8330
  var mat4 = require_mat4();
8331
8331
  var plane = require_plane();
8332
8332
  var geom2 = require_geom2();
8333
- var geom33 = require_geom3();
8333
+ var geom34 = require_geom3();
8334
8334
  var path2 = require_path2();
8335
8335
  var mirror = (options, ...objects) => {
8336
8336
  const defaults = {
@@ -8349,7 +8349,7 @@ var require_mirror = __commonJS({
8349
8349
  const results = objects.map((object) => {
8350
8350
  if (path2.isA(object)) return path2.transform(matrix, object);
8351
8351
  if (geom2.isA(object)) return geom2.transform(matrix, object);
8352
- if (geom33.isA(object)) return geom33.transform(matrix, object);
8352
+ if (geom34.isA(object)) return geom34.transform(matrix, object);
8353
8353
  return object;
8354
8354
  });
8355
8355
  return results.length === 1 ? results[0] : results;
@@ -9129,7 +9129,7 @@ var require_toPolygons2 = __commonJS({
9129
9129
  var poly3 = require_poly3();
9130
9130
  var earcut2 = require_earcut();
9131
9131
  var PolygonHierarchy = require_polygonHierarchy();
9132
- var toPolygons3 = (slice) => {
9132
+ var toPolygons4 = (slice) => {
9133
9133
  const hierarchy = new PolygonHierarchy(slice);
9134
9134
  const polygons = [];
9135
9135
  hierarchy.roots.forEach(({ solid, holes }) => {
@@ -9150,7 +9150,7 @@ var require_toPolygons2 = __commonJS({
9150
9150
  });
9151
9151
  return polygons;
9152
9152
  };
9153
- module.exports = toPolygons3;
9153
+ module.exports = toPolygons4;
9154
9154
  }
9155
9155
  });
9156
9156
 
@@ -9326,7 +9326,7 @@ var require_extrudeFromSlices = __commonJS({
9326
9326
  "use strict";
9327
9327
  var mat4 = require_mat4();
9328
9328
  var geom2 = require_geom2();
9329
- var geom33 = require_geom3();
9329
+ var geom34 = require_geom3();
9330
9330
  var poly3 = require_poly3();
9331
9331
  var slice = require_slice();
9332
9332
  var repairSlice = require_repair();
@@ -9393,7 +9393,7 @@ var require_extrudeFromSlices = __commonJS({
9393
9393
  }
9394
9394
  }
9395
9395
  }
9396
- return geom33.create(polygons);
9396
+ return geom34.create(polygons);
9397
9397
  };
9398
9398
  module.exports = extrudeFromSlices;
9399
9399
  }
@@ -9497,7 +9497,7 @@ var require_rotate3 = __commonJS({
9497
9497
  var flatten = require_flatten();
9498
9498
  var mat4 = require_mat4();
9499
9499
  var geom2 = require_geom2();
9500
- var geom33 = require_geom3();
9500
+ var geom34 = require_geom3();
9501
9501
  var path2 = require_path2();
9502
9502
  var rotate = (angles, ...objects) => {
9503
9503
  if (!Array.isArray(angles)) throw new Error("angles must be an array");
@@ -9512,7 +9512,7 @@ var require_rotate3 = __commonJS({
9512
9512
  const results = objects.map((object) => {
9513
9513
  if (path2.isA(object)) return path2.transform(matrix, object);
9514
9514
  if (geom2.isA(object)) return geom2.transform(matrix, object);
9515
- if (geom33.isA(object)) return geom33.transform(matrix, object);
9515
+ if (geom34.isA(object)) return geom34.transform(matrix, object);
9516
9516
  return object;
9517
9517
  });
9518
9518
  return results.length === 1 ? results[0] : results;
@@ -9536,7 +9536,7 @@ var require_translate2 = __commonJS({
9536
9536
  var flatten = require_flatten();
9537
9537
  var mat4 = require_mat4();
9538
9538
  var geom2 = require_geom2();
9539
- var geom33 = require_geom3();
9539
+ var geom34 = require_geom3();
9540
9540
  var path2 = require_path2();
9541
9541
  var translate3 = (offset, ...objects) => {
9542
9542
  if (!Array.isArray(offset)) throw new Error("offset must be an array");
@@ -9548,7 +9548,7 @@ var require_translate2 = __commonJS({
9548
9548
  const results = objects.map((object) => {
9549
9549
  if (path2.isA(object)) return path2.transform(matrix, object);
9550
9550
  if (geom2.isA(object)) return geom2.transform(matrix, object);
9551
- if (geom33.isA(object)) return geom33.transform(matrix, object);
9551
+ if (geom34.isA(object)) return geom34.transform(matrix, object);
9552
9552
  return object;
9553
9553
  });
9554
9554
  return results.length === 1 ? results[0] : results;
@@ -10031,14 +10031,14 @@ var require_areAllShapesTheSameType = __commonJS({
10031
10031
  "node_modules/@jscad/modeling/src/utils/areAllShapesTheSameType.js"(exports, module) {
10032
10032
  "use strict";
10033
10033
  var geom2 = require_geom2();
10034
- var geom33 = require_geom3();
10034
+ var geom34 = require_geom3();
10035
10035
  var path2 = require_path2();
10036
10036
  var areAllShapesTheSameType = (shapes) => {
10037
10037
  let previousType;
10038
10038
  for (const shape of shapes) {
10039
10039
  let currentType = 0;
10040
10040
  if (geom2.isA(shape)) currentType = 1;
10041
- if (geom33.isA(shape)) currentType = 2;
10041
+ if (geom34.isA(shape)) currentType = 2;
10042
10042
  if (path2.isA(shape)) currentType = 3;
10043
10043
  if (previousType && currentType !== previousType) return false;
10044
10044
  previousType = currentType;
@@ -10180,7 +10180,7 @@ var require_to3DWalls = __commonJS({
10180
10180
  "use strict";
10181
10181
  var vec3 = require_vec3();
10182
10182
  var geom2 = require_geom2();
10183
- var geom33 = require_geom3();
10183
+ var geom34 = require_geom3();
10184
10184
  var poly3 = require_poly3();
10185
10185
  var to3DWall = (z0, z1, side) => {
10186
10186
  const points = [
@@ -10194,7 +10194,7 @@ var require_to3DWalls = __commonJS({
10194
10194
  var to3DWalls = (options, geometry) => {
10195
10195
  const sides = geom2.toSides(geometry);
10196
10196
  const polygons = sides.map((side) => to3DWall(options.z0, options.z1, side));
10197
- const result = geom33.create(polygons);
10197
+ const result = geom34.create(polygons);
10198
10198
  return result;
10199
10199
  };
10200
10200
  module.exports = to3DWalls;
@@ -10565,7 +10565,7 @@ var require_reTesselateCoplanarPolygons = __commonJS({
10565
10565
  var require_retessellate = __commonJS({
10566
10566
  "node_modules/@jscad/modeling/src/operations/modifiers/retessellate.js"(exports, module) {
10567
10567
  "use strict";
10568
- var geom33 = require_geom3();
10568
+ var geom34 = require_geom3();
10569
10569
  var poly3 = require_poly3();
10570
10570
  var { NEPS } = require_constants();
10571
10571
  var reTesselateCoplanarPolygons = require_reTesselateCoplanarPolygons();
@@ -10573,7 +10573,7 @@ var require_retessellate = __commonJS({
10573
10573
  if (geometry.isRetesselated) {
10574
10574
  return geometry;
10575
10575
  }
10576
- const polygons = geom33.toPolygons(geometry).map((polygon3, index) => ({ vertices: polygon3.vertices, plane: poly3.plane(polygon3), index }));
10576
+ const polygons = geom34.toPolygons(geometry).map((polygon3, index) => ({ vertices: polygon3.vertices, plane: poly3.plane(polygon3), index }));
10577
10577
  const classified = classifyPolygons(polygons);
10578
10578
  const destPolygons = [];
10579
10579
  classified.forEach((group) => {
@@ -10586,7 +10586,7 @@ var require_retessellate = __commonJS({
10586
10586
  destPolygons.push(group);
10587
10587
  }
10588
10588
  });
10589
- const result = geom33.create(destPolygons);
10589
+ const result = geom34.create(destPolygons);
10590
10590
  result.isRetesselated = true;
10591
10591
  return result;
10592
10592
  };
@@ -10643,15 +10643,15 @@ var require_mayOverlap = __commonJS({
10643
10643
  "node_modules/@jscad/modeling/src/operations/booleans/mayOverlap.js"(exports, module) {
10644
10644
  "use strict";
10645
10645
  var { EPS } = require_constants();
10646
- var measureBoundingBox2 = require_measureBoundingBox2();
10646
+ var measureBoundingBox3 = require_measureBoundingBox2();
10647
10647
  var mayOverlap = (geometry1, geometry2) => {
10648
10648
  if (geometry1.polygons.length === 0 || geometry2.polygons.length === 0) {
10649
10649
  return false;
10650
10650
  }
10651
- const bounds1 = measureBoundingBox2(geometry1);
10651
+ const bounds1 = measureBoundingBox3(geometry1);
10652
10652
  const min1 = bounds1[0];
10653
10653
  const max1 = bounds1[1];
10654
- const bounds2 = measureBoundingBox2(geometry2);
10654
+ const bounds2 = measureBoundingBox3(geometry2);
10655
10655
  const min2 = bounds2[0];
10656
10656
  const max2 = bounds2[1];
10657
10657
  if (min2[0] - max1[0] > EPS) return false;
@@ -11191,15 +11191,15 @@ var require_trees = __commonJS({
11191
11191
  var require_intersectGeom3Sub = __commonJS({
11192
11192
  "node_modules/@jscad/modeling/src/operations/booleans/intersectGeom3Sub.js"(exports, module) {
11193
11193
  "use strict";
11194
- var geom33 = require_geom3();
11194
+ var geom34 = require_geom3();
11195
11195
  var mayOverlap = require_mayOverlap();
11196
11196
  var { Tree } = require_trees();
11197
11197
  var intersectGeom3Sub = (geometry1, geometry2) => {
11198
11198
  if (!mayOverlap(geometry1, geometry2)) {
11199
- return geom33.create();
11199
+ return geom34.create();
11200
11200
  }
11201
- const a = new Tree(geom33.toPolygons(geometry1));
11202
- const b = new Tree(geom33.toPolygons(geometry2));
11201
+ const a = new Tree(geom34.toPolygons(geometry1));
11202
+ const b = new Tree(geom34.toPolygons(geometry2));
11203
11203
  a.invert();
11204
11204
  b.clipTo(a);
11205
11205
  b.invert();
@@ -11208,7 +11208,7 @@ var require_intersectGeom3Sub = __commonJS({
11208
11208
  a.addPolygons(b.allPolygons());
11209
11209
  a.invert();
11210
11210
  const newpolygons = a.allPolygons();
11211
- return geom33.create(newpolygons);
11211
+ return geom34.create(newpolygons);
11212
11212
  };
11213
11213
  module.exports = intersectGeom3Sub;
11214
11214
  }
@@ -11239,7 +11239,7 @@ var require_intersectGeom2 = __commonJS({
11239
11239
  "node_modules/@jscad/modeling/src/operations/booleans/intersectGeom2.js"(exports, module) {
11240
11240
  "use strict";
11241
11241
  var flatten = require_flatten();
11242
- var geom33 = require_geom3();
11242
+ var geom34 = require_geom3();
11243
11243
  var measureEpsilon = require_measureEpsilon();
11244
11244
  var fromFakePolygons = require_fromFakePolygons();
11245
11245
  var to3DWalls = require_to3DWalls();
@@ -11249,7 +11249,7 @@ var require_intersectGeom2 = __commonJS({
11249
11249
  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
11250
11250
  const newgeom3 = intersectGeom3(newgeometries);
11251
11251
  const epsilon = measureEpsilon(newgeom3);
11252
- return fromFakePolygons(epsilon, geom33.toPolygons(newgeom3));
11252
+ return fromFakePolygons(epsilon, geom34.toPolygons(newgeom3));
11253
11253
  };
11254
11254
  module.exports = intersect;
11255
11255
  }
@@ -11262,7 +11262,7 @@ var require_intersect2 = __commonJS({
11262
11262
  var flatten = require_flatten();
11263
11263
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
11264
11264
  var geom2 = require_geom2();
11265
- var geom33 = require_geom3();
11265
+ var geom34 = require_geom3();
11266
11266
  var intersectGeom2 = require_intersectGeom2();
11267
11267
  var intersectGeom3 = require_intersectGeom3();
11268
11268
  var intersect = (...geometries) => {
@@ -11273,7 +11273,7 @@ var require_intersect2 = __commonJS({
11273
11273
  }
11274
11274
  const geometry = geometries[0];
11275
11275
  if (geom2.isA(geometry)) return intersectGeom2(geometries);
11276
- if (geom33.isA(geometry)) return intersectGeom3(geometries);
11276
+ if (geom34.isA(geometry)) return intersectGeom3(geometries);
11277
11277
  return geometry;
11278
11278
  };
11279
11279
  module.exports = intersect;
@@ -11302,28 +11302,28 @@ var require_hullPoints3 = __commonJS({
11302
11302
  var require_unionGeom3Sub = __commonJS({
11303
11303
  "node_modules/@jscad/modeling/src/operations/booleans/unionGeom3Sub.js"(exports, module) {
11304
11304
  "use strict";
11305
- var geom33 = require_geom3();
11305
+ var geom34 = require_geom3();
11306
11306
  var mayOverlap = require_mayOverlap();
11307
11307
  var { Tree } = require_trees();
11308
11308
  var unionSub = (geometry1, geometry2) => {
11309
11309
  if (!mayOverlap(geometry1, geometry2)) {
11310
11310
  return unionForNonIntersecting(geometry1, geometry2);
11311
11311
  }
11312
- const a = new Tree(geom33.toPolygons(geometry1));
11313
- const b = new Tree(geom33.toPolygons(geometry2));
11312
+ const a = new Tree(geom34.toPolygons(geometry1));
11313
+ const b = new Tree(geom34.toPolygons(geometry2));
11314
11314
  a.clipTo(b, false);
11315
11315
  b.clipTo(a);
11316
11316
  b.invert();
11317
11317
  b.clipTo(a);
11318
11318
  b.invert();
11319
11319
  const newpolygons = a.allPolygons().concat(b.allPolygons());
11320
- const result = geom33.create(newpolygons);
11320
+ const result = geom34.create(newpolygons);
11321
11321
  return result;
11322
11322
  };
11323
11323
  var unionForNonIntersecting = (geometry1, geometry2) => {
11324
- let newpolygons = geom33.toPolygons(geometry1);
11325
- newpolygons = newpolygons.concat(geom33.toPolygons(geometry2));
11326
- return geom33.create(newpolygons);
11324
+ let newpolygons = geom34.toPolygons(geometry1);
11325
+ newpolygons = newpolygons.concat(geom34.toPolygons(geometry2));
11326
+ return geom34.create(newpolygons);
11327
11327
  };
11328
11328
  module.exports = unionSub;
11329
11329
  }
@@ -11355,7 +11355,7 @@ var require_minkowskiSum = __commonJS({
11355
11355
  "node_modules/@jscad/modeling/src/operations/minkowski/minkowskiSum.js"(exports, module) {
11356
11356
  "use strict";
11357
11357
  var flatten = require_flatten();
11358
- var geom33 = require_geom3();
11358
+ var geom34 = require_geom3();
11359
11359
  var poly3 = require_poly3();
11360
11360
  var hullPoints3 = require_hullPoints3();
11361
11361
  var unionGeom3 = require_unionGeom3();
@@ -11365,11 +11365,11 @@ var require_minkowskiSum = __commonJS({
11365
11365
  throw new Error("minkowskiSum requires exactly two geometries");
11366
11366
  }
11367
11367
  const [geomA, geomB] = geometries;
11368
- if (!geom33.isA(geomA) || !geom33.isA(geomB)) {
11368
+ if (!geom34.isA(geomA) || !geom34.isA(geomB)) {
11369
11369
  throw new Error("minkowskiSum requires geom3 geometries");
11370
11370
  }
11371
- const aConvex = geom33.isConvex(geomA);
11372
- const bConvex = geom33.isConvex(geomB);
11371
+ const aConvex = geom34.isConvex(geomA);
11372
+ const bConvex = geom34.isConvex(geomB);
11373
11373
  if (aConvex && bConvex) {
11374
11374
  return minkowskiSumConvex(geomA, geomB);
11375
11375
  }
@@ -11384,7 +11384,7 @@ var require_minkowskiSum = __commonJS({
11384
11384
  var minkowskiSumNonConvexConvex = (geomA, geomB) => {
11385
11385
  const tetrahedra = decomposeIntoTetrahedra(geomA);
11386
11386
  if (tetrahedra.length === 0) {
11387
- return geom33.create();
11387
+ return geom34.create();
11388
11388
  }
11389
11389
  const parts = tetrahedra.map((tet) => minkowskiSumConvex(tet, geomB));
11390
11390
  if (parts.length === 1) {
@@ -11393,7 +11393,7 @@ var require_minkowskiSum = __commonJS({
11393
11393
  return unionGeom3(parts);
11394
11394
  };
11395
11395
  var decomposeIntoTetrahedra = (geometry) => {
11396
- const polygons = geom33.toPolygons(geometry);
11396
+ const polygons = geom34.toPolygons(geometry);
11397
11397
  if (polygons.length === 0) {
11398
11398
  return [];
11399
11399
  }
@@ -11424,7 +11424,7 @@ var require_minkowskiSum = __commonJS({
11424
11424
  const v1 = vertices[j];
11425
11425
  const v2 = vertices[j + 1];
11426
11426
  const tetPolygons = createTetrahedronPolygons(apex, v0, v1, v2);
11427
- tetrahedra.push(geom33.create(tetPolygons));
11427
+ tetrahedra.push(geom34.create(tetPolygons));
11428
11428
  }
11429
11429
  }
11430
11430
  return tetrahedra;
@@ -11445,7 +11445,7 @@ var require_minkowskiSum = __commonJS({
11445
11445
  const pointsA = extractUniqueVertices(geomA);
11446
11446
  const pointsB = extractUniqueVertices(geomB);
11447
11447
  if (pointsA.length === 0 || pointsB.length === 0) {
11448
- return geom33.create();
11448
+ return geom34.create();
11449
11449
  }
11450
11450
  const summedPoints = [];
11451
11451
  for (let i = 0; i < pointsA.length; i++) {
@@ -11456,12 +11456,12 @@ var require_minkowskiSum = __commonJS({
11456
11456
  }
11457
11457
  }
11458
11458
  const hullPolygons = hullPoints3(summedPoints);
11459
- return geom33.create(hullPolygons);
11459
+ return geom34.create(hullPolygons);
11460
11460
  };
11461
11461
  var extractUniqueVertices = (geometry) => {
11462
11462
  const found = /* @__PURE__ */ new Set();
11463
11463
  const unique = [];
11464
- const polygons = geom33.toPolygons(geometry);
11464
+ const polygons = geom34.toPolygons(geometry);
11465
11465
  for (let i = 0; i < polygons.length; i++) {
11466
11466
  const vertices = polygons[i].vertices;
11467
11467
  for (let j = 0; j < vertices.length; j++) {
@@ -11485,7 +11485,7 @@ var require_scissionGeom3 = __commonJS({
11485
11485
  "use strict";
11486
11486
  var vec3 = require_vec3();
11487
11487
  var measureEpsilon = require_measureEpsilon();
11488
- var geom33 = require_geom3();
11488
+ var geom34 = require_geom3();
11489
11489
  var sortNb = (array) => array.sort((a, b) => a - b).filter((item, pos, ary) => !pos || item !== ary[pos - 1]);
11490
11490
  var insertMapping = (map, point, index) => {
11491
11491
  const key = `${point}`;
@@ -11502,7 +11502,7 @@ var require_scissionGeom3 = __commonJS({
11502
11502
  };
11503
11503
  var scissionGeom3 = (geometry) => {
11504
11504
  const eps = measureEpsilon(geometry);
11505
- const polygons = geom33.toPolygons(geometry);
11505
+ const polygons = geom34.toPolygons(geometry);
11506
11506
  const pl = polygons.length;
11507
11507
  const indexesPerPoint = /* @__PURE__ */ new Map();
11508
11508
  const temp = vec3.create();
@@ -11547,7 +11547,7 @@ var require_scissionGeom3 = __commonJS({
11547
11547
  if (indexesPerPolygon[i].indexes) {
11548
11548
  const newpolygons = [];
11549
11549
  indexesPerPolygon[i].indexes.forEach((e, p) => newpolygons.push(polygons[p]));
11550
- newgeometries.push(geom33.create(newpolygons));
11550
+ newgeometries.push(geom34.create(newpolygons));
11551
11551
  }
11552
11552
  }
11553
11553
  return newgeometries;
@@ -11561,13 +11561,13 @@ var require_scission = __commonJS({
11561
11561
  "node_modules/@jscad/modeling/src/operations/booleans/scission.js"(exports, module) {
11562
11562
  "use strict";
11563
11563
  var flatten = require_flatten();
11564
- var geom33 = require_geom3();
11564
+ var geom34 = require_geom3();
11565
11565
  var scissionGeom3 = require_scissionGeom3();
11566
11566
  var scission = (...objects) => {
11567
11567
  objects = flatten(objects);
11568
11568
  if (objects.length === 0) throw new Error("wrong number of arguments");
11569
11569
  const results = objects.map((object) => {
11570
- if (geom33.isA(object)) return scissionGeom3(object);
11570
+ if (geom34.isA(object)) return scissionGeom3(object);
11571
11571
  return object;
11572
11572
  });
11573
11573
  return results.length === 1 ? results[0] : results;
@@ -11580,22 +11580,22 @@ var require_scission = __commonJS({
11580
11580
  var require_subtractGeom3Sub = __commonJS({
11581
11581
  "node_modules/@jscad/modeling/src/operations/booleans/subtractGeom3Sub.js"(exports, module) {
11582
11582
  "use strict";
11583
- var geom33 = require_geom3();
11583
+ var geom34 = require_geom3();
11584
11584
  var mayOverlap = require_mayOverlap();
11585
11585
  var { Tree } = require_trees();
11586
11586
  var subtractGeom3Sub = (geometry1, geometry2) => {
11587
11587
  if (!mayOverlap(geometry1, geometry2)) {
11588
- return geom33.clone(geometry1);
11588
+ return geom34.clone(geometry1);
11589
11589
  }
11590
- const a = new Tree(geom33.toPolygons(geometry1));
11591
- const b = new Tree(geom33.toPolygons(geometry2));
11590
+ const a = new Tree(geom34.toPolygons(geometry1));
11591
+ const b = new Tree(geom34.toPolygons(geometry2));
11592
11592
  a.invert();
11593
11593
  a.clipTo(b);
11594
11594
  b.clipTo(a, true);
11595
11595
  a.addPolygons(b.allPolygons());
11596
11596
  a.invert();
11597
11597
  const newpolygons = a.allPolygons();
11598
- return geom33.create(newpolygons);
11598
+ return geom34.create(newpolygons);
11599
11599
  };
11600
11600
  module.exports = subtractGeom3Sub;
11601
11601
  }
@@ -11608,7 +11608,7 @@ var require_subtractGeom3 = __commonJS({
11608
11608
  var flatten = require_flatten();
11609
11609
  var retessellate = require_retessellate();
11610
11610
  var subtractSub = require_subtractGeom3Sub();
11611
- var subtract2 = (...geometries) => {
11611
+ var subtract3 = (...geometries) => {
11612
11612
  geometries = flatten(geometries);
11613
11613
  let newgeometry = geometries.shift();
11614
11614
  geometries.forEach((geometry) => {
@@ -11617,7 +11617,7 @@ var require_subtractGeom3 = __commonJS({
11617
11617
  newgeometry = retessellate(newgeometry);
11618
11618
  return newgeometry;
11619
11619
  };
11620
- module.exports = subtract2;
11620
+ module.exports = subtract3;
11621
11621
  }
11622
11622
  });
11623
11623
 
@@ -11626,19 +11626,19 @@ var require_subtractGeom2 = __commonJS({
11626
11626
  "node_modules/@jscad/modeling/src/operations/booleans/subtractGeom2.js"(exports, module) {
11627
11627
  "use strict";
11628
11628
  var flatten = require_flatten();
11629
- var geom33 = require_geom3();
11629
+ var geom34 = require_geom3();
11630
11630
  var measureEpsilon = require_measureEpsilon();
11631
11631
  var fromFakePolygons = require_fromFakePolygons();
11632
11632
  var to3DWalls = require_to3DWalls();
11633
11633
  var subtractGeom3 = require_subtractGeom3();
11634
- var subtract2 = (...geometries) => {
11634
+ var subtract3 = (...geometries) => {
11635
11635
  geometries = flatten(geometries);
11636
11636
  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
11637
11637
  const newgeom3 = subtractGeom3(newgeometries);
11638
11638
  const epsilon = measureEpsilon(newgeom3);
11639
- return fromFakePolygons(epsilon, geom33.toPolygons(newgeom3));
11639
+ return fromFakePolygons(epsilon, geom34.toPolygons(newgeom3));
11640
11640
  };
11641
- module.exports = subtract2;
11641
+ module.exports = subtract3;
11642
11642
  }
11643
11643
  });
11644
11644
 
@@ -11649,10 +11649,10 @@ var require_subtract4 = __commonJS({
11649
11649
  var flatten = require_flatten();
11650
11650
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
11651
11651
  var geom2 = require_geom2();
11652
- var geom33 = require_geom3();
11652
+ var geom34 = require_geom3();
11653
11653
  var subtractGeom2 = require_subtractGeom2();
11654
11654
  var subtractGeom3 = require_subtractGeom3();
11655
- var subtract2 = (...geometries) => {
11655
+ var subtract3 = (...geometries) => {
11656
11656
  geometries = flatten(geometries);
11657
11657
  if (geometries.length === 0) throw new Error("wrong number of arguments");
11658
11658
  if (!areAllShapesTheSameType(geometries)) {
@@ -11660,10 +11660,10 @@ var require_subtract4 = __commonJS({
11660
11660
  }
11661
11661
  const geometry = geometries[0];
11662
11662
  if (geom2.isA(geometry)) return subtractGeom2(geometries);
11663
- if (geom33.isA(geometry)) return subtractGeom3(geometries);
11663
+ if (geom34.isA(geometry)) return subtractGeom3(geometries);
11664
11664
  return geometry;
11665
11665
  };
11666
- module.exports = subtract2;
11666
+ module.exports = subtract3;
11667
11667
  }
11668
11668
  });
11669
11669
 
@@ -11672,7 +11672,7 @@ var require_unionGeom2 = __commonJS({
11672
11672
  "node_modules/@jscad/modeling/src/operations/booleans/unionGeom2.js"(exports, module) {
11673
11673
  "use strict";
11674
11674
  var flatten = require_flatten();
11675
- var geom33 = require_geom3();
11675
+ var geom34 = require_geom3();
11676
11676
  var measureEpsilon = require_measureEpsilon();
11677
11677
  var fromFakePolygons = require_fromFakePolygons();
11678
11678
  var to3DWalls = require_to3DWalls();
@@ -11682,7 +11682,7 @@ var require_unionGeom2 = __commonJS({
11682
11682
  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
11683
11683
  const newgeom3 = unionGeom3(newgeometries);
11684
11684
  const epsilon = measureEpsilon(newgeom3);
11685
- return fromFakePolygons(epsilon, geom33.toPolygons(newgeom3));
11685
+ return fromFakePolygons(epsilon, geom34.toPolygons(newgeom3));
11686
11686
  };
11687
11687
  module.exports = union2;
11688
11688
  }
@@ -11695,7 +11695,7 @@ var require_union = __commonJS({
11695
11695
  var flatten = require_flatten();
11696
11696
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
11697
11697
  var geom2 = require_geom2();
11698
- var geom33 = require_geom3();
11698
+ var geom34 = require_geom3();
11699
11699
  var unionGeom2 = require_unionGeom2();
11700
11700
  var unionGeom3 = require_unionGeom3();
11701
11701
  var union2 = (...geometries) => {
@@ -11706,7 +11706,7 @@ var require_union = __commonJS({
11706
11706
  }
11707
11707
  const geometry = geometries[0];
11708
11708
  if (geom2.isA(geometry)) return unionGeom2(geometries);
11709
- if (geom33.isA(geometry)) return unionGeom3(geometries);
11709
+ if (geom34.isA(geometry)) return unionGeom3(geometries);
11710
11710
  return geometry;
11711
11711
  };
11712
11712
  module.exports = union2;
@@ -11900,7 +11900,7 @@ var require_extrudePolygon = __commonJS({
11900
11900
  "use strict";
11901
11901
  var mat4 = require_mat4();
11902
11902
  var vec3 = require_vec3();
11903
- var geom33 = require_geom3();
11903
+ var geom34 = require_geom3();
11904
11904
  var poly3 = require_poly3();
11905
11905
  var extrudePolygon = (offsetvector, polygon1) => {
11906
11906
  const direction = vec3.dot(poly3.plane(polygon1), offsetvector);
@@ -11921,7 +11921,7 @@ var require_extrudePolygon = __commonJS({
11921
11921
  newpolygons.push(sideFacePolygon);
11922
11922
  }
11923
11923
  newpolygons.push(poly3.invert(polygon22));
11924
- return geom33.create(newpolygons);
11924
+ return geom34.create(newpolygons);
11925
11925
  };
11926
11926
  module.exports = extrudePolygon;
11927
11927
  }
@@ -11935,7 +11935,7 @@ var require_expandShell = __commonJS({
11935
11935
  var mat4 = require_mat4();
11936
11936
  var vec3 = require_vec3();
11937
11937
  var fnNumberSort = require_fnNumberSort();
11938
- var geom33 = require_geom3();
11938
+ var geom34 = require_geom3();
11939
11939
  var poly3 = require_poly3();
11940
11940
  var sphere = require_sphere();
11941
11941
  var retessellate = require_retessellate();
@@ -11975,12 +11975,12 @@ var require_expandShell = __commonJS({
11975
11975
  segments: 12
11976
11976
  };
11977
11977
  const { delta, segments } = Object.assign({}, defaults, options);
11978
- let result = geom33.create();
11978
+ let result = geom34.create();
11979
11979
  const vertices2planes = /* @__PURE__ */ new Map();
11980
11980
  const edges2planes = /* @__PURE__ */ new Map();
11981
11981
  const v1 = vec3.create();
11982
11982
  const v2 = vec3.create();
11983
- const polygons = geom33.toPolygons(geometry);
11983
+ const polygons = geom34.toPolygons(geometry);
11984
11984
  polygons.forEach((polygon3, index) => {
11985
11985
  const extrudevector = vec3.scale(vec3.create(), poly3.plane(polygon3), 2 * delta);
11986
11986
  const translatedpolygon = poly3.transform(mat4.fromTranslation(mat4.create(), vec3.scale(vec3.create(), extrudevector, -0.5)), polygon3);
@@ -12055,7 +12055,7 @@ var require_expandShell = __commonJS({
12055
12055
  endfacevertices.reverse();
12056
12056
  polygons2.push(poly3.create(startfacevertices));
12057
12057
  polygons2.push(poly3.create(endfacevertices));
12058
- const cylinder2 = geom33.create(polygons2);
12058
+ const cylinder2 = geom34.create(polygons2);
12059
12059
  result = unionGeom3Sub(result, cylinder2);
12060
12060
  });
12061
12061
  vertices2planes.forEach((item) => {
@@ -12099,7 +12099,7 @@ var require_expandShell = __commonJS({
12099
12099
  var require_expandGeom3 = __commonJS({
12100
12100
  "node_modules/@jscad/modeling/src/operations/expansions/expandGeom3.js"(exports, module) {
12101
12101
  "use strict";
12102
- var geom33 = require_geom3();
12102
+ var geom34 = require_geom3();
12103
12103
  var union2 = require_union();
12104
12104
  var expandShell = require_expandShell();
12105
12105
  var expandGeom3 = (options, geometry) => {
@@ -12112,7 +12112,7 @@ var require_expandGeom3 = __commonJS({
12112
12112
  if (!(corners === "round")) {
12113
12113
  throw new Error('corners must be "round" for 3D geometries');
12114
12114
  }
12115
- const polygons = geom33.toPolygons(geometry);
12115
+ const polygons = geom34.toPolygons(geometry);
12116
12116
  if (polygons.length === 0) throw new Error("the given geometry cannot be empty");
12117
12117
  options = { delta, corners, segments };
12118
12118
  const expanded = expandShell(options, geometry);
@@ -12209,7 +12209,7 @@ var require_expand = __commonJS({
12209
12209
  "use strict";
12210
12210
  var flatten = require_flatten();
12211
12211
  var geom2 = require_geom2();
12212
- var geom33 = require_geom3();
12212
+ var geom34 = require_geom3();
12213
12213
  var path2 = require_path2();
12214
12214
  var expandGeom2 = require_expandGeom2();
12215
12215
  var expandGeom3 = require_expandGeom3();
@@ -12220,7 +12220,7 @@ var require_expand = __commonJS({
12220
12220
  const results = objects.map((object) => {
12221
12221
  if (path2.isA(object)) return expandPath2(options, object);
12222
12222
  if (geom2.isA(object)) return expandGeom2(options, object);
12223
- if (geom33.isA(object)) return expandGeom3(options, object);
12223
+ if (geom34.isA(object)) return expandGeom3(options, object);
12224
12224
  return object;
12225
12225
  });
12226
12226
  return results.length === 1 ? results[0] : results;
@@ -12582,7 +12582,7 @@ var require_project = __commonJS({
12582
12582
  var plane = require_plane();
12583
12583
  var mat4 = require_mat4();
12584
12584
  var geom2 = require_geom2();
12585
- var geom33 = require_geom3();
12585
+ var geom34 = require_geom3();
12586
12586
  var poly3 = require_poly3();
12587
12587
  var measureEpsilon = require_measureEpsilon();
12588
12588
  var unionGeom2 = require_unionGeom2();
@@ -12594,7 +12594,7 @@ var require_project = __commonJS({
12594
12594
  const epsilon = measureEpsilon(geometry);
12595
12595
  const epsilonArea = epsilon * epsilon * Math.sqrt(3) / 4;
12596
12596
  if (epsilon === 0) return geom2.create();
12597
- const polygons = geom33.toPolygons(geometry);
12597
+ const polygons = geom34.toPolygons(geometry);
12598
12598
  let projpolys = [];
12599
12599
  for (let i = 0; i < polygons.length; i++) {
12600
12600
  const newpoints = polygons[i].vertices.map((v) => plane.projectionOfPoint(projplane, v));
@@ -12623,7 +12623,7 @@ var require_project = __commonJS({
12623
12623
  if (objects.length === 0) throw new Error("wrong number of arguments");
12624
12624
  options = { axis, origin };
12625
12625
  const results = objects.map((object) => {
12626
- if (geom33.isA(object)) return projectGeom3(options, object);
12626
+ if (geom34.isA(object)) return projectGeom3(options, object);
12627
12627
  return object;
12628
12628
  });
12629
12629
  return results.length === 1 ? results[0] : results;
@@ -12695,7 +12695,7 @@ var require_toUniquePoints = __commonJS({
12695
12695
  "node_modules/@jscad/modeling/src/operations/hulls/toUniquePoints.js"(exports, module) {
12696
12696
  "use strict";
12697
12697
  var geom2 = require_geom2();
12698
- var geom33 = require_geom3();
12698
+ var geom34 = require_geom3();
12699
12699
  var path2 = require_path2();
12700
12700
  var toUniquePoints = (geometries) => {
12701
12701
  const found = /* @__PURE__ */ new Set();
@@ -12710,8 +12710,8 @@ var require_toUniquePoints = __commonJS({
12710
12710
  geometries.forEach((geometry) => {
12711
12711
  if (geom2.isA(geometry)) {
12712
12712
  geom2.toPoints(geometry).forEach(addPoint);
12713
- } else if (geom33.isA(geometry)) {
12714
- geom33.toPoints(geometry).forEach((points) => points.forEach(addPoint));
12713
+ } else if (geom34.isA(geometry)) {
12714
+ geom34.toPoints(geometry).forEach((points) => points.forEach(addPoint));
12715
12715
  } else if (path2.isA(geometry)) {
12716
12716
  path2.toPoints(geometry).forEach(addPoint);
12717
12717
  }
@@ -12764,14 +12764,14 @@ var require_hullGeom3 = __commonJS({
12764
12764
  "node_modules/@jscad/modeling/src/operations/hulls/hullGeom3.js"(exports, module) {
12765
12765
  "use strict";
12766
12766
  var flatten = require_flatten();
12767
- var geom33 = require_geom3();
12767
+ var geom34 = require_geom3();
12768
12768
  var toUniquePoints = require_toUniquePoints();
12769
12769
  var hullPoints3 = require_hullPoints3();
12770
12770
  var hullGeom3 = (...geometries) => {
12771
12771
  geometries = flatten(geometries);
12772
12772
  const unique = toUniquePoints(geometries);
12773
- if (unique.length === 0) return geom33.create();
12774
- return geom33.create(hullPoints3(unique));
12773
+ if (unique.length === 0) return geom34.create();
12774
+ return geom34.create(hullPoints3(unique));
12775
12775
  };
12776
12776
  module.exports = hullGeom3;
12777
12777
  }
@@ -12784,7 +12784,7 @@ var require_hull = __commonJS({
12784
12784
  var flatten = require_flatten();
12785
12785
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
12786
12786
  var geom2 = require_geom2();
12787
- var geom33 = require_geom3();
12787
+ var geom34 = require_geom3();
12788
12788
  var path2 = require_path2();
12789
12789
  var hullPath2 = require_hullPath2();
12790
12790
  var hullGeom2 = require_hullGeom2();
@@ -12798,7 +12798,7 @@ var require_hull = __commonJS({
12798
12798
  const geometry = geometries[0];
12799
12799
  if (path2.isA(geometry)) return hullPath2(geometries);
12800
12800
  if (geom2.isA(geometry)) return hullGeom2(geometries);
12801
- if (geom33.isA(geometry)) return hullGeom3(geometries);
12801
+ if (geom34.isA(geometry)) return hullGeom3(geometries);
12802
12802
  return geometry;
12803
12803
  };
12804
12804
  module.exports = hull;
@@ -13337,7 +13337,7 @@ var require_generalize = __commonJS({
13337
13337
  var flatten = require_flatten();
13338
13338
  var measureEpsilon = require_measureEpsilon();
13339
13339
  var geom2 = require_geom2();
13340
- var geom33 = require_geom3();
13340
+ var geom34 = require_geom3();
13341
13341
  var path2 = require_path2();
13342
13342
  var snapPolygons = require_snapPolygons();
13343
13343
  var mergePolygons = require_mergePolygons();
@@ -13353,7 +13353,7 @@ var require_generalize = __commonJS({
13353
13353
  };
13354
13354
  const { snap, simplify, triangulate } = Object.assign({}, defaults, options);
13355
13355
  const epsilon = measureEpsilon(geometry);
13356
- let polygons = geom33.toPolygons(geometry);
13356
+ let polygons = geom34.toPolygons(geometry);
13357
13357
  if (snap) {
13358
13358
  polygons = snapPolygons(epsilon, polygons);
13359
13359
  }
@@ -13374,7 +13374,7 @@ var require_generalize = __commonJS({
13374
13374
  const results = geometries.map((geometry) => {
13375
13375
  if (path2.isA(geometry)) return generalizePath2(options, geometry);
13376
13376
  if (geom2.isA(geometry)) return generalizeGeom2(options, geometry);
13377
- if (geom33.isA(geometry)) return generalizeGeom3(options, geometry);
13377
+ if (geom34.isA(geometry)) return generalizeGeom3(options, geometry);
13378
13378
  throw new Error("invalid geometry");
13379
13379
  });
13380
13380
  return results.length === 1 ? results[0] : results;
@@ -13390,7 +13390,7 @@ var require_snap3 = __commonJS({
13390
13390
  var flatten = require_flatten();
13391
13391
  var vec2 = require_vec2();
13392
13392
  var geom2 = require_geom2();
13393
- var geom33 = require_geom3();
13393
+ var geom34 = require_geom3();
13394
13394
  var path2 = require_path2();
13395
13395
  var measureEpsilon = require_measureEpsilon();
13396
13396
  var snapPolygons = require_snapPolygons();
@@ -13409,9 +13409,9 @@ var require_snap3 = __commonJS({
13409
13409
  };
13410
13410
  var snapGeom3 = (geometry) => {
13411
13411
  const epsilon = measureEpsilon(geometry);
13412
- const polygons = geom33.toPolygons(geometry);
13412
+ const polygons = geom34.toPolygons(geometry);
13413
13413
  const newpolygons = snapPolygons(epsilon, polygons);
13414
- return geom33.create(newpolygons);
13414
+ return geom34.create(newpolygons);
13415
13415
  };
13416
13416
  var snap = (...geometries) => {
13417
13417
  geometries = flatten(geometries);
@@ -13419,7 +13419,7 @@ var require_snap3 = __commonJS({
13419
13419
  const results = geometries.map((geometry) => {
13420
13420
  if (path2.isA(geometry)) return snapPath2(geometry);
13421
13421
  if (geom2.isA(geometry)) return snapGeom2(geometry);
13422
- if (geom33.isA(geometry)) return snapGeom3(geometry);
13422
+ if (geom34.isA(geometry)) return snapGeom3(geometry);
13423
13423
  return geometry;
13424
13424
  });
13425
13425
  return results.length === 1 ? results[0] : results;
@@ -13533,9 +13533,9 @@ var require_center = __commonJS({
13533
13533
  "use strict";
13534
13534
  var flatten = require_flatten();
13535
13535
  var geom2 = require_geom2();
13536
- var geom33 = require_geom3();
13536
+ var geom34 = require_geom3();
13537
13537
  var path2 = require_path2();
13538
- var measureBoundingBox2 = require_measureBoundingBox2();
13538
+ var measureBoundingBox3 = require_measureBoundingBox2();
13539
13539
  var { translate: translate3 } = require_translate2();
13540
13540
  var centerGeometry = (options, object) => {
13541
13541
  const defaults = {
@@ -13543,7 +13543,7 @@ var require_center = __commonJS({
13543
13543
  relativeTo: [0, 0, 0]
13544
13544
  };
13545
13545
  const { axes, relativeTo } = Object.assign({}, defaults, options);
13546
- const bounds = measureBoundingBox2(object);
13546
+ const bounds = measureBoundingBox3(object);
13547
13547
  const offset = [0, 0, 0];
13548
13548
  if (axes[0]) offset[0] = relativeTo[0] - (bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2);
13549
13549
  if (axes[1]) offset[1] = relativeTo[1] - (bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2);
@@ -13564,7 +13564,7 @@ var require_center = __commonJS({
13564
13564
  const results = objects.map((object) => {
13565
13565
  if (path2.isA(object)) return centerGeometry(options, object);
13566
13566
  if (geom2.isA(object)) return centerGeometry(options, object);
13567
- if (geom33.isA(object)) return centerGeometry(options, object);
13567
+ if (geom34.isA(object)) return centerGeometry(options, object);
13568
13568
  return object;
13569
13569
  });
13570
13570
  return results.length === 1 ? results[0] : results;
@@ -13588,7 +13588,7 @@ var require_scale4 = __commonJS({
13588
13588
  var flatten = require_flatten();
13589
13589
  var mat4 = require_mat4();
13590
13590
  var geom2 = require_geom2();
13591
- var geom33 = require_geom3();
13591
+ var geom34 = require_geom3();
13592
13592
  var path2 = require_path2();
13593
13593
  var scale = (factors, ...objects) => {
13594
13594
  if (!Array.isArray(factors)) throw new Error("factors must be an array");
@@ -13601,7 +13601,7 @@ var require_scale4 = __commonJS({
13601
13601
  const results = objects.map((object) => {
13602
13602
  if (path2.isA(object)) return path2.transform(matrix, object);
13603
13603
  if (geom2.isA(object)) return geom2.transform(matrix, object);
13604
- if (geom33.isA(object)) return geom33.transform(matrix, object);
13604
+ if (geom34.isA(object)) return geom34.transform(matrix, object);
13605
13605
  return object;
13606
13606
  });
13607
13607
  return results.length === 1 ? results[0] : results;
@@ -13624,7 +13624,7 @@ var require_transform12 = __commonJS({
13624
13624
  "use strict";
13625
13625
  var flatten = require_flatten();
13626
13626
  var geom2 = require_geom2();
13627
- var geom33 = require_geom3();
13627
+ var geom34 = require_geom3();
13628
13628
  var path2 = require_path2();
13629
13629
  var transform = (matrix, ...objects) => {
13630
13630
  objects = flatten(objects);
@@ -13632,7 +13632,7 @@ var require_transform12 = __commonJS({
13632
13632
  const results = objects.map((object) => {
13633
13633
  if (path2.isA(object)) return path2.transform(matrix, object);
13634
13634
  if (geom2.isA(object)) return geom2.transform(matrix, object);
13635
- if (geom33.isA(object)) return geom33.transform(matrix, object);
13635
+ if (geom34.isA(object)) return geom34.transform(matrix, object);
13636
13636
  return object;
13637
13637
  });
13638
13638
  return results.length === 1 ? results[0] : results;
@@ -15582,11 +15582,99 @@ var filterCutoutsForBoard = (cutouts, board) => {
15582
15582
  };
15583
15583
 
15584
15584
  // lib/utils/pcb-board-geometry.ts
15585
- var geom3 = __toESM(require_geom3(), 1);
15585
+ var geom32 = __toESM(require_geom3(), 1);
15586
15586
  var import_extrusions2 = __toESM(require_extrusions(), 1);
15587
- var import_transforms2 = __toESM(require_transforms(), 1);
15587
+ var import_transforms3 = __toESM(require_transforms(), 1);
15588
15588
  var import_primitives2 = __toESM(require_primitives(), 1);
15589
15589
 
15590
+ // lib/utils/cut-board-mesh-outside-board-boundary.ts
15591
+ var geom3 = __toESM(require_geom3(), 1);
15592
+ var import_measureBoundingBox = __toESM(require_measureBoundingBox2(), 1);
15593
+ var import_booleans2 = __toESM(require_booleans(), 1);
15594
+ var import_transforms2 = __toESM(require_transforms(), 1);
15595
+
15596
+ // lib/utils/batched-union.ts
15597
+ var import_booleans = __toESM(require_booleans(), 1);
15598
+ var batchedUnion = (geoms, batchSize = 50) => {
15599
+ if (geoms.length === 0) {
15600
+ throw new Error("Cannot union empty array");
15601
+ }
15602
+ if (geoms.length === 1) {
15603
+ return geoms[0];
15604
+ }
15605
+ let results = [...geoms];
15606
+ while (results.length > 1) {
15607
+ const newResults = [];
15608
+ for (let i = 0; i < results.length; i += batchSize) {
15609
+ const batch = results.slice(i, i + batchSize);
15610
+ if (batch.length === 1) {
15611
+ newResults.push(batch[0]);
15612
+ } else {
15613
+ newResults.push((0, import_booleans.union)(...batch));
15614
+ }
15615
+ }
15616
+ results = newResults;
15617
+ }
15618
+ return results[0];
15619
+ };
15620
+
15621
+ // lib/utils/cut-board-mesh-outside-board-boundary.ts
15622
+ var cutBoardMeshOutsideBoardBoundary = ({
15623
+ board,
15624
+ center,
15625
+ thickness,
15626
+ holes,
15627
+ platedHoles,
15628
+ cutouts,
15629
+ segments
15630
+ }) => {
15631
+ let boardGeom = createBoardOutlineGeom(board, center, thickness);
15632
+ const subtractGeoms = [
15633
+ ...createHoleGeoms(center, thickness, holes, platedHoles, segments),
15634
+ ...createCutoutGeoms(center, thickness, cutouts, segments)
15635
+ ];
15636
+ if (subtractGeoms.length > 0) {
15637
+ boardGeom = (0, import_booleans2.subtract)(boardGeom, batchedUnion(subtractGeoms));
15638
+ }
15639
+ boardGeom = (0, import_transforms2.rotateX)(-Math.PI / 2, boardGeom);
15640
+ const polygons = geom3.toPolygons(boardGeom);
15641
+ return {
15642
+ triangles: geom3ToTriangles(boardGeom, polygons),
15643
+ boundingBox: createBoundingBox((0, import_measureBoundingBox.default)(boardGeom))
15644
+ };
15645
+ };
15646
+
15647
+ // lib/utils/has-boundary-crossing-loops.ts
15648
+ var LOOP_CONTAINMENT_EPSILON = 1e-8;
15649
+ var hasBoundaryCrossingLoops = (outerLoop, innerLoops) => {
15650
+ return innerLoops.some(
15651
+ (loop) => loop.some((point) => !isPointStrictlyInsideLoop(point, outerLoop))
15652
+ );
15653
+ };
15654
+ var isPointStrictlyInsideLoop = (point, loop) => {
15655
+ let inside = false;
15656
+ for (let i = 0, j = loop.length - 1; i < loop.length; j = i++) {
15657
+ const a = loop[i];
15658
+ const b = loop[j];
15659
+ if (isPointOnSegment(point, a, b)) {
15660
+ return false;
15661
+ }
15662
+ const intersects = a.y > point.y !== b.y > point.y && point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x;
15663
+ if (intersects) {
15664
+ inside = !inside;
15665
+ }
15666
+ }
15667
+ return inside;
15668
+ };
15669
+ var isPointOnSegment = (point, a, b) => {
15670
+ const cross2 = (point.y - a.y) * (b.x - a.x) - (point.x - a.x) * (b.y - a.y);
15671
+ if (Math.abs(cross2) > LOOP_CONTAINMENT_EPSILON) return false;
15672
+ const dot2 = (point.x - a.x) * (b.x - a.x) + (point.y - a.y) * (b.y - a.y);
15673
+ if (dot2 < -LOOP_CONTAINMENT_EPSILON) return false;
15674
+ const squaredLength = (b.x - a.x) ** 2 + (b.y - a.y) ** 2;
15675
+ return dot2 <= squaredLength + LOOP_CONTAINMENT_EPSILON;
15676
+ };
15677
+
15590
15678
  // lib/utils/geometry-loops.ts
15591
15679
  var POINT_EPSILON = 1e-8;
15592
15680
  var RADIUS_EPSILON = 1e-4;
@@ -16069,12 +16157,12 @@ var createBoardOutlineGeom = (board, center, thickness) => {
16069
16157
  }
16070
16158
  const shape2d = (0, import_primitives2.polygon)({ points: outlinePoints });
16071
16159
  let geom2 = (0, import_extrusions2.extrudeLinear)({ height: thickness }, shape2d);
16072
- geom2 = (0, import_transforms2.translate)([0, 0, -thickness / 2], geom2);
16160
+ geom2 = (0, import_transforms3.translate)([0, 0, -thickness / 2], geom2);
16073
16161
  return geom2;
16074
16162
  }
16075
16163
  const baseRect = (0, import_primitives2.rectangle)({ size: [board.width, board.height] });
16076
16164
  let geom = (0, import_extrusions2.extrudeLinear)({ height: thickness }, baseRect);
16077
- geom = (0, import_transforms2.translate)([0, 0, -thickness / 2], geom);
16165
+ geom = (0, import_transforms3.translate)([0, 0, -thickness / 2], geom);
16078
16166
  return geom;
16079
16167
  };
16080
16168
  var createPillHoleWithSegments = (x, y, width, height, thickness, rotationRad = 0, segments = DEFAULT_QUALITY_MODE_SEGMENTS) => {
@@ -16087,11 +16175,11 @@ var createPillHoleWithSegments = (x, y, width, height, thickness, rotationRad =
16087
16175
  segments
16088
16176
  });
16089
16177
  let hole3d = (0, import_extrusions2.extrudeLinear)({ height: thickness + 1 }, hole2d);
16090
- hole3d = (0, import_transforms2.translate)([0, 0, -(thickness + 1) / 2], hole3d);
16178
+ hole3d = (0, import_transforms3.translate)([0, 0, -(thickness + 1) / 2], hole3d);
16091
16179
  if (rotationRad !== 0) {
16092
- hole3d = (0, import_transforms2.rotateZ)(rotationRad, hole3d);
16180
+ hole3d = (0, import_transforms3.rotateZ)(rotationRad, hole3d);
16093
16181
  }
16094
- return (0, import_transforms2.translate)([x, y, 0], hole3d);
16182
+ return (0, import_transforms3.translate)([x, y, 0], hole3d);
16095
16183
  };
16096
16184
  var createHoleGeoms = (boardCenter, thickness, holes = [], platedHoles = [], segments = DEFAULT_QUALITY_MODE_SEGMENTS) => {
16097
16185
  const holeGeoms = [];
@@ -16179,7 +16267,7 @@ var createHoleGeoms = (boardCenter, thickness, holes = [], platedHoles = [], seg
16179
16267
  return holeGeoms;
16180
16268
  };
16181
16269
  var geom3ToTriangles = (geometry, polygons) => {
16182
- const sourcePolygons = polygons ?? geom3.toPolygons(geometry);
16270
+ const sourcePolygons = polygons ?? geom32.toPolygons(geometry);
16183
16271
  const triangles = [];
16184
16272
  for (const poly of sourcePolygons) {
16185
16273
  if (!poly || poly.vertices.length < 3) continue;
@@ -16250,6 +16338,17 @@ var createBoardMesh = (board, options) => {
16250
16338
  segments
16251
16339
  })
16252
16340
  ];
16341
+ if (hasBoundaryCrossingLoops(outerLoop, holeLoops)) {
16342
+ return cutBoardMeshOutsideBoardBoundary({
16343
+ board,
16344
+ center,
16345
+ thickness,
16346
+ holes,
16347
+ platedHoles,
16348
+ cutouts,
16349
+ segments
16350
+ });
16351
+ }
16253
16352
  return buildBoardMeshFromLoops({ outerLoop, holeLoops, thickness });
16254
16353
  };
16255
16354
  var createBoardOuterLoop = (board, center) => {
@@ -16273,37 +16372,10 @@ var createBoardOuterLoop = (board, center) => {
16273
16372
  };
16274
16373
 
16275
16374
  // lib/utils/pcb-panel-geometry.ts
16276
- var geom32 = __toESM(require_geom3(), 1);
16277
- var import_measureBoundingBox = __toESM(require_measureBoundingBox2(), 1);
16278
- var import_booleans2 = __toESM(require_booleans(), 1);
16279
- var import_transforms3 = __toESM(require_transforms(), 1);
16280
-
16281
- // lib/utils/batched-union.ts
16282
- var import_booleans = __toESM(require_booleans(), 1);
16283
- var batchedUnion = (geoms, batchSize = 50) => {
16284
- if (geoms.length === 0) {
16285
- throw new Error("Cannot union empty array");
16286
- }
16287
- if (geoms.length === 1) {
16288
- return geoms[0];
16289
- }
16290
- let results = [...geoms];
16291
- while (results.length > 1) {
16292
- const newResults = [];
16293
- for (let i = 0; i < results.length; i += batchSize) {
16294
- const batch = results.slice(i, i + batchSize);
16295
- if (batch.length === 1) {
16296
- newResults.push(batch[0]);
16297
- } else {
16298
- newResults.push((0, import_booleans.union)(...batch));
16299
- }
16300
- }
16301
- results = newResults;
16302
- }
16303
- return results[0];
16304
- };
16305
-
16306
- // lib/utils/pcb-panel-geometry.ts
16375
+ var geom33 = __toESM(require_geom3(), 1);
16376
+ var import_measureBoundingBox2 = __toESM(require_measureBoundingBox2(), 1);
16377
+ var import_booleans3 = __toESM(require_booleans(), 1);
16378
+ var import_transforms4 = __toESM(require_transforms(), 1);
16307
16379
  var createPanelMesh = (panel, options) => {
16308
16380
  const { thickness, holes = [], platedHoles = [], cutouts = [] } = options;
16309
16381
  const drillQuality = options.drillQuality ?? "fast";
@@ -16322,12 +16394,12 @@ var createPanelMesh = (panel, options) => {
16322
16394
  const subtractGeoms = [...holeGeoms, ...cutoutGeoms];
16323
16395
  if (subtractGeoms.length > 0) {
16324
16396
  const unifiedHoles = batchedUnion(subtractGeoms);
16325
- panelGeom = (0, import_booleans2.subtract)(panelGeom, unifiedHoles);
16397
+ panelGeom = (0, import_booleans3.subtract)(panelGeom, unifiedHoles);
16326
16398
  }
16327
- panelGeom = (0, import_transforms3.rotateX)(-Math.PI / 2, panelGeom);
16328
- const polygons = geom32.toPolygons(panelGeom);
16399
+ panelGeom = (0, import_transforms4.rotateX)(-Math.PI / 2, panelGeom);
16400
+ const polygons = geom33.toPolygons(panelGeom);
16329
16401
  const triangles = geom3ToTriangles(panelGeom, polygons);
16330
- const bboxValues = (0, import_measureBoundingBox.default)(panelGeom);
16402
+ const bboxValues = (0, import_measureBoundingBox2.default)(panelGeom);
16331
16403
  const boundingBox = createBoundingBox(bboxValues);
16332
16404
  return {
16333
16405
  triangles,