circuit-json-to-gltf 0.0.36 → 0.0.37

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/dist/index.js CHANGED
@@ -740,7 +740,7 @@ var require_orthogonal = __commonJS({
740
740
  var require_rotateX = __commonJS({
741
741
  "node_modules/@jscad/modeling/src/maths/vec3/rotateX.js"(exports, module) {
742
742
  "use strict";
743
- var rotateX2 = (out, vector, origin, radians) => {
743
+ var rotateX3 = (out, vector, origin, radians) => {
744
744
  const p = [];
745
745
  const r = [];
746
746
  p[0] = vector[0] - origin[0];
@@ -754,7 +754,7 @@ var require_rotateX = __commonJS({
754
754
  out[2] = r[2] + origin[2];
755
755
  return out;
756
756
  };
757
- module.exports = rotateX2;
757
+ module.exports = rotateX3;
758
758
  }
759
759
  });
760
760
 
@@ -1258,7 +1258,7 @@ var require_rotateX2 = __commonJS({
1258
1258
  "node_modules/@jscad/modeling/src/maths/mat4/rotateX.js"(exports, module) {
1259
1259
  "use strict";
1260
1260
  var { sin, cos } = require_trigonometry();
1261
- var rotateX2 = (out, matrix, radians) => {
1261
+ var rotateX3 = (out, matrix, radians) => {
1262
1262
  const s = sin(radians);
1263
1263
  const c = cos(radians);
1264
1264
  const a10 = matrix[4];
@@ -1289,7 +1289,7 @@ var require_rotateX2 = __commonJS({
1289
1289
  out[11] = a23 * c - a13 * s;
1290
1290
  return out;
1291
1291
  };
1292
- module.exports = rotateX2;
1292
+ module.exports = rotateX3;
1293
1293
  }
1294
1294
  });
1295
1295
 
@@ -1443,7 +1443,7 @@ var require_toString2 = __commonJS({
1443
1443
  var require_translate = __commonJS({
1444
1444
  "node_modules/@jscad/modeling/src/maths/mat4/translate.js"(exports, module) {
1445
1445
  "use strict";
1446
- var translate3 = (out, matrix, offsets) => {
1446
+ var translate4 = (out, matrix, offsets) => {
1447
1447
  const x = offsets[0];
1448
1448
  const y = offsets[1];
1449
1449
  const z = offsets[2];
@@ -1496,7 +1496,7 @@ var require_translate = __commonJS({
1496
1496
  }
1497
1497
  return out;
1498
1498
  };
1499
- module.exports = translate3;
1499
+ module.exports = translate4;
1500
1500
  }
1501
1501
  });
1502
1502
 
@@ -3833,11 +3833,11 @@ var require_invert2 = __commonJS({
3833
3833
  "use strict";
3834
3834
  var plane = require_plane();
3835
3835
  var create = require_create6();
3836
- var invert = (polygon3) => {
3837
- const vertices = polygon3.vertices.slice().reverse();
3836
+ var invert = (polygon4) => {
3837
+ const vertices = polygon4.vertices.slice().reverse();
3838
3838
  const inverted = create(vertices);
3839
- if (polygon3.plane) {
3840
- inverted.plane = plane.flip(plane.create(), polygon3.plane);
3839
+ if (polygon4.plane) {
3840
+ inverted.plane = plane.flip(plane.create(), polygon4.plane);
3841
3841
  }
3842
3842
  return inverted;
3843
3843
  };
@@ -3869,7 +3869,7 @@ var require_isConvex = __commonJS({
3869
3869
  "use strict";
3870
3870
  var plane = require_plane();
3871
3871
  var vec3 = require_vec3();
3872
- var isConvex = (polygon3) => areVerticesConvex(polygon3.vertices);
3872
+ var isConvex = (polygon4) => areVerticesConvex(polygon4.vertices);
3873
3873
  var areVerticesConvex = (vertices) => {
3874
3874
  const numvertices = vertices.length;
3875
3875
  if (numvertices > 2) {
@@ -3905,11 +3905,11 @@ var require_plane2 = __commonJS({
3905
3905
  "node_modules/@jscad/modeling/src/geometries/poly3/plane.js"(exports, module) {
3906
3906
  "use strict";
3907
3907
  var mplane = require_plane();
3908
- var plane = (polygon3) => {
3909
- if (!polygon3.plane) {
3910
- polygon3.plane = mplane.fromPoints(mplane.create(), ...polygon3.vertices);
3908
+ var plane = (polygon4) => {
3909
+ if (!polygon4.plane) {
3910
+ polygon4.plane = mplane.fromPoints(mplane.create(), ...polygon4.vertices);
3911
3911
  }
3912
- return polygon3.plane;
3912
+ return polygon4.plane;
3913
3913
  };
3914
3914
  module.exports = plane;
3915
3915
  }
@@ -3920,13 +3920,13 @@ var require_measureArea = __commonJS({
3920
3920
  "node_modules/@jscad/modeling/src/geometries/poly3/measureArea.js"(exports, module) {
3921
3921
  "use strict";
3922
3922
  var plane = require_plane2();
3923
- var measureArea = (polygon3) => {
3924
- const n = polygon3.vertices.length;
3923
+ var measureArea = (polygon4) => {
3924
+ const n = polygon4.vertices.length;
3925
3925
  if (n < 3) {
3926
3926
  return 0;
3927
3927
  }
3928
- const vertices = polygon3.vertices;
3929
- const normal = plane(polygon3);
3928
+ const vertices = polygon4.vertices;
3929
+ const normal = plane(polygon4);
3930
3930
  const ax = Math.abs(normal[0]);
3931
3931
  const ay = Math.abs(normal[1]);
3932
3932
  const az = Math.abs(normal[2]);
@@ -3985,8 +3985,8 @@ 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) => {
3989
- const vertices = polygon3.vertices;
3988
+ var measureBoundingBox3 = (polygon4) => {
3989
+ const vertices = polygon4.vertices;
3990
3990
  const numvertices = vertices.length;
3991
3991
  const min = numvertices === 0 ? vec3.create() : vec3.clone(vertices[0]);
3992
3992
  const max = vec3.clone(min);
@@ -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
 
@@ -4064,10 +4064,10 @@ var require_measureBoundingSphere = __commonJS({
4064
4064
  "use strict";
4065
4065
  var vec4 = require_vec4();
4066
4066
  var cache = /* @__PURE__ */ new WeakMap();
4067
- var measureBoundingSphere = (polygon3) => {
4068
- const boundingSphere = cache.get(polygon3);
4067
+ var measureBoundingSphere = (polygon4) => {
4068
+ const boundingSphere = cache.get(polygon4);
4069
4069
  if (boundingSphere) return boundingSphere;
4070
- const vertices = polygon3.vertices;
4070
+ const vertices = polygon4.vertices;
4071
4071
  const out = vec4.create();
4072
4072
  if (vertices.length === 0) {
4073
4073
  out[0] = 0;
@@ -4097,7 +4097,7 @@ var require_measureBoundingSphere = __commonJS({
4097
4097
  const y = out[1] - maxy[1];
4098
4098
  const z = out[2] - maxz[2];
4099
4099
  out[3] = Math.sqrt(x * x + y * y + z * z);
4100
- cache.set(polygon3, out);
4100
+ cache.set(polygon4, out);
4101
4101
  return out;
4102
4102
  };
4103
4103
  module.exports = measureBoundingSphere;
@@ -4109,9 +4109,9 @@ var require_measureSignedVolume = __commonJS({
4109
4109
  "node_modules/@jscad/modeling/src/geometries/poly3/measureSignedVolume.js"(exports, module) {
4110
4110
  "use strict";
4111
4111
  var vec3 = require_vec3();
4112
- var measureSignedVolume = (polygon3) => {
4112
+ var measureSignedVolume = (polygon4) => {
4113
4113
  let signedVolume = 0;
4114
- const vertices = polygon3.vertices;
4114
+ const vertices = polygon4.vertices;
4115
4115
  const cross = vec3.create();
4116
4116
  for (let i = 0; i < vertices.length - 2; i++) {
4117
4117
  vec3.cross(cross, vertices[i + 1], vertices[i + 2]);
@@ -4128,7 +4128,7 @@ var require_measureSignedVolume = __commonJS({
4128
4128
  var require_toPoints2 = __commonJS({
4129
4129
  "node_modules/@jscad/modeling/src/geometries/poly3/toPoints.js"(exports, module) {
4130
4130
  "use strict";
4131
- var toPoints = (polygon3) => polygon3.vertices;
4131
+ var toPoints = (polygon4) => polygon4.vertices;
4132
4132
  module.exports = toPoints;
4133
4133
  }
4134
4134
  });
@@ -4138,9 +4138,9 @@ var require_toString6 = __commonJS({
4138
4138
  "node_modules/@jscad/modeling/src/geometries/poly3/toString.js"(exports, module) {
4139
4139
  "use strict";
4140
4140
  var vec3 = require_vec3();
4141
- var toString = (polygon3) => {
4141
+ var toString = (polygon4) => {
4142
4142
  let result = "poly3: vertices: [";
4143
- polygon3.vertices.forEach((vertex) => {
4143
+ polygon4.vertices.forEach((vertex) => {
4144
4144
  result += `${vec3.toString(vertex)}, `;
4145
4145
  });
4146
4146
  result += "]";
@@ -4157,8 +4157,8 @@ var require_transform6 = __commonJS({
4157
4157
  var mat4 = require_mat4();
4158
4158
  var vec3 = require_vec3();
4159
4159
  var create = require_create6();
4160
- var transform = (matrix, polygon3) => {
4161
- const vertices = polygon3.vertices.map((vertex) => vec3.transform(vec3.create(), vertex, matrix));
4160
+ var transform = (matrix, polygon4) => {
4161
+ const vertices = polygon4.vertices.map((vertex) => vec3.transform(vec3.create(), vertex, matrix));
4162
4162
  if (mat4.isMirroring(matrix)) {
4163
4163
  vertices.reverse();
4164
4164
  }
@@ -4274,8 +4274,8 @@ var require_fromPoints4 = __commonJS({
4274
4274
  throw new Error("the given points must be an array");
4275
4275
  }
4276
4276
  const polygons = listofpoints.map((points, index) => {
4277
- const polygon3 = poly3.create(points);
4278
- return polygon3;
4277
+ const polygon4 = poly3.create(points);
4278
+ return polygon4;
4279
4279
  });
4280
4280
  const result = create(polygons);
4281
4281
  return result;
@@ -4326,7 +4326,7 @@ var require_applyTransforms2 = __commonJS({
4326
4326
  var poly3 = require_poly3();
4327
4327
  var applyTransforms = (geometry) => {
4328
4328
  if (mat4.isIdentity(geometry.transforms)) return geometry;
4329
- geometry.polygons = geometry.polygons.map((polygon3) => poly3.transform(geometry.transforms, polygon3));
4329
+ geometry.polygons = geometry.polygons.map((polygon4) => poly3.transform(geometry.transforms, polygon4));
4330
4330
  geometry.transforms = mat4.create();
4331
4331
  return geometry;
4332
4332
  };
@@ -4353,7 +4353,7 @@ var require_invert3 = __commonJS({
4353
4353
  var toPolygons2 = require_toPolygons();
4354
4354
  var invert = (geometry) => {
4355
4355
  const polygons = toPolygons2(geometry);
4356
- const newpolygons = polygons.map((polygon3) => poly3.invert(polygon3));
4356
+ const newpolygons = polygons.map((polygon4) => poly3.invert(polygon4));
4357
4357
  return create(newpolygons);
4358
4358
  };
4359
4359
  module.exports = invert;
@@ -4386,7 +4386,7 @@ var require_toPoints3 = __commonJS({
4386
4386
  var toPolygons2 = require_toPolygons();
4387
4387
  var toPoints = (geometry) => {
4388
4388
  const polygons = toPolygons2(geometry);
4389
- const listofpoints = polygons.map((polygon3) => poly3.toPoints(polygon3));
4389
+ const listofpoints = polygons.map((polygon4) => poly3.toPoints(polygon4));
4390
4390
  return listofpoints;
4391
4391
  };
4392
4392
  module.exports = toPoints;
@@ -4402,8 +4402,8 @@ var require_toString7 = __commonJS({
4402
4402
  var toString = (geometry) => {
4403
4403
  const polygons = toPolygons2(geometry);
4404
4404
  let result = "geom3 (" + polygons.length + " polygons):\n";
4405
- polygons.forEach((polygon3) => {
4406
- result += " " + poly3.toString(polygon3) + "\n";
4405
+ polygons.forEach((polygon4) => {
4406
+ result += " " + poly3.toString(polygon4) + "\n";
4407
4407
  });
4408
4408
  return result;
4409
4409
  };
@@ -4420,7 +4420,7 @@ var require_toCompactBinary2 = __commonJS({
4420
4420
  const polygons = geometry.polygons;
4421
4421
  const transforms = geometry.transforms;
4422
4422
  const numberOfPolygons = polygons.length;
4423
- const numberOfVertices = polygons.reduce((count, polygon3) => count + polygon3.vertices.length, 0);
4423
+ const numberOfVertices = polygons.reduce((count, polygon4) => count + polygon4.vertices.length, 0);
4424
4424
  let color = [-1, -1, -1, -1];
4425
4425
  if (geometry.color) color = geometry.color;
4426
4426
  const compacted = new Float32Array(1 + 16 + 4 + 1 + numberOfPolygons + numberOfVertices * 3);
@@ -4448,8 +4448,8 @@ var require_toCompactBinary2 = __commonJS({
4448
4448
  compacted[21] = numberOfVertices;
4449
4449
  let ci = 22;
4450
4450
  let vi = ci + numberOfPolygons;
4451
- polygons.forEach((polygon3) => {
4452
- const points = poly3.toPoints(polygon3);
4451
+ polygons.forEach((polygon4) => {
4452
+ const points = poly3.toPoints(polygon4);
4453
4453
  compacted[ci] = points.length;
4454
4454
  ci++;
4455
4455
  for (let i = 0; i < points.length; i++) {
@@ -5134,7 +5134,7 @@ var require_colorize = __commonJS({
5134
5134
  "use strict";
5135
5135
  var flatten = require_flatten();
5136
5136
  var geom2 = require_geom2();
5137
- var geom32 = require_geom3();
5137
+ var geom33 = require_geom3();
5138
5138
  var path2 = require_path2();
5139
5139
  var poly3 = require_poly3();
5140
5140
  var colorGeom2 = (color, object) => {
@@ -5143,7 +5143,7 @@ var require_colorize = __commonJS({
5143
5143
  return newgeom2;
5144
5144
  };
5145
5145
  var colorGeom3 = (color, object) => {
5146
- const newgeom3 = geom32.clone(object);
5146
+ const newgeom3 = geom33.clone(object);
5147
5147
  newgeom3.color = color;
5148
5148
  return newgeom3;
5149
5149
  };
@@ -5165,7 +5165,7 @@ var require_colorize = __commonJS({
5165
5165
  if (objects.length === 0) throw new Error("wrong number of arguments");
5166
5166
  const results = objects.map((object) => {
5167
5167
  if (geom2.isA(object)) return colorGeom2(color, object);
5168
- if (geom32.isA(object)) return colorGeom3(color, object);
5168
+ if (geom33.isA(object)) return colorGeom3(color, object);
5169
5169
  if (path2.isA(object)) return colorPath2(color, object);
5170
5170
  if (poly3.isA(object)) return colorPoly3(color, object);
5171
5171
  object.color = color;
@@ -5877,7 +5877,7 @@ var require_measureArea2 = __commonJS({
5877
5877
  "node_modules/@jscad/modeling/src/geometries/poly2/measureArea.js"(exports, module) {
5878
5878
  "use strict";
5879
5879
  var area = require_area();
5880
- var measureArea = (polygon3) => area(polygon3.vertices);
5880
+ var measureArea = (polygon4) => area(polygon4.vertices);
5881
5881
  module.exports = measureArea;
5882
5882
  }
5883
5883
  });
@@ -5901,8 +5901,8 @@ var require_flip2 = __commonJS({
5901
5901
  "node_modules/@jscad/modeling/src/geometries/poly2/flip.js"(exports, module) {
5902
5902
  "use strict";
5903
5903
  var create = require_create10();
5904
- var flip = (polygon3) => {
5905
- const vertices = polygon3.vertices.slice().reverse();
5904
+ var flip = (polygon4) => {
5905
+ const vertices = polygon4.vertices.slice().reverse();
5906
5906
  return create(vertices);
5907
5907
  };
5908
5908
  module.exports = flip;
@@ -5915,22 +5915,22 @@ var require_arePointsInside = __commonJS({
5915
5915
  "use strict";
5916
5916
  var measureArea = require_measureArea2();
5917
5917
  var flip = require_flip2();
5918
- var arePointsInside = (points, polygon3) => {
5918
+ var arePointsInside = (points, polygon4) => {
5919
5919
  if (points.length === 0) return 0;
5920
- const vertices = polygon3.vertices;
5920
+ const vertices = polygon4.vertices;
5921
5921
  if (vertices.length < 3) return 0;
5922
- if (measureArea(polygon3) < 0) {
5923
- polygon3 = flip(polygon3);
5922
+ if (measureArea(polygon4) < 0) {
5923
+ polygon4 = flip(polygon4);
5924
5924
  }
5925
5925
  const sum = points.reduce((acc, point) => acc + isPointInside(point, vertices), 0);
5926
5926
  return sum === points.length ? 1 : 0;
5927
5927
  };
5928
- var isPointInside = (point, polygon3) => {
5929
- const numverts = polygon3.length;
5928
+ var isPointInside = (point, polygon4) => {
5929
+ const numverts = polygon4.length;
5930
5930
  const tx = point[0];
5931
5931
  const ty = point[1];
5932
- let vtx0 = polygon3[numverts - 1];
5933
- let vtx1 = polygon3[0];
5932
+ let vtx0 = polygon4[numverts - 1];
5933
+ let vtx1 = polygon4[0];
5934
5934
  let yflag0 = vtx0[1] > ty;
5935
5935
  let insideFlag = 0;
5936
5936
  let i = 0;
@@ -5949,7 +5949,7 @@ var require_arePointsInside = __commonJS({
5949
5949
  }
5950
5950
  yflag0 = yflag1;
5951
5951
  vtx0 = vtx1;
5952
- vtx1 = polygon3[++i];
5952
+ vtx1 = polygon4[++i];
5953
5953
  }
5954
5954
  return insideFlag;
5955
5955
  };
@@ -6610,7 +6610,7 @@ var require_measureArea3 = __commonJS({
6610
6610
  "use strict";
6611
6611
  var flatten = require_flatten();
6612
6612
  var geom2 = require_geom2();
6613
- var geom32 = require_geom3();
6613
+ var geom33 = require_geom3();
6614
6614
  var path2 = require_path2();
6615
6615
  var poly3 = require_poly3();
6616
6616
  var cache = /* @__PURE__ */ new WeakMap();
@@ -6627,8 +6627,8 @@ var require_measureArea3 = __commonJS({
6627
6627
  var measureAreaOfGeom3 = (geometry) => {
6628
6628
  let area = cache.get(geometry);
6629
6629
  if (area) return area;
6630
- const polygons = geom32.toPolygons(geometry);
6631
- area = polygons.reduce((area2, polygon3) => area2 + poly3.measureArea(polygon3), 0);
6630
+ const polygons = geom33.toPolygons(geometry);
6631
+ area = polygons.reduce((area2, polygon4) => area2 + poly3.measureArea(polygon4), 0);
6632
6632
  cache.set(geometry, area);
6633
6633
  return area;
6634
6634
  };
@@ -6638,7 +6638,7 @@ var require_measureArea3 = __commonJS({
6638
6638
  const results = geometries.map((geometry) => {
6639
6639
  if (path2.isA(geometry)) return measureAreaOfPath2(geometry);
6640
6640
  if (geom2.isA(geometry)) return measureAreaOfGeom2(geometry);
6641
- if (geom32.isA(geometry)) return measureAreaOfGeom3(geometry);
6641
+ if (geom33.isA(geometry)) return measureAreaOfGeom3(geometry);
6642
6642
  return 0;
6643
6643
  });
6644
6644
  return results.length === 1 ? results[0] : results;
@@ -6675,7 +6675,7 @@ var require_measureBoundingBox2 = __commonJS({
6675
6675
  var vec2 = require_vec2();
6676
6676
  var vec3 = require_vec3();
6677
6677
  var geom2 = require_geom2();
6678
- var geom32 = require_geom3();
6678
+ var geom33 = require_geom3();
6679
6679
  var path2 = require_path2();
6680
6680
  var poly3 = require_poly3();
6681
6681
  var cache = /* @__PURE__ */ new WeakMap();
@@ -6724,15 +6724,15 @@ var require_measureBoundingBox2 = __commonJS({
6724
6724
  var measureBoundingBoxOfGeom3 = (geometry) => {
6725
6725
  let boundingBox = cache.get(geometry);
6726
6726
  if (boundingBox) return boundingBox;
6727
- const polygons = geom32.toPolygons(geometry);
6727
+ const polygons = geom33.toPolygons(geometry);
6728
6728
  let minpoint = vec3.create();
6729
6729
  if (polygons.length > 0) {
6730
6730
  const points = poly3.toPoints(polygons[0]);
6731
6731
  vec3.copy(minpoint, points[0]);
6732
6732
  }
6733
6733
  let maxpoint = vec3.clone(minpoint);
6734
- polygons.forEach((polygon3) => {
6735
- poly3.toPoints(polygon3).forEach((point) => {
6734
+ polygons.forEach((polygon4) => {
6735
+ poly3.toPoints(polygon4).forEach((point) => {
6736
6736
  vec3.min(minpoint, minpoint, point);
6737
6737
  vec3.max(maxpoint, maxpoint, point);
6738
6738
  });
@@ -6743,18 +6743,18 @@ var require_measureBoundingBox2 = __commonJS({
6743
6743
  cache.set(geometry, boundingBox);
6744
6744
  return boundingBox;
6745
6745
  };
6746
- var measureBoundingBox2 = (...geometries) => {
6746
+ var measureBoundingBox3 = (...geometries) => {
6747
6747
  geometries = flatten(geometries);
6748
6748
  if (geometries.length === 0) throw new Error("wrong number of arguments");
6749
6749
  const results = geometries.map((geometry) => {
6750
6750
  if (path2.isA(geometry)) return measureBoundingBoxOfPath2(geometry);
6751
6751
  if (geom2.isA(geometry)) return measureBoundingBoxOfGeom2(geometry);
6752
- if (geom32.isA(geometry)) return measureBoundingBoxOfGeom3(geometry);
6752
+ if (geom33.isA(geometry)) return measureBoundingBoxOfGeom3(geometry);
6753
6753
  return [[0, 0, 0], [0, 0, 0]];
6754
6754
  });
6755
6755
  return results.length === 1 ? results[0] : results;
6756
6756
  };
6757
- module.exports = measureBoundingBox2;
6757
+ module.exports = measureBoundingBox3;
6758
6758
  }
6759
6759
  });
6760
6760
 
@@ -6765,11 +6765,11 @@ var require_measureAggregateBoundingBox = __commonJS({
6765
6765
  var flatten = require_flatten();
6766
6766
  var vec3min = require_min();
6767
6767
  var vec3max = require_max();
6768
- var measureBoundingBox2 = require_measureBoundingBox2();
6768
+ var measureBoundingBox3 = require_measureBoundingBox2();
6769
6769
  var measureAggregateBoundingBox = (...geometries) => {
6770
6770
  geometries = flatten(geometries);
6771
6771
  if (geometries.length === 0) throw new Error("measureAggregateBoundingBox: no geometries supplied");
6772
- const bounds = measureBoundingBox2(geometries);
6772
+ const bounds = measureBoundingBox3(geometries);
6773
6773
  if (geometries.length === 1) {
6774
6774
  return bounds;
6775
6775
  }
@@ -6806,7 +6806,7 @@ var require_measureAggregateEpsilon = __commonJS({
6806
6806
  var flatten = require_flatten();
6807
6807
  var measureAggregateBoundingBox = require_measureAggregateBoundingBox();
6808
6808
  var calculateEpsilonFromBounds = require_calculateEpsilonFromBounds();
6809
- var { geom2, geom3: geom32, path2 } = require_geometries();
6809
+ var { geom2, geom3: geom33, path2 } = require_geometries();
6810
6810
  var measureAggregateEpsilon = (...geometries) => {
6811
6811
  geometries = flatten(geometries);
6812
6812
  if (geometries.length === 0) throw new Error("measureAggregateEpsilon: no geometries supplied");
@@ -6814,7 +6814,7 @@ var require_measureAggregateEpsilon = __commonJS({
6814
6814
  let dimensions = 0;
6815
6815
  dimensions = geometries.reduce((dimensions2, geometry) => {
6816
6816
  if (path2.isA(geometry) || geom2.isA(geometry)) return Math.max(dimensions2, 2);
6817
- if (geom32.isA(geometry)) return Math.max(dimensions2, 3);
6817
+ if (geom33.isA(geometry)) return Math.max(dimensions2, 3);
6818
6818
  return 0;
6819
6819
  }, dimensions);
6820
6820
  return calculateEpsilonFromBounds(bounds, dimensions);
@@ -6829,7 +6829,7 @@ var require_measureVolume = __commonJS({
6829
6829
  "use strict";
6830
6830
  var flatten = require_flatten();
6831
6831
  var geom2 = require_geom2();
6832
- var geom32 = require_geom3();
6832
+ var geom33 = require_geom3();
6833
6833
  var path2 = require_path2();
6834
6834
  var poly3 = require_poly3();
6835
6835
  var cache = /* @__PURE__ */ new WeakMap();
@@ -6838,8 +6838,8 @@ var require_measureVolume = __commonJS({
6838
6838
  var measureVolumeOfGeom3 = (geometry) => {
6839
6839
  let volume = cache.get(geometry);
6840
6840
  if (volume) return volume;
6841
- const polygons = geom32.toPolygons(geometry);
6842
- volume = polygons.reduce((volume2, polygon3) => volume2 + poly3.measureSignedVolume(polygon3), 0);
6841
+ const polygons = geom33.toPolygons(geometry);
6842
+ volume = polygons.reduce((volume2, polygon4) => volume2 + poly3.measureSignedVolume(polygon4), 0);
6843
6843
  cache.set(geometry, volume);
6844
6844
  return volume;
6845
6845
  };
@@ -6849,7 +6849,7 @@ var require_measureVolume = __commonJS({
6849
6849
  const results = geometries.map((geometry) => {
6850
6850
  if (path2.isA(geometry)) return measureVolumeOfPath2(geometry);
6851
6851
  if (geom2.isA(geometry)) return measureVolumeOfGeom2(geometry);
6852
- if (geom32.isA(geometry)) return measureVolumeOfGeom3(geometry);
6852
+ if (geom33.isA(geometry)) return measureVolumeOfGeom3(geometry);
6853
6853
  return 0;
6854
6854
  });
6855
6855
  return results.length === 1 ? results[0] : results;
@@ -6886,7 +6886,7 @@ var require_measureBoundingSphere2 = __commonJS({
6886
6886
  var vec2 = require_vec2();
6887
6887
  var vec3 = require_vec3();
6888
6888
  var geom2 = require_geom2();
6889
- var geom32 = require_geom3();
6889
+ var geom33 = require_geom3();
6890
6890
  var path2 = require_path2();
6891
6891
  var poly3 = require_poly3();
6892
6892
  var cacheOfBoundingSpheres = /* @__PURE__ */ new WeakMap();
@@ -6941,18 +6941,18 @@ var require_measureBoundingSphere2 = __commonJS({
6941
6941
  if (boundingSphere !== void 0) return boundingSphere;
6942
6942
  const centroid = vec3.create();
6943
6943
  let radius = 0;
6944
- const polygons = geom32.toPolygons(geometry);
6944
+ const polygons = geom33.toPolygons(geometry);
6945
6945
  if (polygons.length > 0) {
6946
6946
  let numPoints = 0;
6947
- polygons.forEach((polygon3) => {
6948
- poly3.toPoints(polygon3).forEach((point) => {
6947
+ polygons.forEach((polygon4) => {
6948
+ poly3.toPoints(polygon4).forEach((point) => {
6949
6949
  vec3.add(centroid, centroid, point);
6950
6950
  numPoints++;
6951
6951
  });
6952
6952
  });
6953
6953
  vec3.scale(centroid, centroid, 1 / numPoints);
6954
- polygons.forEach((polygon3) => {
6955
- poly3.toPoints(polygon3).forEach((point) => {
6954
+ polygons.forEach((polygon4) => {
6955
+ poly3.toPoints(polygon4).forEach((point) => {
6956
6956
  radius = Math.max(radius, vec3.squaredDistance(centroid, point));
6957
6957
  });
6958
6958
  });
@@ -6967,7 +6967,7 @@ var require_measureBoundingSphere2 = __commonJS({
6967
6967
  const results = geometries.map((geometry) => {
6968
6968
  if (path2.isA(geometry)) return measureBoundingSphereOfPath2(geometry);
6969
6969
  if (geom2.isA(geometry)) return measureBoundingSphereOfGeom2(geometry);
6970
- if (geom32.isA(geometry)) return measureBoundingSphereOfGeom3(geometry);
6970
+ if (geom33.isA(geometry)) return measureBoundingSphereOfGeom3(geometry);
6971
6971
  return [[0, 0, 0], 0];
6972
6972
  });
6973
6973
  return results.length === 1 ? results[0] : results;
@@ -6981,11 +6981,11 @@ var require_measureCenter = __commonJS({
6981
6981
  "node_modules/@jscad/modeling/src/measurements/measureCenter.js"(exports, module) {
6982
6982
  "use strict";
6983
6983
  var flatten = require_flatten();
6984
- var measureBoundingBox2 = require_measureBoundingBox2();
6984
+ var measureBoundingBox3 = require_measureBoundingBox2();
6985
6985
  var measureCenter = (...geometries) => {
6986
6986
  geometries = flatten(geometries);
6987
6987
  const results = geometries.map((geometry) => {
6988
- const bounds = measureBoundingBox2(geometry);
6988
+ const bounds = measureBoundingBox3(geometry);
6989
6989
  return [
6990
6990
  bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2,
6991
6991
  bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2,
@@ -7005,7 +7005,7 @@ var require_measureCenterOfMass = __commonJS({
7005
7005
  var flatten = require_flatten();
7006
7006
  var vec3 = require_vec3();
7007
7007
  var geom2 = require_geom2();
7008
- var geom32 = require_geom3();
7008
+ var geom33 = require_geom3();
7009
7009
  var cacheOfCenterOfMass = /* @__PURE__ */ new WeakMap();
7010
7010
  var measureCenterOfMassGeom2 = (geometry) => {
7011
7011
  let centerOfMass = cacheOfCenterOfMass.get(geometry);
@@ -7036,12 +7036,12 @@ var require_measureCenterOfMass = __commonJS({
7036
7036
  let centerOfMass = cacheOfCenterOfMass.get(geometry);
7037
7037
  if (centerOfMass !== void 0) return centerOfMass;
7038
7038
  centerOfMass = vec3.create();
7039
- const polygons = geom32.toPolygons(geometry);
7039
+ const polygons = geom33.toPolygons(geometry);
7040
7040
  if (polygons.length === 0) return centerOfMass;
7041
7041
  let totalVolume = 0;
7042
7042
  const vector = vec3.create();
7043
- polygons.forEach((polygon3) => {
7044
- const vertices = polygon3.vertices;
7043
+ polygons.forEach((polygon4) => {
7044
+ const vertices = polygon4.vertices;
7045
7045
  for (let i = 0; i < vertices.length - 2; i++) {
7046
7046
  vec3.cross(vector, vertices[i + 1], vertices[i + 2]);
7047
7047
  const volume = vec3.dot(vertices[0], vector) / 6;
@@ -7060,7 +7060,7 @@ var require_measureCenterOfMass = __commonJS({
7060
7060
  geometries = flatten(geometries);
7061
7061
  const results = geometries.map((geometry) => {
7062
7062
  if (geom2.isA(geometry)) return measureCenterOfMassGeom2(geometry);
7063
- if (geom32.isA(geometry)) return measureCenterOfMassGeom3(geometry);
7063
+ if (geom33.isA(geometry)) return measureCenterOfMassGeom3(geometry);
7064
7064
  return [0, 0, 0];
7065
7065
  });
7066
7066
  return results.length === 1 ? results[0] : results;
@@ -7074,11 +7074,11 @@ var require_measureDimensions = __commonJS({
7074
7074
  "node_modules/@jscad/modeling/src/measurements/measureDimensions.js"(exports, module) {
7075
7075
  "use strict";
7076
7076
  var flatten = require_flatten();
7077
- var measureBoundingBox2 = require_measureBoundingBox2();
7077
+ var measureBoundingBox3 = require_measureBoundingBox2();
7078
7078
  var measureDimensions = (...geometries) => {
7079
7079
  geometries = flatten(geometries);
7080
7080
  const results = geometries.map((geometry) => {
7081
- const boundingBox = measureBoundingBox2(geometry);
7081
+ const boundingBox = measureBoundingBox3(geometry);
7082
7082
  return [
7083
7083
  boundingBox[1][0] - boundingBox[0][0],
7084
7084
  boundingBox[1][1] - boundingBox[0][1],
@@ -7096,19 +7096,19 @@ var require_measureEpsilon = __commonJS({
7096
7096
  "node_modules/@jscad/modeling/src/measurements/measureEpsilon.js"(exports, module) {
7097
7097
  "use strict";
7098
7098
  var flatten = require_flatten();
7099
- var { geom2, geom3: geom32, path2 } = require_geometries();
7099
+ var { geom2, geom3: geom33, path2 } = require_geometries();
7100
7100
  var calculateEpsilonFromBounds = require_calculateEpsilonFromBounds();
7101
- var measureBoundingBox2 = require_measureBoundingBox2();
7102
- var measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox2(geometry), 2);
7103
- var measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox2(geometry), 2);
7104
- var measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox2(geometry), 3);
7101
+ var measureBoundingBox3 = require_measureBoundingBox2();
7102
+ var measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 2);
7103
+ var measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 2);
7104
+ var measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 3);
7105
7105
  var measureEpsilon = (...geometries) => {
7106
7106
  geometries = flatten(geometries);
7107
7107
  if (geometries.length === 0) throw new Error("wrong number of arguments");
7108
7108
  const results = geometries.map((geometry) => {
7109
7109
  if (path2.isA(geometry)) return measureEpsilonOfPath2(geometry);
7110
7110
  if (geom2.isA(geometry)) return measureEpsilonOfGeom2(geometry);
7111
- if (geom32.isA(geometry)) return measureEpsilonOfGeom3(geometry);
7111
+ if (geom33.isA(geometry)) return measureEpsilonOfGeom3(geometry);
7112
7112
  return 0;
7113
7113
  });
7114
7114
  return results.length === 1 ? results[0] : results;
@@ -7307,7 +7307,7 @@ var require_circle = __commonJS({
7307
7307
  var require_cuboid = __commonJS({
7308
7308
  "node_modules/@jscad/modeling/src/primitives/cuboid.js"(exports, module) {
7309
7309
  "use strict";
7310
- var geom32 = require_geom3();
7310
+ var geom33 = require_geom3();
7311
7311
  var poly3 = require_poly3();
7312
7312
  var { isNumberArray } = require_commonChecks();
7313
7313
  var cuboid = (options) => {
@@ -7319,8 +7319,8 @@ var require_cuboid = __commonJS({
7319
7319
  if (!isNumberArray(center, 3)) throw new Error("center must be an array of X, Y and Z values");
7320
7320
  if (!isNumberArray(size, 3)) throw new Error("size must be an array of width, depth and height values");
7321
7321
  if (!size.every((n) => n >= 0)) throw new Error("size values must be positive");
7322
- if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom32.create();
7323
- const result = geom32.create(
7322
+ if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom33.create();
7323
+ const result = geom33.create(
7324
7324
  // adjust a basic shape to size
7325
7325
  [
7326
7326
  [[0, 4, 6, 2], [-1, 0, 0]],
@@ -7373,7 +7373,7 @@ var require_cylinderElliptic = __commonJS({
7373
7373
  "use strict";
7374
7374
  var { EPS, TAU } = require_constants();
7375
7375
  var vec3 = require_vec3();
7376
- var geom32 = require_geom3();
7376
+ var geom33 = require_geom3();
7377
7377
  var poly3 = require_poly3();
7378
7378
  var { sin, cos } = require_trigonometry();
7379
7379
  var { isGT, isGTE, isNumberArray } = require_commonChecks();
@@ -7462,7 +7462,7 @@ var require_cylinderElliptic = __commonJS({
7462
7462
  polygons.push(fromPoints(start, end, point(0, 1, startRadius)));
7463
7463
  polygons.push(fromPoints(point(0, 1, startRadius), end, point(1, 1, endRadius)));
7464
7464
  }
7465
- const result = geom32.create(polygons);
7465
+ const result = geom33.create(polygons);
7466
7466
  return result;
7467
7467
  };
7468
7468
  module.exports = cylinderElliptic;
@@ -7473,7 +7473,7 @@ var require_cylinderElliptic = __commonJS({
7473
7473
  var require_cylinder = __commonJS({
7474
7474
  "node_modules/@jscad/modeling/src/primitives/cylinder.js"(exports, module) {
7475
7475
  "use strict";
7476
- var geom32 = require_geom3();
7476
+ var geom33 = require_geom3();
7477
7477
  var cylinderElliptic = require_cylinderElliptic();
7478
7478
  var { isGTE } = require_commonChecks();
7479
7479
  var cylinder2 = (options) => {
@@ -7485,7 +7485,7 @@ var require_cylinder = __commonJS({
7485
7485
  };
7486
7486
  const { center, height, radius, segments } = Object.assign({}, defaults, options);
7487
7487
  if (!isGTE(radius, 0)) throw new Error("radius must be positive");
7488
- if (height === 0 || radius === 0) return geom32.create();
7488
+ if (height === 0 || radius === 0) return geom33.create();
7489
7489
  const newoptions = {
7490
7490
  center,
7491
7491
  height,
@@ -7505,7 +7505,7 @@ var require_ellipsoid = __commonJS({
7505
7505
  "use strict";
7506
7506
  var { TAU } = require_constants();
7507
7507
  var vec3 = require_vec3();
7508
- var geom32 = require_geom3();
7508
+ var geom33 = require_geom3();
7509
7509
  var poly3 = require_poly3();
7510
7510
  var { sin, cos } = require_trigonometry();
7511
7511
  var { isGTE, isNumberArray } = require_commonChecks();
@@ -7521,7 +7521,7 @@ var require_ellipsoid = __commonJS({
7521
7521
  if (!isNumberArray(radius, 3)) throw new Error("radius must be an array of X, Y and Z values");
7522
7522
  if (!radius.every((n) => n >= 0)) throw new Error("radius values must be positive");
7523
7523
  if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
7524
- if (radius[0] === 0 || radius[1] === 0 || radius[2] === 0) return geom32.create();
7524
+ if (radius[0] === 0 || radius[1] === 0 || radius[2] === 0) return geom33.create();
7525
7525
  const xvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[0]), radius[0]);
7526
7526
  const yvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[1]), radius[1]);
7527
7527
  const zvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[2]), radius[2]);
@@ -7573,7 +7573,7 @@ var require_ellipsoid = __commonJS({
7573
7573
  }
7574
7574
  prevcylinderpoint = cylinderpoint;
7575
7575
  }
7576
- return geom32.create(polygons);
7576
+ return geom33.create(polygons);
7577
7577
  };
7578
7578
  module.exports = ellipsoid;
7579
7579
  }
@@ -7583,7 +7583,7 @@ var require_ellipsoid = __commonJS({
7583
7583
  var require_polyhedron = __commonJS({
7584
7584
  "node_modules/@jscad/modeling/src/primitives/polyhedron.js"(exports, module) {
7585
7585
  "use strict";
7586
- var geom32 = require_geom3();
7586
+ var geom33 = require_geom3();
7587
7587
  var poly3 = require_poly3();
7588
7588
  var { isNumberArray } = require_commonChecks();
7589
7589
  var polyhedron = (options) => {
@@ -7622,11 +7622,11 @@ var require_polyhedron = __commonJS({
7622
7622
  faces.forEach((face) => face.reverse());
7623
7623
  }
7624
7624
  const polygons = faces.map((face, findex) => {
7625
- const polygon3 = poly3.create(face.map((pindex) => points[pindex]));
7626
- if (colors && colors[findex]) polygon3.color = colors[findex];
7627
- return polygon3;
7625
+ const polygon4 = poly3.create(face.map((pindex) => points[pindex]));
7626
+ if (colors && colors[findex]) polygon4.color = colors[findex];
7627
+ return polygon4;
7628
7628
  });
7629
- return geom32.create(polygons);
7629
+ return geom33.create(polygons);
7630
7630
  };
7631
7631
  module.exports = polyhedron;
7632
7632
  }
@@ -7638,7 +7638,7 @@ var require_geodesicSphere = __commonJS({
7638
7638
  "use strict";
7639
7639
  var mat4 = require_mat4();
7640
7640
  var vec3 = require_vec3();
7641
- var geom32 = require_geom3();
7641
+ var geom33 = require_geom3();
7642
7642
  var polyhedron = require_polyhedron();
7643
7643
  var { isGTE } = require_commonChecks();
7644
7644
  var geodesicSphere = (options) => {
@@ -7649,7 +7649,7 @@ var require_geodesicSphere = __commonJS({
7649
7649
  let { radius, frequency } = Object.assign({}, defaults, options);
7650
7650
  if (!isGTE(radius, 0)) throw new Error("radius must be positive");
7651
7651
  if (!isGTE(frequency, 6)) throw new Error("frequency must be six or more");
7652
- if (radius === 0) return geom32.create();
7652
+ if (radius === 0) return geom33.create();
7653
7653
  frequency = Math.floor(frequency / 6);
7654
7654
  const ci = [
7655
7655
  // hard-coded data of icosahedron (20 faces, all triangles)
@@ -7752,7 +7752,7 @@ var require_geodesicSphere = __commonJS({
7752
7752
  offset = g.offset;
7753
7753
  }
7754
7754
  let geometry = polyhedron({ points, faces, orientation: "inward" });
7755
- if (radius !== 1) geometry = geom32.transform(mat4.fromScaling(mat4.create(), [radius, radius, radius]), geometry);
7755
+ if (radius !== 1) geometry = geom33.transform(mat4.fromScaling(mat4.create(), [radius, radius, radius]), geometry);
7756
7756
  return geometry;
7757
7757
  };
7758
7758
  module.exports = geodesicSphere;
@@ -7777,7 +7777,7 @@ var require_polygon = __commonJS({
7777
7777
  "node_modules/@jscad/modeling/src/primitives/polygon.js"(exports, module) {
7778
7778
  "use strict";
7779
7779
  var geom2 = require_geom2();
7780
- var polygon3 = (options) => {
7780
+ var polygon4 = (options) => {
7781
7781
  const defaults = {
7782
7782
  points: [],
7783
7783
  paths: [],
@@ -7818,7 +7818,7 @@ var require_polygon = __commonJS({
7818
7818
  }
7819
7819
  return geometry;
7820
7820
  };
7821
- module.exports = polygon3;
7821
+ module.exports = polygon4;
7822
7822
  }
7823
7823
  });
7824
7824
 
@@ -7860,7 +7860,7 @@ var require_roundedCuboid = __commonJS({
7860
7860
  var { EPS, TAU } = require_constants();
7861
7861
  var vec2 = require_vec2();
7862
7862
  var vec3 = require_vec3();
7863
- var geom32 = require_geom3();
7863
+ var geom33 = require_geom3();
7864
7864
  var poly3 = require_poly3();
7865
7865
  var { sin, cos } = require_trigonometry();
7866
7866
  var { isGTE, isNumberArray } = require_commonChecks();
@@ -7965,7 +7965,7 @@ var require_roundedCuboid = __commonJS({
7965
7965
  if (!size.every((n) => n >= 0)) throw new Error("size values must be positive");
7966
7966
  if (!isGTE(roundRadius, 0)) throw new Error("roundRadius must be positive");
7967
7967
  if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
7968
- if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom32.create();
7968
+ if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom33.create();
7969
7969
  if (roundRadius === 0) return cuboid({ center, size });
7970
7970
  size = size.map((v) => v / 2);
7971
7971
  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");
@@ -8000,7 +8000,7 @@ var require_roundedCuboid = __commonJS({
8000
8000
  prevCornersPos = cornersPos;
8001
8001
  prevCornersNeg = cornersNeg;
8002
8002
  }
8003
- return geom32.create(polygons);
8003
+ return geom33.create(polygons);
8004
8004
  };
8005
8005
  module.exports = roundedCuboid;
8006
8006
  }
@@ -8012,7 +8012,7 @@ var require_roundedCylinder = __commonJS({
8012
8012
  "use strict";
8013
8013
  var { EPS, TAU } = require_constants();
8014
8014
  var vec3 = require_vec3();
8015
- var geom32 = require_geom3();
8015
+ var geom33 = require_geom3();
8016
8016
  var poly3 = require_poly3();
8017
8017
  var { sin, cos } = require_trigonometry();
8018
8018
  var { isGTE, isNumberArray } = require_commonChecks();
@@ -8032,7 +8032,7 @@ var require_roundedCylinder = __commonJS({
8032
8032
  if (!isGTE(roundRadius, 0)) throw new Error("roundRadius must be positive");
8033
8033
  if (roundRadius > radius) throw new Error("roundRadius must be smaller than the radius");
8034
8034
  if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
8035
- if (height === 0 || radius === 0) return geom32.create();
8035
+ if (height === 0 || radius === 0) return geom33.create();
8036
8036
  if (roundRadius === 0) return cylinder2({ center, height, radius });
8037
8037
  const start = [0, 0, -(height / 2)];
8038
8038
  const end = [0, 0, height / 2];
@@ -8112,7 +8112,7 @@ var require_roundedCylinder = __commonJS({
8112
8112
  }
8113
8113
  prevcylinderpoint = cylinderpoint;
8114
8114
  }
8115
- const result = geom32.create(polygons);
8115
+ const result = geom33.create(polygons);
8116
8116
  return result;
8117
8117
  };
8118
8118
  module.exports = roundedCylinder;
@@ -8283,7 +8283,7 @@ var require_mirror = __commonJS({
8283
8283
  var mat4 = require_mat4();
8284
8284
  var plane = require_plane();
8285
8285
  var geom2 = require_geom2();
8286
- var geom32 = require_geom3();
8286
+ var geom33 = require_geom3();
8287
8287
  var path2 = require_path2();
8288
8288
  var mirror = (options, ...objects) => {
8289
8289
  const defaults = {
@@ -8302,7 +8302,7 @@ var require_mirror = __commonJS({
8302
8302
  const results = objects.map((object) => {
8303
8303
  if (path2.isA(object)) return path2.transform(matrix, object);
8304
8304
  if (geom2.isA(object)) return geom2.transform(matrix, object);
8305
- if (geom32.isA(object)) return geom32.transform(matrix, object);
8305
+ if (geom33.isA(object)) return geom33.transform(matrix, object);
8306
8306
  return object;
8307
8307
  });
8308
8308
  return results.length === 1 ? results[0] : results;
@@ -9278,7 +9278,7 @@ var require_extrudeFromSlices = __commonJS({
9278
9278
  "use strict";
9279
9279
  var mat4 = require_mat4();
9280
9280
  var geom2 = require_geom2();
9281
- var geom32 = require_geom3();
9281
+ var geom33 = require_geom3();
9282
9282
  var poly3 = require_poly3();
9283
9283
  var slice = require_slice();
9284
9284
  var repairSlice = require_repair();
@@ -9335,7 +9335,7 @@ var require_extrudeFromSlices = __commonJS({
9335
9335
  polygons = polygons.concat(extrudeWalls(endSlice, startSlice));
9336
9336
  }
9337
9337
  }
9338
- return geom32.create(polygons);
9338
+ return geom33.create(polygons);
9339
9339
  };
9340
9340
  module.exports = extrudeFromSlices;
9341
9341
  }
@@ -9436,7 +9436,7 @@ var require_rotate3 = __commonJS({
9436
9436
  var flatten = require_flatten();
9437
9437
  var mat4 = require_mat4();
9438
9438
  var geom2 = require_geom2();
9439
- var geom32 = require_geom3();
9439
+ var geom33 = require_geom3();
9440
9440
  var path2 = require_path2();
9441
9441
  var rotate = (angles, ...objects) => {
9442
9442
  if (!Array.isArray(angles)) throw new Error("angles must be an array");
@@ -9451,17 +9451,17 @@ var require_rotate3 = __commonJS({
9451
9451
  const results = objects.map((object) => {
9452
9452
  if (path2.isA(object)) return path2.transform(matrix, object);
9453
9453
  if (geom2.isA(object)) return geom2.transform(matrix, object);
9454
- if (geom32.isA(object)) return geom32.transform(matrix, object);
9454
+ if (geom33.isA(object)) return geom33.transform(matrix, object);
9455
9455
  return object;
9456
9456
  });
9457
9457
  return results.length === 1 ? results[0] : results;
9458
9458
  };
9459
- var rotateX2 = (angle, ...objects) => rotate([angle, 0, 0], objects);
9459
+ var rotateX3 = (angle, ...objects) => rotate([angle, 0, 0], objects);
9460
9460
  var rotateY = (angle, ...objects) => rotate([0, angle, 0], objects);
9461
9461
  var rotateZ3 = (angle, ...objects) => rotate([0, 0, angle], objects);
9462
9462
  module.exports = {
9463
9463
  rotate,
9464
- rotateX: rotateX2,
9464
+ rotateX: rotateX3,
9465
9465
  rotateY,
9466
9466
  rotateZ: rotateZ3
9467
9467
  };
@@ -9475,9 +9475,9 @@ var require_translate2 = __commonJS({
9475
9475
  var flatten = require_flatten();
9476
9476
  var mat4 = require_mat4();
9477
9477
  var geom2 = require_geom2();
9478
- var geom32 = require_geom3();
9478
+ var geom33 = require_geom3();
9479
9479
  var path2 = require_path2();
9480
- var translate3 = (offset, ...objects) => {
9480
+ var translate4 = (offset, ...objects) => {
9481
9481
  if (!Array.isArray(offset)) throw new Error("offset must be an array");
9482
9482
  objects = flatten(objects);
9483
9483
  if (objects.length === 0) throw new Error("wrong number of arguments");
@@ -9487,16 +9487,16 @@ var require_translate2 = __commonJS({
9487
9487
  const results = objects.map((object) => {
9488
9488
  if (path2.isA(object)) return path2.transform(matrix, object);
9489
9489
  if (geom2.isA(object)) return geom2.transform(matrix, object);
9490
- if (geom32.isA(object)) return geom32.transform(matrix, object);
9490
+ if (geom33.isA(object)) return geom33.transform(matrix, object);
9491
9491
  return object;
9492
9492
  });
9493
9493
  return results.length === 1 ? results[0] : results;
9494
9494
  };
9495
- var translateX = (offset, ...objects) => translate3([offset, 0, 0], objects);
9496
- var translateY = (offset, ...objects) => translate3([0, offset, 0], objects);
9497
- var translateZ = (offset, ...objects) => translate3([0, 0, offset], objects);
9495
+ var translateX = (offset, ...objects) => translate4([offset, 0, 0], objects);
9496
+ var translateY = (offset, ...objects) => translate4([0, offset, 0], objects);
9497
+ var translateZ = (offset, ...objects) => translate4([0, 0, offset], objects);
9498
9498
  module.exports = {
9499
- translate: translate3,
9499
+ translate: translate4,
9500
9500
  translateX,
9501
9501
  translateY,
9502
9502
  translateZ
@@ -9511,7 +9511,7 @@ var require_torus = __commonJS({
9511
9511
  var { TAU } = require_constants();
9512
9512
  var extrudeRotate = require_extrudeRotate();
9513
9513
  var { rotate } = require_rotate3();
9514
- var { translate: translate3 } = require_translate2();
9514
+ var { translate: translate4 } = require_translate2();
9515
9515
  var circle = require_circle();
9516
9516
  var { isGT, isGTE } = require_commonChecks();
9517
9517
  var torus = (options) => {
@@ -9536,7 +9536,7 @@ var require_torus = __commonJS({
9536
9536
  if (innerRotation !== 0) {
9537
9537
  innerCircle = rotate([0, 0, innerRotation], innerCircle);
9538
9538
  }
9539
- innerCircle = translate3([outerRadius, 0], innerCircle);
9539
+ innerCircle = translate4([outerRadius, 0], innerCircle);
9540
9540
  const extrudeOptions = {
9541
9541
  startAngle,
9542
9542
  angle: outerRotation,
@@ -9970,14 +9970,14 @@ var require_areAllShapesTheSameType = __commonJS({
9970
9970
  "node_modules/@jscad/modeling/src/utils/areAllShapesTheSameType.js"(exports, module) {
9971
9971
  "use strict";
9972
9972
  var geom2 = require_geom2();
9973
- var geom32 = require_geom3();
9973
+ var geom33 = require_geom3();
9974
9974
  var path2 = require_path2();
9975
9975
  var areAllShapesTheSameType = (shapes) => {
9976
9976
  let previousType;
9977
9977
  for (const shape of shapes) {
9978
9978
  let currentType = 0;
9979
9979
  if (geom2.isA(shape)) currentType = 1;
9980
- if (geom32.isA(shape)) currentType = 2;
9980
+ if (geom33.isA(shape)) currentType = 2;
9981
9981
  if (path2.isA(shape)) currentType = 3;
9982
9982
  if (previousType && currentType !== previousType) return false;
9983
9983
  previousType = currentType;
@@ -10074,12 +10074,12 @@ var require_fromFakePolygons = __commonJS({
10074
10074
  "use strict";
10075
10075
  var vec2 = require_vec2();
10076
10076
  var geom2 = require_geom2();
10077
- var fromFakePolygon = (epsilon, polygon3) => {
10078
- if (polygon3.vertices.length < 4) {
10077
+ var fromFakePolygon = (epsilon, polygon4) => {
10078
+ if (polygon4.vertices.length < 4) {
10079
10079
  return null;
10080
10080
  }
10081
10081
  const vert1Indices = [];
10082
- const points3D = polygon3.vertices.filter((vertex, i) => {
10082
+ const points3D = polygon4.vertices.filter((vertex, i) => {
10083
10083
  if (vertex[2] > 0) {
10084
10084
  vert1Indices.push(i);
10085
10085
  return true;
@@ -10106,7 +10106,7 @@ var require_fromFakePolygons = __commonJS({
10106
10106
  return points2D;
10107
10107
  };
10108
10108
  var fromFakePolygons = (epsilon, polygons) => {
10109
- const sides = polygons.map((polygon3) => fromFakePolygon(epsilon, polygon3)).filter((polygon3) => polygon3 !== null);
10109
+ const sides = polygons.map((polygon4) => fromFakePolygon(epsilon, polygon4)).filter((polygon4) => polygon4 !== null);
10110
10110
  return geom2.create(sides);
10111
10111
  };
10112
10112
  module.exports = fromFakePolygons;
@@ -10119,7 +10119,7 @@ var require_to3DWalls = __commonJS({
10119
10119
  "use strict";
10120
10120
  var vec3 = require_vec3();
10121
10121
  var geom2 = require_geom2();
10122
- var geom32 = require_geom3();
10122
+ var geom33 = require_geom3();
10123
10123
  var poly3 = require_poly3();
10124
10124
  var to3DWall = (z0, z1, side) => {
10125
10125
  const points = [
@@ -10133,7 +10133,7 @@ var require_to3DWalls = __commonJS({
10133
10133
  var to3DWalls = (options, geometry) => {
10134
10134
  const sides = geom2.toSides(geometry);
10135
10135
  const polygons = sides.map((side) => to3DWall(options.z0, options.z1, side));
10136
- const result = geom32.create(polygons);
10136
+ const result = geom33.create(polygons);
10137
10137
  return result;
10138
10138
  };
10139
10139
  module.exports = to3DWalls;
@@ -10463,8 +10463,8 @@ var require_reTesselateCoplanarPolygons = __commonJS({
10463
10463
  prevpolygon.outpolygon.leftpoints.reverse();
10464
10464
  const points2d = prevpolygon.outpolygon.rightpoints.concat(prevpolygon.outpolygon.leftpoints);
10465
10465
  const vertices3d = points2d.map((point2d) => orthobasis.to3D(point2d));
10466
- const polygon3 = poly3.fromPointsAndPlane(vertices3d, plane);
10467
- if (polygon3.vertices.length) destpolygons.push(polygon3);
10466
+ const polygon4 = poly3.fromPointsAndPlane(vertices3d, plane);
10467
+ if (polygon4.vertices.length) destpolygons.push(polygon4);
10468
10468
  }
10469
10469
  }
10470
10470
  }
@@ -10500,7 +10500,7 @@ var require_reTesselateCoplanarPolygons = __commonJS({
10500
10500
  var require_retessellate = __commonJS({
10501
10501
  "node_modules/@jscad/modeling/src/operations/modifiers/retessellate.js"(exports, module) {
10502
10502
  "use strict";
10503
- var geom32 = require_geom3();
10503
+ var geom33 = require_geom3();
10504
10504
  var poly3 = require_poly3();
10505
10505
  var { NEPS } = require_constants();
10506
10506
  var reTesselateCoplanarPolygons = require_reTesselateCoplanarPolygons();
@@ -10508,7 +10508,7 @@ var require_retessellate = __commonJS({
10508
10508
  if (geometry.isRetesselated) {
10509
10509
  return geometry;
10510
10510
  }
10511
- const polygons = geom32.toPolygons(geometry).map((polygon3, index) => ({ vertices: polygon3.vertices, plane: poly3.plane(polygon3), index }));
10511
+ const polygons = geom33.toPolygons(geometry).map((polygon4, index) => ({ vertices: polygon4.vertices, plane: poly3.plane(polygon4), index }));
10512
10512
  const classified = classifyPolygons(polygons);
10513
10513
  const destPolygons = [];
10514
10514
  classified.forEach((group) => {
@@ -10519,7 +10519,7 @@ var require_retessellate = __commonJS({
10519
10519
  destPolygons.push(group);
10520
10520
  }
10521
10521
  });
10522
- const result = geom32.create(destPolygons);
10522
+ const result = geom33.create(destPolygons);
10523
10523
  result.isRetesselated = true;
10524
10524
  return result;
10525
10525
  };
@@ -10554,8 +10554,8 @@ var require_retessellate = __commonJS({
10554
10554
  clusters.forEach((cluster) => {
10555
10555
  if (cluster[0]) result[cluster[0].index] = cluster;
10556
10556
  });
10557
- nonCoplanar.forEach((polygon3) => {
10558
- result[polygon3.index] = polygon3;
10557
+ nonCoplanar.forEach((polygon4) => {
10558
+ result[polygon4.index] = polygon4;
10559
10559
  });
10560
10560
  return result;
10561
10561
  };
@@ -10576,15 +10576,15 @@ var require_mayOverlap = __commonJS({
10576
10576
  "node_modules/@jscad/modeling/src/operations/booleans/mayOverlap.js"(exports, module) {
10577
10577
  "use strict";
10578
10578
  var { EPS } = require_constants();
10579
- var measureBoundingBox2 = require_measureBoundingBox2();
10579
+ var measureBoundingBox3 = require_measureBoundingBox2();
10580
10580
  var mayOverlap = (geometry1, geometry2) => {
10581
10581
  if (geometry1.polygons.length === 0 || geometry2.polygons.length === 0) {
10582
10582
  return false;
10583
10583
  }
10584
- const bounds1 = measureBoundingBox2(geometry1);
10584
+ const bounds1 = measureBoundingBox3(geometry1);
10585
10585
  const min1 = bounds1[0];
10586
10586
  const max1 = bounds1[1];
10587
- const bounds2 = measureBoundingBox2(geometry2);
10587
+ const bounds2 = measureBoundingBox3(geometry2);
10588
10588
  const min2 = bounds2[0];
10589
10589
  const max2 = bounds2[1];
10590
10590
  if (min2[0] - max1[0] > EPS) return false;
@@ -10747,15 +10747,15 @@ var require_splitPolygonByPlane = __commonJS({
10747
10747
  var vec3 = require_vec3();
10748
10748
  var poly3 = require_poly3();
10749
10749
  var splitLineSegmentByPlane = require_splitLineSegmentByPlane();
10750
- var splitPolygonByPlane = (splane, polygon3) => {
10750
+ var splitPolygonByPlane = (splane, polygon4) => {
10751
10751
  const result = {
10752
10752
  type: null,
10753
10753
  front: null,
10754
10754
  back: null
10755
10755
  };
10756
- const vertices = polygon3.vertices;
10756
+ const vertices = polygon4.vertices;
10757
10757
  const numvertices = vertices.length;
10758
- const pplane = poly3.plane(polygon3);
10758
+ const pplane = poly3.plane(polygon4);
10759
10759
  if (plane.equals(pplane, splane)) {
10760
10760
  result.type = 0;
10761
10761
  } else {
@@ -10855,10 +10855,10 @@ var require_PolygonTreeNode = __commonJS({
10855
10855
  var splitPolygonByPlane = require_splitPolygonByPlane();
10856
10856
  var PolygonTreeNode = class _PolygonTreeNode {
10857
10857
  // constructor creates the root node
10858
- constructor(parent, polygon3) {
10858
+ constructor(parent, polygon4) {
10859
10859
  this.parent = parent;
10860
10860
  this.children = [];
10861
- this.polygon = polygon3;
10861
+ this.polygon = polygon4;
10862
10862
  this.removed = false;
10863
10863
  }
10864
10864
  // fill the tree with polygons. Should be called on the root node only; child nodes must
@@ -10868,8 +10868,8 @@ var require_PolygonTreeNode = __commonJS({
10868
10868
  throw new Error("Assertion failed");
10869
10869
  }
10870
10870
  const _this = this;
10871
- polygons.forEach((polygon3) => {
10872
- _this.addChild(polygon3);
10871
+ polygons.forEach((polygon4) => {
10872
+ _this.addChild(polygon4);
10873
10873
  });
10874
10874
  }
10875
10875
  // remove a node
@@ -10946,9 +10946,9 @@ var require_PolygonTreeNode = __commonJS({
10946
10946
  }
10947
10947
  // only to be called for nodes with no children
10948
10948
  _splitByPlane(splane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes) {
10949
- const polygon3 = this.polygon;
10950
- if (polygon3) {
10951
- const bound = poly3.measureBoundingSphere(polygon3);
10949
+ const polygon4 = this.polygon;
10950
+ if (polygon4) {
10951
+ const bound = poly3.measureBoundingSphere(polygon4);
10952
10952
  const sphereradius = bound[3] + EPS;
10953
10953
  const spherecenter = bound;
10954
10954
  const d = vec3.dot(splane, spherecenter) - splane[3];
@@ -10957,7 +10957,7 @@ var require_PolygonTreeNode = __commonJS({
10957
10957
  } else if (d < -sphereradius) {
10958
10958
  backnodes.push(this);
10959
10959
  } else {
10960
- const splitresult = splitPolygonByPlane(splane, polygon3);
10960
+ const splitresult = splitPolygonByPlane(splane, polygon4);
10961
10961
  switch (splitresult.type) {
10962
10962
  case 0:
10963
10963
  coplanarfrontnodes.push(this);
@@ -10990,8 +10990,8 @@ var require_PolygonTreeNode = __commonJS({
10990
10990
  // this should be called whenever the polygon is split
10991
10991
  // a child should be created for every fragment of the split polygon
10992
10992
  // returns the newly created child
10993
- addChild(polygon3) {
10994
- const newchild = new _PolygonTreeNode(this, polygon3);
10993
+ addChild(polygon4) {
10994
+ const newchild = new _PolygonTreeNode(this, polygon4);
10995
10995
  this.children.push(newchild);
10996
10996
  return newchild;
10997
10997
  }
@@ -11125,15 +11125,15 @@ var require_trees = __commonJS({
11125
11125
  var require_intersectGeom3Sub = __commonJS({
11126
11126
  "node_modules/@jscad/modeling/src/operations/booleans/intersectGeom3Sub.js"(exports, module) {
11127
11127
  "use strict";
11128
- var geom32 = require_geom3();
11128
+ var geom33 = require_geom3();
11129
11129
  var mayOverlap = require_mayOverlap();
11130
11130
  var { Tree } = require_trees();
11131
11131
  var intersectGeom3Sub = (geometry1, geometry2) => {
11132
11132
  if (!mayOverlap(geometry1, geometry2)) {
11133
- return geom32.create();
11133
+ return geom33.create();
11134
11134
  }
11135
- const a = new Tree(geom32.toPolygons(geometry1));
11136
- const b = new Tree(geom32.toPolygons(geometry2));
11135
+ const a = new Tree(geom33.toPolygons(geometry1));
11136
+ const b = new Tree(geom33.toPolygons(geometry2));
11137
11137
  a.invert();
11138
11138
  b.clipTo(a);
11139
11139
  b.invert();
@@ -11142,7 +11142,7 @@ var require_intersectGeom3Sub = __commonJS({
11142
11142
  a.addPolygons(b.allPolygons());
11143
11143
  a.invert();
11144
11144
  const newpolygons = a.allPolygons();
11145
- return geom32.create(newpolygons);
11145
+ return geom33.create(newpolygons);
11146
11146
  };
11147
11147
  module.exports = intersectGeom3Sub;
11148
11148
  }
@@ -11173,7 +11173,7 @@ var require_intersectGeom2 = __commonJS({
11173
11173
  "node_modules/@jscad/modeling/src/operations/booleans/intersectGeom2.js"(exports, module) {
11174
11174
  "use strict";
11175
11175
  var flatten = require_flatten();
11176
- var geom32 = require_geom3();
11176
+ var geom33 = require_geom3();
11177
11177
  var measureEpsilon = require_measureEpsilon();
11178
11178
  var fromFakePolygons = require_fromFakePolygons();
11179
11179
  var to3DWalls = require_to3DWalls();
@@ -11183,7 +11183,7 @@ var require_intersectGeom2 = __commonJS({
11183
11183
  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
11184
11184
  const newgeom3 = intersectGeom3(newgeometries);
11185
11185
  const epsilon = measureEpsilon(newgeom3);
11186
- return fromFakePolygons(epsilon, geom32.toPolygons(newgeom3));
11186
+ return fromFakePolygons(epsilon, geom33.toPolygons(newgeom3));
11187
11187
  };
11188
11188
  module.exports = intersect;
11189
11189
  }
@@ -11196,7 +11196,7 @@ var require_intersect2 = __commonJS({
11196
11196
  var flatten = require_flatten();
11197
11197
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
11198
11198
  var geom2 = require_geom2();
11199
- var geom32 = require_geom3();
11199
+ var geom33 = require_geom3();
11200
11200
  var intersectGeom2 = require_intersectGeom2();
11201
11201
  var intersectGeom3 = require_intersectGeom3();
11202
11202
  var intersect = (...geometries) => {
@@ -11207,7 +11207,7 @@ var require_intersect2 = __commonJS({
11207
11207
  }
11208
11208
  const geometry = geometries[0];
11209
11209
  if (geom2.isA(geometry)) return intersectGeom2(geometries);
11210
- if (geom32.isA(geometry)) return intersectGeom3(geometries);
11210
+ if (geom33.isA(geometry)) return intersectGeom3(geometries);
11211
11211
  return geometry;
11212
11212
  };
11213
11213
  module.exports = intersect;
@@ -11220,7 +11220,7 @@ var require_scissionGeom3 = __commonJS({
11220
11220
  "use strict";
11221
11221
  var vec3 = require_vec3();
11222
11222
  var measureEpsilon = require_measureEpsilon();
11223
- var geom32 = require_geom3();
11223
+ var geom33 = require_geom3();
11224
11224
  var sortNb = (array) => array.sort((a, b) => a - b).filter((item, pos, ary) => !pos || item !== ary[pos - 1]);
11225
11225
  var insertMapping = (map, point, index) => {
11226
11226
  const key = `${point}`;
@@ -11237,18 +11237,18 @@ var require_scissionGeom3 = __commonJS({
11237
11237
  };
11238
11238
  var scissionGeom3 = (geometry) => {
11239
11239
  const eps = measureEpsilon(geometry);
11240
- const polygons = geom32.toPolygons(geometry);
11240
+ const polygons = geom33.toPolygons(geometry);
11241
11241
  const pl = polygons.length;
11242
11242
  const indexesPerPoint = /* @__PURE__ */ new Map();
11243
11243
  const temp = vec3.create();
11244
- polygons.forEach((polygon3, index) => {
11245
- polygon3.vertices.forEach((point) => {
11244
+ polygons.forEach((polygon4, index) => {
11245
+ polygon4.vertices.forEach((point) => {
11246
11246
  insertMapping(indexesPerPoint, vec3.snap(temp, point, eps), index);
11247
11247
  });
11248
11248
  });
11249
- const indexesPerPolygon = polygons.map((polygon3) => {
11249
+ const indexesPerPolygon = polygons.map((polygon4) => {
11250
11250
  let indexes = [];
11251
- polygon3.vertices.forEach((point) => {
11251
+ polygon4.vertices.forEach((point) => {
11252
11252
  indexes = indexes.concat(findMapping(indexesPerPoint, vec3.snap(temp, point, eps)));
11253
11253
  });
11254
11254
  return { e: 1, d: sortNb(indexes) };
@@ -11282,7 +11282,7 @@ var require_scissionGeom3 = __commonJS({
11282
11282
  if (indexesPerPolygon[i].indexes) {
11283
11283
  const newpolygons = [];
11284
11284
  indexesPerPolygon[i].indexes.forEach((e, p) => newpolygons.push(polygons[p]));
11285
- newgeometries.push(geom32.create(newpolygons));
11285
+ newgeometries.push(geom33.create(newpolygons));
11286
11286
  }
11287
11287
  }
11288
11288
  return newgeometries;
@@ -11296,13 +11296,13 @@ var require_scission = __commonJS({
11296
11296
  "node_modules/@jscad/modeling/src/operations/booleans/scission.js"(exports, module) {
11297
11297
  "use strict";
11298
11298
  var flatten = require_flatten();
11299
- var geom32 = require_geom3();
11299
+ var geom33 = require_geom3();
11300
11300
  var scissionGeom3 = require_scissionGeom3();
11301
11301
  var scission = (...objects) => {
11302
11302
  objects = flatten(objects);
11303
11303
  if (objects.length === 0) throw new Error("wrong number of arguments");
11304
11304
  const results = objects.map((object) => {
11305
- if (geom32.isA(object)) return scissionGeom3(object);
11305
+ if (geom33.isA(object)) return scissionGeom3(object);
11306
11306
  return object;
11307
11307
  });
11308
11308
  return results.length === 1 ? results[0] : results;
@@ -11315,22 +11315,22 @@ var require_scission = __commonJS({
11315
11315
  var require_subtractGeom3Sub = __commonJS({
11316
11316
  "node_modules/@jscad/modeling/src/operations/booleans/subtractGeom3Sub.js"(exports, module) {
11317
11317
  "use strict";
11318
- var geom32 = require_geom3();
11318
+ var geom33 = require_geom3();
11319
11319
  var mayOverlap = require_mayOverlap();
11320
11320
  var { Tree } = require_trees();
11321
11321
  var subtractGeom3Sub = (geometry1, geometry2) => {
11322
11322
  if (!mayOverlap(geometry1, geometry2)) {
11323
- return geom32.clone(geometry1);
11323
+ return geom33.clone(geometry1);
11324
11324
  }
11325
- const a = new Tree(geom32.toPolygons(geometry1));
11326
- const b = new Tree(geom32.toPolygons(geometry2));
11325
+ const a = new Tree(geom33.toPolygons(geometry1));
11326
+ const b = new Tree(geom33.toPolygons(geometry2));
11327
11327
  a.invert();
11328
11328
  a.clipTo(b);
11329
11329
  b.clipTo(a, true);
11330
11330
  a.addPolygons(b.allPolygons());
11331
11331
  a.invert();
11332
11332
  const newpolygons = a.allPolygons();
11333
- return geom32.create(newpolygons);
11333
+ return geom33.create(newpolygons);
11334
11334
  };
11335
11335
  module.exports = subtractGeom3Sub;
11336
11336
  }
@@ -11361,7 +11361,7 @@ var require_subtractGeom2 = __commonJS({
11361
11361
  "node_modules/@jscad/modeling/src/operations/booleans/subtractGeom2.js"(exports, module) {
11362
11362
  "use strict";
11363
11363
  var flatten = require_flatten();
11364
- var geom32 = require_geom3();
11364
+ var geom33 = require_geom3();
11365
11365
  var measureEpsilon = require_measureEpsilon();
11366
11366
  var fromFakePolygons = require_fromFakePolygons();
11367
11367
  var to3DWalls = require_to3DWalls();
@@ -11371,7 +11371,7 @@ var require_subtractGeom2 = __commonJS({
11371
11371
  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
11372
11372
  const newgeom3 = subtractGeom3(newgeometries);
11373
11373
  const epsilon = measureEpsilon(newgeom3);
11374
- return fromFakePolygons(epsilon, geom32.toPolygons(newgeom3));
11374
+ return fromFakePolygons(epsilon, geom33.toPolygons(newgeom3));
11375
11375
  };
11376
11376
  module.exports = subtract2;
11377
11377
  }
@@ -11384,7 +11384,7 @@ var require_subtract4 = __commonJS({
11384
11384
  var flatten = require_flatten();
11385
11385
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
11386
11386
  var geom2 = require_geom2();
11387
- var geom32 = require_geom3();
11387
+ var geom33 = require_geom3();
11388
11388
  var subtractGeom2 = require_subtractGeom2();
11389
11389
  var subtractGeom3 = require_subtractGeom3();
11390
11390
  var subtract2 = (...geometries) => {
@@ -11395,7 +11395,7 @@ var require_subtract4 = __commonJS({
11395
11395
  }
11396
11396
  const geometry = geometries[0];
11397
11397
  if (geom2.isA(geometry)) return subtractGeom2(geometries);
11398
- if (geom32.isA(geometry)) return subtractGeom3(geometries);
11398
+ if (geom33.isA(geometry)) return subtractGeom3(geometries);
11399
11399
  return geometry;
11400
11400
  };
11401
11401
  module.exports = subtract2;
@@ -11406,28 +11406,28 @@ var require_subtract4 = __commonJS({
11406
11406
  var require_unionGeom3Sub = __commonJS({
11407
11407
  "node_modules/@jscad/modeling/src/operations/booleans/unionGeom3Sub.js"(exports, module) {
11408
11408
  "use strict";
11409
- var geom32 = require_geom3();
11409
+ var geom33 = require_geom3();
11410
11410
  var mayOverlap = require_mayOverlap();
11411
11411
  var { Tree } = require_trees();
11412
11412
  var unionSub = (geometry1, geometry2) => {
11413
11413
  if (!mayOverlap(geometry1, geometry2)) {
11414
11414
  return unionForNonIntersecting(geometry1, geometry2);
11415
11415
  }
11416
- const a = new Tree(geom32.toPolygons(geometry1));
11417
- const b = new Tree(geom32.toPolygons(geometry2));
11416
+ const a = new Tree(geom33.toPolygons(geometry1));
11417
+ const b = new Tree(geom33.toPolygons(geometry2));
11418
11418
  a.clipTo(b, false);
11419
11419
  b.clipTo(a);
11420
11420
  b.invert();
11421
11421
  b.clipTo(a);
11422
11422
  b.invert();
11423
11423
  const newpolygons = a.allPolygons().concat(b.allPolygons());
11424
- const result = geom32.create(newpolygons);
11424
+ const result = geom33.create(newpolygons);
11425
11425
  return result;
11426
11426
  };
11427
11427
  var unionForNonIntersecting = (geometry1, geometry2) => {
11428
- let newpolygons = geom32.toPolygons(geometry1);
11429
- newpolygons = newpolygons.concat(geom32.toPolygons(geometry2));
11430
- return geom32.create(newpolygons);
11428
+ let newpolygons = geom33.toPolygons(geometry1);
11429
+ newpolygons = newpolygons.concat(geom33.toPolygons(geometry2));
11430
+ return geom33.create(newpolygons);
11431
11431
  };
11432
11432
  module.exports = unionSub;
11433
11433
  }
@@ -11459,7 +11459,7 @@ var require_unionGeom2 = __commonJS({
11459
11459
  "node_modules/@jscad/modeling/src/operations/booleans/unionGeom2.js"(exports, module) {
11460
11460
  "use strict";
11461
11461
  var flatten = require_flatten();
11462
- var geom32 = require_geom3();
11462
+ var geom33 = require_geom3();
11463
11463
  var measureEpsilon = require_measureEpsilon();
11464
11464
  var fromFakePolygons = require_fromFakePolygons();
11465
11465
  var to3DWalls = require_to3DWalls();
@@ -11469,7 +11469,7 @@ var require_unionGeom2 = __commonJS({
11469
11469
  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
11470
11470
  const newgeom3 = unionGeom3(newgeometries);
11471
11471
  const epsilon = measureEpsilon(newgeom3);
11472
- return fromFakePolygons(epsilon, geom32.toPolygons(newgeom3));
11472
+ return fromFakePolygons(epsilon, geom33.toPolygons(newgeom3));
11473
11473
  };
11474
11474
  module.exports = union;
11475
11475
  }
@@ -11482,7 +11482,7 @@ var require_union = __commonJS({
11482
11482
  var flatten = require_flatten();
11483
11483
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
11484
11484
  var geom2 = require_geom2();
11485
- var geom32 = require_geom3();
11485
+ var geom33 = require_geom3();
11486
11486
  var unionGeom2 = require_unionGeom2();
11487
11487
  var unionGeom3 = require_unionGeom3();
11488
11488
  var union = (...geometries) => {
@@ -11493,7 +11493,7 @@ var require_union = __commonJS({
11493
11493
  }
11494
11494
  const geometry = geometries[0];
11495
11495
  if (geom2.isA(geometry)) return unionGeom2(geometries);
11496
- if (geom32.isA(geometry)) return unionGeom3(geometries);
11496
+ if (geom33.isA(geometry)) return unionGeom3(geometries);
11497
11497
  return geometry;
11498
11498
  };
11499
11499
  module.exports = union;
@@ -11686,7 +11686,7 @@ var require_extrudePolygon = __commonJS({
11686
11686
  "use strict";
11687
11687
  var mat4 = require_mat4();
11688
11688
  var vec3 = require_vec3();
11689
- var geom32 = require_geom3();
11689
+ var geom33 = require_geom3();
11690
11690
  var poly3 = require_poly3();
11691
11691
  var extrudePolygon = (offsetvector, polygon1) => {
11692
11692
  const direction = vec3.dot(poly3.plane(polygon1), offsetvector);
@@ -11707,7 +11707,7 @@ var require_extrudePolygon = __commonJS({
11707
11707
  newpolygons.push(sideFacePolygon);
11708
11708
  }
11709
11709
  newpolygons.push(poly3.invert(polygon22));
11710
- return geom32.create(newpolygons);
11710
+ return geom33.create(newpolygons);
11711
11711
  };
11712
11712
  module.exports = extrudePolygon;
11713
11713
  }
@@ -11721,7 +11721,7 @@ var require_expandShell = __commonJS({
11721
11721
  var mat4 = require_mat4();
11722
11722
  var vec3 = require_vec3();
11723
11723
  var fnNumberSort = require_fnNumberSort();
11724
- var geom32 = require_geom3();
11724
+ var geom33 = require_geom3();
11725
11725
  var poly3 = require_poly3();
11726
11726
  var sphere = require_sphere();
11727
11727
  var retessellate = require_retessellate();
@@ -11761,23 +11761,23 @@ var require_expandShell = __commonJS({
11761
11761
  segments: 12
11762
11762
  };
11763
11763
  const { delta, segments } = Object.assign({}, defaults, options);
11764
- let result = geom32.create();
11764
+ let result = geom33.create();
11765
11765
  const vertices2planes = /* @__PURE__ */ new Map();
11766
11766
  const edges2planes = /* @__PURE__ */ new Map();
11767
11767
  const v1 = vec3.create();
11768
11768
  const v2 = vec3.create();
11769
- const polygons = geom32.toPolygons(geometry);
11770
- polygons.forEach((polygon3, index) => {
11771
- const extrudevector = vec3.scale(vec3.create(), poly3.plane(polygon3), 2 * delta);
11772
- const translatedpolygon = poly3.transform(mat4.fromTranslation(mat4.create(), vec3.scale(vec3.create(), extrudevector, -0.5)), polygon3);
11769
+ const polygons = geom33.toPolygons(geometry);
11770
+ polygons.forEach((polygon4, index) => {
11771
+ const extrudevector = vec3.scale(vec3.create(), poly3.plane(polygon4), 2 * delta);
11772
+ const translatedpolygon = poly3.transform(mat4.fromTranslation(mat4.create(), vec3.scale(vec3.create(), extrudevector, -0.5)), polygon4);
11773
11773
  const extrudedface = extrudePolygon(extrudevector, translatedpolygon);
11774
11774
  result = unionGeom3Sub(result, extrudedface);
11775
- const vertices = polygon3.vertices;
11775
+ const vertices = polygon4.vertices;
11776
11776
  for (let i = 0; i < vertices.length; i++) {
11777
- mapPlaneToVertex(vertices2planes, vertices[i], poly3.plane(polygon3));
11777
+ mapPlaneToVertex(vertices2planes, vertices[i], poly3.plane(polygon4));
11778
11778
  const j = (i + 1) % vertices.length;
11779
11779
  const edge = [vertices[i], vertices[j]];
11780
- mapPlaneToEdge(edges2planes, edge, poly3.plane(polygon3));
11780
+ mapPlaneToEdge(edges2planes, edge, poly3.plane(polygon4));
11781
11781
  }
11782
11782
  });
11783
11783
  edges2planes.forEach((item) => {
@@ -11831,8 +11831,8 @@ var require_expandShell = __commonJS({
11831
11831
  startfacevertices.push(p1);
11832
11832
  endfacevertices.push(p2);
11833
11833
  const points = [prevp2, p2, p1, prevp1];
11834
- const polygon3 = poly3.create(points);
11835
- polygons2.push(polygon3);
11834
+ const polygon4 = poly3.create(points);
11835
+ polygons2.push(polygon4);
11836
11836
  }
11837
11837
  prevp1 = p1;
11838
11838
  prevp2 = p2;
@@ -11841,7 +11841,7 @@ var require_expandShell = __commonJS({
11841
11841
  endfacevertices.reverse();
11842
11842
  polygons2.push(poly3.create(startfacevertices));
11843
11843
  polygons2.push(poly3.create(endfacevertices));
11844
- const cylinder2 = geom32.create(polygons2);
11844
+ const cylinder2 = geom33.create(polygons2);
11845
11845
  result = unionGeom3Sub(result, cylinder2);
11846
11846
  });
11847
11847
  vertices2planes.forEach((item) => {
@@ -11885,7 +11885,7 @@ var require_expandShell = __commonJS({
11885
11885
  var require_expandGeom3 = __commonJS({
11886
11886
  "node_modules/@jscad/modeling/src/operations/expansions/expandGeom3.js"(exports, module) {
11887
11887
  "use strict";
11888
- var geom32 = require_geom3();
11888
+ var geom33 = require_geom3();
11889
11889
  var union = require_union();
11890
11890
  var expandShell = require_expandShell();
11891
11891
  var expandGeom3 = (options, geometry) => {
@@ -11898,7 +11898,7 @@ var require_expandGeom3 = __commonJS({
11898
11898
  if (!(corners === "round")) {
11899
11899
  throw new Error('corners must be "round" for 3D geometries');
11900
11900
  }
11901
- const polygons = geom32.toPolygons(geometry);
11901
+ const polygons = geom33.toPolygons(geometry);
11902
11902
  if (polygons.length === 0) throw new Error("the given geometry cannot be empty");
11903
11903
  options = { delta, corners, segments };
11904
11904
  const expanded = expandShell(options, geometry);
@@ -11995,7 +11995,7 @@ var require_expand = __commonJS({
11995
11995
  "use strict";
11996
11996
  var flatten = require_flatten();
11997
11997
  var geom2 = require_geom2();
11998
- var geom32 = require_geom3();
11998
+ var geom33 = require_geom3();
11999
11999
  var path2 = require_path2();
12000
12000
  var expandGeom2 = require_expandGeom2();
12001
12001
  var expandGeom3 = require_expandGeom3();
@@ -12006,7 +12006,7 @@ var require_expand = __commonJS({
12006
12006
  const results = objects.map((object) => {
12007
12007
  if (path2.isA(object)) return expandPath2(options, object);
12008
12008
  if (geom2.isA(object)) return expandGeom2(options, object);
12009
- if (geom32.isA(object)) return expandGeom3(options, object);
12009
+ if (geom33.isA(object)) return expandGeom3(options, object);
12010
12010
  return object;
12011
12011
  });
12012
12012
  return results.length === 1 ? results[0] : results;
@@ -12034,7 +12034,7 @@ var require_offsetGeom2 = __commonJS({
12034
12034
  }
12035
12035
  const outlines = geom2.toOutlines(geometry);
12036
12036
  const newoutlines = outlines.map((outline) => {
12037
- const level = outlines.reduce((acc, polygon3) => acc + poly2.arePointsInside(outline, poly2.create(polygon3)), 0);
12037
+ const level = outlines.reduce((acc, polygon4) => acc + poly2.arePointsInside(outline, poly2.create(polygon4)), 0);
12038
12038
  const outside = level % 2 === 0;
12039
12039
  options = {
12040
12040
  delta: outside ? delta : -delta,
@@ -12182,7 +12182,7 @@ var require_extrudeLinear = __commonJS({
12182
12182
  var path2 = require_path2();
12183
12183
  var extrudeLinearGeom2 = require_extrudeLinearGeom2();
12184
12184
  var extrudeLinearPath2 = require_extrudeLinearPath2();
12185
- var extrudeLinear3 = (options, ...objects) => {
12185
+ var extrudeLinear4 = (options, ...objects) => {
12186
12186
  const defaults = {
12187
12187
  height: 1,
12188
12188
  twistAngle: 0,
@@ -12200,7 +12200,7 @@ var require_extrudeLinear = __commonJS({
12200
12200
  });
12201
12201
  return results.length === 1 ? results[0] : results;
12202
12202
  };
12203
- module.exports = extrudeLinear3;
12203
+ module.exports = extrudeLinear4;
12204
12204
  }
12205
12205
  });
12206
12206
 
@@ -12368,7 +12368,7 @@ var require_project = __commonJS({
12368
12368
  var plane = require_plane();
12369
12369
  var mat4 = require_mat4();
12370
12370
  var geom2 = require_geom2();
12371
- var geom32 = require_geom3();
12371
+ var geom33 = require_geom3();
12372
12372
  var poly3 = require_poly3();
12373
12373
  var measureEpsilon = require_measureEpsilon();
12374
12374
  var unionGeom2 = require_unionGeom2();
@@ -12380,7 +12380,7 @@ var require_project = __commonJS({
12380
12380
  const epsilon = measureEpsilon(geometry);
12381
12381
  const epsilonArea = epsilon * epsilon * Math.sqrt(3) / 4;
12382
12382
  if (epsilon === 0) return geom2.create();
12383
- const polygons = geom32.toPolygons(geometry);
12383
+ const polygons = geom33.toPolygons(geometry);
12384
12384
  let projpolys = [];
12385
12385
  for (let i = 0; i < polygons.length; i++) {
12386
12386
  const newpoints = polygons[i].vertices.map((v) => plane.projectionOfPoint(projplane, v));
@@ -12409,7 +12409,7 @@ var require_project = __commonJS({
12409
12409
  if (objects.length === 0) throw new Error("wrong number of arguments");
12410
12410
  options = { axis, origin };
12411
12411
  const results = objects.map((object) => {
12412
- if (geom32.isA(object)) return projectGeom3(options, object);
12412
+ if (geom33.isA(object)) return projectGeom3(options, object);
12413
12413
  return object;
12414
12414
  });
12415
12415
  return results.length === 1 ? results[0] : results;
@@ -12481,7 +12481,7 @@ var require_toUniquePoints = __commonJS({
12481
12481
  "node_modules/@jscad/modeling/src/operations/hulls/toUniquePoints.js"(exports, module) {
12482
12482
  "use strict";
12483
12483
  var geom2 = require_geom2();
12484
- var geom32 = require_geom3();
12484
+ var geom33 = require_geom3();
12485
12485
  var path2 = require_path2();
12486
12486
  var toUniquePoints = (geometries) => {
12487
12487
  const found = /* @__PURE__ */ new Set();
@@ -12496,8 +12496,8 @@ var require_toUniquePoints = __commonJS({
12496
12496
  geometries.forEach((geometry) => {
12497
12497
  if (geom2.isA(geometry)) {
12498
12498
  geom2.toPoints(geometry).forEach(addPoint);
12499
- } else if (geom32.isA(geometry)) {
12500
- geom32.toPoints(geometry).forEach((points) => points.forEach(addPoint));
12499
+ } else if (geom33.isA(geometry)) {
12500
+ geom33.toPoints(geometry).forEach((points) => points.forEach(addPoint));
12501
12501
  } else if (path2.isA(geometry)) {
12502
12502
  path2.toPoints(geometry).forEach(addPoint);
12503
12503
  }
@@ -12568,14 +12568,14 @@ var require_hullGeom3 = __commonJS({
12568
12568
  "node_modules/@jscad/modeling/src/operations/hulls/hullGeom3.js"(exports, module) {
12569
12569
  "use strict";
12570
12570
  var flatten = require_flatten();
12571
- var geom32 = require_geom3();
12571
+ var geom33 = require_geom3();
12572
12572
  var toUniquePoints = require_toUniquePoints();
12573
12573
  var hullPoints3 = require_hullPoints3();
12574
12574
  var hullGeom3 = (...geometries) => {
12575
12575
  geometries = flatten(geometries);
12576
12576
  const unique = toUniquePoints(geometries);
12577
- if (unique.length === 0) return geom32.create();
12578
- return geom32.create(hullPoints3(unique));
12577
+ if (unique.length === 0) return geom33.create();
12578
+ return geom33.create(hullPoints3(unique));
12579
12579
  };
12580
12580
  module.exports = hullGeom3;
12581
12581
  }
@@ -12588,7 +12588,7 @@ var require_hull = __commonJS({
12588
12588
  var flatten = require_flatten();
12589
12589
  var areAllShapesTheSameType = require_areAllShapesTheSameType();
12590
12590
  var geom2 = require_geom2();
12591
- var geom32 = require_geom3();
12591
+ var geom33 = require_geom3();
12592
12592
  var path2 = require_path2();
12593
12593
  var hullPath2 = require_hullPath2();
12594
12594
  var hullGeom2 = require_hullGeom2();
@@ -12602,7 +12602,7 @@ var require_hull = __commonJS({
12602
12602
  const geometry = geometries[0];
12603
12603
  if (path2.isA(geometry)) return hullPath2(geometries);
12604
12604
  if (geom2.isA(geometry)) return hullGeom2(geometries);
12605
- if (geom32.isA(geometry)) return hullGeom3(geometries);
12605
+ if (geom33.isA(geometry)) return hullGeom3(geometries);
12606
12606
  return geometry;
12607
12607
  };
12608
12608
  module.exports = hull;
@@ -12648,24 +12648,24 @@ var require_snapPolygons = __commonJS({
12648
12648
  "use strict";
12649
12649
  var vec3 = require_vec3();
12650
12650
  var poly3 = require_poly3();
12651
- var isValidPoly3 = (epsilon, polygon3) => {
12652
- const area = Math.abs(poly3.measureArea(polygon3));
12651
+ var isValidPoly3 = (epsilon, polygon4) => {
12652
+ const area = Math.abs(poly3.measureArea(polygon4));
12653
12653
  return Number.isFinite(area) && area > epsilon;
12654
12654
  };
12655
12655
  var snapPolygons = (epsilon, polygons) => {
12656
- let newpolygons = polygons.map((polygon3) => {
12657
- const snapvertices = polygon3.vertices.map((vertice) => vec3.snap(vec3.create(), vertice, epsilon));
12656
+ let newpolygons = polygons.map((polygon4) => {
12657
+ const snapvertices = polygon4.vertices.map((vertice) => vec3.snap(vec3.create(), vertice, epsilon));
12658
12658
  const newvertices = [];
12659
12659
  for (let i = 0; i < snapvertices.length; i++) {
12660
12660
  const j = (i + 1) % snapvertices.length;
12661
12661
  if (!vec3.equals(snapvertices[i], snapvertices[j])) newvertices.push(snapvertices[i]);
12662
12662
  }
12663
12663
  const newpolygon = poly3.create(newvertices);
12664
- if (polygon3.color) newpolygon.color = polygon3.color;
12664
+ if (polygon4.color) newpolygon.color = polygon4.color;
12665
12665
  return newpolygon;
12666
12666
  });
12667
12667
  const epsilonArea = epsilon * epsilon * Math.sqrt(3) / 4;
12668
- newpolygons = newpolygons.filter((polygon3) => isValidPoly3(epsilonArea, polygon3));
12668
+ newpolygons = newpolygons.filter((polygon4) => isValidPoly3(epsilonArea, polygon4));
12669
12669
  return newpolygons;
12670
12670
  };
12671
12671
  module.exports = snapPolygons;
@@ -12679,8 +12679,8 @@ var require_mergePolygons = __commonJS({
12679
12679
  var aboutEqualNormals = require_aboutEqualNormals();
12680
12680
  var vec3 = require_vec3();
12681
12681
  var poly3 = require_poly3();
12682
- var createEdges = (polygon3) => {
12683
- const points = poly3.toPoints(polygon3);
12682
+ var createEdges = (polygon4) => {
12683
+ const points = poly3.toPoints(polygon4);
12684
12684
  const edges = [];
12685
12685
  for (let i = 0; i < points.length; i++) {
12686
12686
  const j = (i + 1) % points.length;
@@ -12729,7 +12729,7 @@ var require_mergePolygons = __commonJS({
12729
12729
  return vec3.dot(d0, normal);
12730
12730
  };
12731
12731
  var createPolygonAnd = (edge) => {
12732
- let polygon3;
12732
+ let polygon4;
12733
12733
  const points = [];
12734
12734
  while (edge.next) {
12735
12735
  const next = edge.next;
@@ -12740,8 +12740,8 @@ var require_mergePolygons = __commonJS({
12740
12740
  edge.prev = null;
12741
12741
  edge = next;
12742
12742
  }
12743
- if (points.length > 0) polygon3 = poly3.create(points);
12744
- return polygon3;
12743
+ if (points.length > 0) polygon4 = poly3.create(points);
12744
+ return polygon4;
12745
12745
  };
12746
12746
  var mergeCoplanarPolygons = (sourcepolygons) => {
12747
12747
  if (sourcepolygons.length < 2) return sourcepolygons;
@@ -12749,8 +12749,8 @@ var require_mergePolygons = __commonJS({
12749
12749
  const polygons = sourcepolygons.slice();
12750
12750
  const edgeList = /* @__PURE__ */ new Map();
12751
12751
  while (polygons.length > 0) {
12752
- const polygon3 = polygons.shift();
12753
- const edges = createEdges(polygon3);
12752
+ const polygon4 = polygons.shift();
12753
+ const edges = createEdges(polygon4);
12754
12754
  for (let i = 0; i < edges.length; i++) {
12755
12755
  const current = edges[i];
12756
12756
  const opposite = findOppositeEdge(edgeList, current);
@@ -12806,8 +12806,8 @@ var require_mergePolygons = __commonJS({
12806
12806
  }
12807
12807
  const destpolygons = [];
12808
12808
  edgeList.forEach((edge) => {
12809
- const polygon3 = createPolygonAnd(edge);
12810
- if (polygon3) destpolygons.push(polygon3);
12809
+ const polygon4 = createPolygonAnd(edge);
12810
+ if (polygon4) destpolygons.push(polygon4);
12811
12811
  });
12812
12812
  edgeList.clear();
12813
12813
  return destpolygons;
@@ -12820,13 +12820,13 @@ var require_mergePolygons = __commonJS({
12820
12820
  };
12821
12821
  var mergePolygons = (epsilon, polygons) => {
12822
12822
  const polygonsPerPlane = [];
12823
- polygons.forEach((polygon3) => {
12824
- const mapping = polygonsPerPlane.find((element) => coplanar(element[0], poly3.plane(polygon3)));
12823
+ polygons.forEach((polygon4) => {
12824
+ const mapping = polygonsPerPlane.find((element) => coplanar(element[0], poly3.plane(polygon4)));
12825
12825
  if (mapping) {
12826
12826
  const polygons2 = mapping[1];
12827
- polygons2.push(polygon3);
12827
+ polygons2.push(polygon4);
12828
12828
  } else {
12829
- polygonsPerPlane.push([poly3.plane(polygon3), [polygon3]]);
12829
+ polygonsPerPlane.push([poly3.plane(polygon4), [polygon4]]);
12830
12830
  }
12831
12831
  });
12832
12832
  let destpolygons = [];
@@ -12922,15 +12922,15 @@ var require_insertTjunctions = __commonJS({
12922
12922
  var insertTjunctions = (polygons) => {
12923
12923
  const sidemap = /* @__PURE__ */ new Map();
12924
12924
  for (let polygonindex = 0; polygonindex < polygons.length; polygonindex++) {
12925
- const polygon3 = polygons[polygonindex];
12926
- const numvertices = polygon3.vertices.length;
12925
+ const polygon4 = polygons[polygonindex];
12926
+ const numvertices = polygon4.vertices.length;
12927
12927
  if (numvertices >= 3) {
12928
- let vertex = polygon3.vertices[0];
12928
+ let vertex = polygon4.vertices[0];
12929
12929
  let vertextag = getTag(vertex);
12930
12930
  for (let vertexindex = 0; vertexindex < numvertices; vertexindex++) {
12931
12931
  let nextvertexindex = vertexindex + 1;
12932
12932
  if (nextvertexindex === numvertices) nextvertexindex = 0;
12933
- const nextvertex = polygon3.vertices[nextvertexindex];
12933
+ const nextvertex = polygon4.vertices[nextvertexindex];
12934
12934
  const nextvertextag = getTag(nextvertex);
12935
12935
  const sidetag = `${vertextag}/${nextvertextag}`;
12936
12936
  const reversesidetag = `${nextvertextag}/${vertextag}`;
@@ -13038,17 +13038,17 @@ var require_insertTjunctions = __commonJS({
13038
13038
  const distancesquared = vec3.squaredDistance(closestpoint, endpos);
13039
13039
  if (distancesquared < constants.EPS * constants.EPS) {
13040
13040
  const polygonindex = matchingside.polygonindex;
13041
- const polygon3 = newpolygons[polygonindex];
13041
+ const polygon4 = newpolygons[polygonindex];
13042
13042
  const insertionvertextag = getTag(matchingside.vertex1);
13043
13043
  let insertionvertextagindex = -1;
13044
- for (let i = 0; i < polygon3.vertices.length; i++) {
13045
- if (getTag(polygon3.vertices[i]) === insertionvertextag) {
13044
+ for (let i = 0; i < polygon4.vertices.length; i++) {
13045
+ if (getTag(polygon4.vertices[i]) === insertionvertextag) {
13046
13046
  insertionvertextagindex = i;
13047
13047
  break;
13048
13048
  }
13049
13049
  }
13050
13050
  if (assert && insertionvertextagindex < 0) throw new Error("assert failed");
13051
- const newvertices = polygon3.vertices.slice(0);
13051
+ const newvertices = polygon4.vertices.slice(0);
13052
13052
  newvertices.splice(insertionvertextagindex, 0, endvertex);
13053
13053
  const newpolygon = poly3.create(newvertices);
13054
13054
  newpolygons[polygonindex] = newpolygon;
@@ -13088,35 +13088,35 @@ var require_triangulatePolygons = __commonJS({
13088
13088
  "use strict";
13089
13089
  var vec3 = require_vec3();
13090
13090
  var poly3 = require_poly3();
13091
- var triangulatePolygon = (epsilon, polygon3, triangles) => {
13092
- const nv = polygon3.vertices.length;
13091
+ var triangulatePolygon = (epsilon, polygon4, triangles) => {
13092
+ const nv = polygon4.vertices.length;
13093
13093
  if (nv > 3) {
13094
13094
  if (nv > 4) {
13095
13095
  const midpoint = [0, 0, 0];
13096
- polygon3.vertices.forEach((vertice) => vec3.add(midpoint, midpoint, vertice));
13096
+ polygon4.vertices.forEach((vertice) => vec3.add(midpoint, midpoint, vertice));
13097
13097
  vec3.snap(midpoint, vec3.divide(midpoint, midpoint, [nv, nv, nv]), epsilon);
13098
13098
  for (let i = 0; i < nv; i++) {
13099
- const poly = poly3.create([midpoint, polygon3.vertices[i], polygon3.vertices[(i + 1) % nv]]);
13100
- if (polygon3.color) poly.color = polygon3.color;
13099
+ const poly = poly3.create([midpoint, polygon4.vertices[i], polygon4.vertices[(i + 1) % nv]]);
13100
+ if (polygon4.color) poly.color = polygon4.color;
13101
13101
  triangles.push(poly);
13102
13102
  }
13103
13103
  return;
13104
13104
  }
13105
- const poly0 = poly3.create([polygon3.vertices[0], polygon3.vertices[1], polygon3.vertices[2]]);
13106
- const poly1 = poly3.create([polygon3.vertices[0], polygon3.vertices[2], polygon3.vertices[3]]);
13107
- if (polygon3.color) {
13108
- poly0.color = polygon3.color;
13109
- poly1.color = polygon3.color;
13105
+ const poly0 = poly3.create([polygon4.vertices[0], polygon4.vertices[1], polygon4.vertices[2]]);
13106
+ const poly1 = poly3.create([polygon4.vertices[0], polygon4.vertices[2], polygon4.vertices[3]]);
13107
+ if (polygon4.color) {
13108
+ poly0.color = polygon4.color;
13109
+ poly1.color = polygon4.color;
13110
13110
  }
13111
13111
  triangles.push(poly0, poly1);
13112
13112
  return;
13113
13113
  }
13114
- triangles.push(polygon3);
13114
+ triangles.push(polygon4);
13115
13115
  };
13116
13116
  var triangulatePolygons = (epsilon, polygons) => {
13117
13117
  const triangles = [];
13118
- polygons.forEach((polygon3) => {
13119
- triangulatePolygon(epsilon, polygon3, triangles);
13118
+ polygons.forEach((polygon4) => {
13119
+ triangulatePolygon(epsilon, polygon4, triangles);
13120
13120
  });
13121
13121
  return triangles;
13122
13122
  };
@@ -13131,7 +13131,7 @@ var require_generalize = __commonJS({
13131
13131
  var flatten = require_flatten();
13132
13132
  var measureEpsilon = require_measureEpsilon();
13133
13133
  var geom2 = require_geom2();
13134
- var geom32 = require_geom3();
13134
+ var geom33 = require_geom3();
13135
13135
  var path2 = require_path2();
13136
13136
  var snapPolygons = require_snapPolygons();
13137
13137
  var mergePolygons = require_mergePolygons();
@@ -13147,7 +13147,7 @@ var require_generalize = __commonJS({
13147
13147
  };
13148
13148
  const { snap, simplify, triangulate } = Object.assign({}, defaults, options);
13149
13149
  const epsilon = measureEpsilon(geometry);
13150
- let polygons = geom32.toPolygons(geometry);
13150
+ let polygons = geom33.toPolygons(geometry);
13151
13151
  if (snap) {
13152
13152
  polygons = snapPolygons(epsilon, polygons);
13153
13153
  }
@@ -13168,7 +13168,7 @@ var require_generalize = __commonJS({
13168
13168
  const results = geometries.map((geometry) => {
13169
13169
  if (path2.isA(geometry)) return generalizePath2(options, geometry);
13170
13170
  if (geom2.isA(geometry)) return generalizeGeom2(options, geometry);
13171
- if (geom32.isA(geometry)) return generalizeGeom3(options, geometry);
13171
+ if (geom33.isA(geometry)) return generalizeGeom3(options, geometry);
13172
13172
  throw new Error("invalid geometry");
13173
13173
  });
13174
13174
  return results.length === 1 ? results[0] : results;
@@ -13184,7 +13184,7 @@ var require_snap3 = __commonJS({
13184
13184
  var flatten = require_flatten();
13185
13185
  var vec2 = require_vec2();
13186
13186
  var geom2 = require_geom2();
13187
- var geom32 = require_geom3();
13187
+ var geom33 = require_geom3();
13188
13188
  var path2 = require_path2();
13189
13189
  var measureEpsilon = require_measureEpsilon();
13190
13190
  var snapPolygons = require_snapPolygons();
@@ -13203,9 +13203,9 @@ var require_snap3 = __commonJS({
13203
13203
  };
13204
13204
  var snapGeom3 = (geometry) => {
13205
13205
  const epsilon = measureEpsilon(geometry);
13206
- const polygons = geom32.toPolygons(geometry);
13206
+ const polygons = geom33.toPolygons(geometry);
13207
13207
  const newpolygons = snapPolygons(epsilon, polygons);
13208
- return geom32.create(newpolygons);
13208
+ return geom33.create(newpolygons);
13209
13209
  };
13210
13210
  var snap = (...geometries) => {
13211
13211
  geometries = flatten(geometries);
@@ -13213,7 +13213,7 @@ var require_snap3 = __commonJS({
13213
13213
  const results = geometries.map((geometry) => {
13214
13214
  if (path2.isA(geometry)) return snapPath2(geometry);
13215
13215
  if (geom2.isA(geometry)) return snapGeom2(geometry);
13216
- if (geom32.isA(geometry)) return snapGeom3(geometry);
13216
+ if (geom33.isA(geometry)) return snapGeom3(geometry);
13217
13217
  return geometry;
13218
13218
  });
13219
13219
  return results.length === 1 ? results[0] : results;
@@ -13256,7 +13256,7 @@ var require_align = __commonJS({
13256
13256
  var flatten = require_flatten();
13257
13257
  var padArrayToLength = require_padArrayToLength();
13258
13258
  var measureAggregateBoundingBox = require_measureAggregateBoundingBox();
13259
- var { translate: translate3 } = require_translate2();
13259
+ var { translate: translate4 } = require_translate2();
13260
13260
  var validateOptions = (options) => {
13261
13261
  if (!Array.isArray(options.modes) || options.modes.length > 3) throw new Error("align(): modes must be an array of length <= 3");
13262
13262
  options.modes = padArrayToLength(options.modes, "none", 3);
@@ -13293,7 +13293,7 @@ var require_align = __commonJS({
13293
13293
  translation[i] = relativeTo[i] - bounds[0][i];
13294
13294
  }
13295
13295
  }
13296
- return translate3(translation, geometry);
13296
+ return translate4(translation, geometry);
13297
13297
  };
13298
13298
  var align = (options, ...geometries) => {
13299
13299
  const defaults = {
@@ -13327,22 +13327,22 @@ var require_center = __commonJS({
13327
13327
  "use strict";
13328
13328
  var flatten = require_flatten();
13329
13329
  var geom2 = require_geom2();
13330
- var geom32 = require_geom3();
13330
+ var geom33 = require_geom3();
13331
13331
  var path2 = require_path2();
13332
- var measureBoundingBox2 = require_measureBoundingBox2();
13333
- var { translate: translate3 } = require_translate2();
13332
+ var measureBoundingBox3 = require_measureBoundingBox2();
13333
+ var { translate: translate4 } = require_translate2();
13334
13334
  var centerGeometry = (options, object) => {
13335
13335
  const defaults = {
13336
13336
  axes: [true, true, true],
13337
13337
  relativeTo: [0, 0, 0]
13338
13338
  };
13339
13339
  const { axes, relativeTo } = Object.assign({}, defaults, options);
13340
- const bounds = measureBoundingBox2(object);
13340
+ const bounds = measureBoundingBox3(object);
13341
13341
  const offset = [0, 0, 0];
13342
13342
  if (axes[0]) offset[0] = relativeTo[0] - (bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2);
13343
13343
  if (axes[1]) offset[1] = relativeTo[1] - (bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2);
13344
13344
  if (axes[2]) offset[2] = relativeTo[2] - (bounds[0][2] + (bounds[1][2] - bounds[0][2]) / 2);
13345
- return translate3(offset, object);
13345
+ return translate4(offset, object);
13346
13346
  };
13347
13347
  var center = (options, ...objects) => {
13348
13348
  const defaults = {
@@ -13358,7 +13358,7 @@ var require_center = __commonJS({
13358
13358
  const results = objects.map((object) => {
13359
13359
  if (path2.isA(object)) return centerGeometry(options, object);
13360
13360
  if (geom2.isA(object)) return centerGeometry(options, object);
13361
- if (geom32.isA(object)) return centerGeometry(options, object);
13361
+ if (geom33.isA(object)) return centerGeometry(options, object);
13362
13362
  return object;
13363
13363
  });
13364
13364
  return results.length === 1 ? results[0] : results;
@@ -13382,7 +13382,7 @@ var require_scale4 = __commonJS({
13382
13382
  var flatten = require_flatten();
13383
13383
  var mat4 = require_mat4();
13384
13384
  var geom2 = require_geom2();
13385
- var geom32 = require_geom3();
13385
+ var geom33 = require_geom3();
13386
13386
  var path2 = require_path2();
13387
13387
  var scale = (factors, ...objects) => {
13388
13388
  if (!Array.isArray(factors)) throw new Error("factors must be an array");
@@ -13395,7 +13395,7 @@ var require_scale4 = __commonJS({
13395
13395
  const results = objects.map((object) => {
13396
13396
  if (path2.isA(object)) return path2.transform(matrix, object);
13397
13397
  if (geom2.isA(object)) return geom2.transform(matrix, object);
13398
- if (geom32.isA(object)) return geom32.transform(matrix, object);
13398
+ if (geom33.isA(object)) return geom33.transform(matrix, object);
13399
13399
  return object;
13400
13400
  });
13401
13401
  return results.length === 1 ? results[0] : results;
@@ -13418,7 +13418,7 @@ var require_transform12 = __commonJS({
13418
13418
  "use strict";
13419
13419
  var flatten = require_flatten();
13420
13420
  var geom2 = require_geom2();
13421
- var geom32 = require_geom3();
13421
+ var geom33 = require_geom3();
13422
13422
  var path2 = require_path2();
13423
13423
  var transform = (matrix, ...objects) => {
13424
13424
  objects = flatten(objects);
@@ -13426,7 +13426,7 @@ var require_transform12 = __commonJS({
13426
13426
  const results = objects.map((object) => {
13427
13427
  if (path2.isA(object)) return path2.transform(matrix, object);
13428
13428
  if (geom2.isA(object)) return geom2.transform(matrix, object);
13429
- if (geom32.isA(object)) return geom32.transform(matrix, object);
13429
+ if (geom33.isA(object)) return geom33.transform(matrix, object);
13430
13430
  return object;
13431
13431
  });
13432
13432
  return results.length === 1 ? results[0] : results;
@@ -14969,8 +14969,14 @@ var createBoardMesh = (board, options) => {
14969
14969
  };
14970
14970
 
14971
14971
  // lib/converters/circuit-to-3d.ts
14972
+ var import_extrusions3 = __toESM(require_extrusions(), 1);
14973
+ var import_primitives3 = __toESM(require_primitives(), 1);
14974
+ var import_transforms3 = __toESM(require_transforms(), 1);
14975
+ var geom32 = __toESM(require_geom3(), 1);
14976
+ var import_measureBoundingBox2 = __toESM(require_measureBoundingBox2(), 1);
14972
14977
  var DEFAULT_BOARD_THICKNESS = 1.6;
14973
14978
  var DEFAULT_COMPONENT_HEIGHT = 2;
14979
+ var COPPER_THICKNESS = 0.035;
14974
14980
  function convertRotationFromCadRotation(rot) {
14975
14981
  return {
14976
14982
  x: rot.x * Math.PI / 180,
@@ -14982,6 +14988,7 @@ async function convertCircuitJsonTo3D(circuitJson, options = {}) {
14982
14988
  const {
14983
14989
  pcbColor = "rgba(0,140,0,0.8)",
14984
14990
  componentColor = "rgba(128,128,128,0.5)",
14991
+ copperColor = "#C87B4B",
14985
14992
  boardThickness = DEFAULT_BOARD_THICKNESS,
14986
14993
  defaultComponentHeight = DEFAULT_COMPONENT_HEIGHT,
14987
14994
  renderBoardTextures: shouldRenderTextures = true,
@@ -15042,6 +15049,63 @@ async function convertCircuitJsonTo3D(circuitJson, options = {}) {
15042
15049
  }
15043
15050
  boxes.push(boardBox);
15044
15051
  }
15052
+ const pcbPours = db.pcb_copper_pour?.list?.() ?? [];
15053
+ for (const pour of pcbPours) {
15054
+ const isBottomLayer = pour.layer === "bottom";
15055
+ const y = isBottomLayer ? -(effectiveBoardThickness / 2) - COPPER_THICKNESS / 2 : effectiveBoardThickness / 2 + COPPER_THICKNESS / 2;
15056
+ if (pour.shape === "rect") {
15057
+ const box = {
15058
+ center: {
15059
+ x: pour.center.x,
15060
+ y,
15061
+ z: pour.center.y
15062
+ },
15063
+ size: {
15064
+ x: pour.width,
15065
+ y: COPPER_THICKNESS,
15066
+ z: pour.height
15067
+ },
15068
+ rotation: { x: 0, y: 0, z: 0 },
15069
+ color: pour.covered_with_solder_mask ? pcbColor : copperColor
15070
+ };
15071
+ if (pour.rotation && typeof pour.rotation === "number") {
15072
+ box.rotation.y = -(pour.rotation * Math.PI) / 180;
15073
+ }
15074
+ boxes.push(box);
15075
+ } else if (pour.shape === "polygon") {
15076
+ const { points } = pour;
15077
+ let center_x = 0;
15078
+ let center_y = 0;
15079
+ for (const p of points) {
15080
+ center_x += p.x;
15081
+ center_y += p.y;
15082
+ }
15083
+ center_x /= points.length;
15084
+ center_y /= points.length;
15085
+ const relativePoints = points.map((p) => [
15086
+ p.x - center_x,
15087
+ -(p.y - center_y)
15088
+ ]);
15089
+ if (arePointsClockwise(relativePoints)) {
15090
+ relativePoints.reverse();
15091
+ }
15092
+ const shape2d = (0, import_primitives3.polygon)({ points: relativePoints });
15093
+ let geom = (0, import_extrusions3.extrudeLinear)({ height: COPPER_THICKNESS }, shape2d);
15094
+ geom = (0, import_transforms3.translate)([0, 0, -COPPER_THICKNESS / 2], geom);
15095
+ geom = (0, import_transforms3.rotateX)(-Math.PI / 2, geom);
15096
+ const triangles = geom3ToTriangles(geom);
15097
+ const bbox = createBoundingBox((0, import_measureBoundingBox2.default)(geom));
15098
+ const mesh = { triangles, boundingBox: bbox };
15099
+ const box = {
15100
+ center: { x: center_x, y, z: center_y },
15101
+ size: { x: 1, y: 1, z: 1 },
15102
+ // size doesn't matter much as we provide mesh
15103
+ mesh,
15104
+ color: pour.covered_with_solder_mask ? pcbColor : copperColor
15105
+ };
15106
+ boxes.push(box);
15107
+ }
15108
+ }
15045
15109
  const cadComponents = db.cad_component?.list?.() ?? [];
15046
15110
  const pcbComponentIdsWith3D = /* @__PURE__ */ new Set();
15047
15111
  for (const cad of cadComponents) {