rm-graphical-computing 1.0.38 → 1.0.39

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
@@ -420,9 +420,9 @@ var N = class {
420
420
  closestDistance: null
421
421
  };
422
422
  m < 0 && p.negate();
423
- let _ = new e.Vector3().addVectors(f, p).normalize(), v = new e.Vector3().addVectors(t, n).multiplyScalar(.5), y = ee(r, v, f), b = ee(i, v, f), x = (y + b) / 2, S = Math.max(y, b), C = t.dot(_), w = n.dot(_), T = r.dot(_), E = i.dot(_), D = Math.min(C, w), O = Math.max(C, w), k = Math.min(T, E), A = Math.max(T, E), j = O - D, M = A - k, N = Math.min(j, M), P = Math.min(O, A) - Math.max(D, k), F = P < 0 ? -P : 0, I = P > 0 ? P : 0, L = N > 0 ? I / N : 0, R = te(t, n, r, i), z = h <= s && x < c, ne;
424
- return z ? ne = L > .5 ? "collinear_overlap" : "collinear_gap" : h <= o && (ne = "parallel_offset"), {
425
- type: ne,
423
+ let _ = new e.Vector3().addVectors(f, p).normalize(), v = new e.Vector3().addVectors(t, n).multiplyScalar(.5), y = B(r, v, f), b = B(i, v, f), x = (y + b) / 2, S = Math.max(y, b), C = t.dot(_), w = n.dot(_), T = r.dot(_), E = i.dot(_), D = Math.min(C, w), O = Math.max(C, w), k = Math.min(T, E), A = Math.max(T, E), j = O - D, M = A - k, N = Math.min(j, M), P = Math.min(O, A) - Math.max(D, k), F = P < 0 ? -P : 0, I = P > 0 ? P : 0, L = N > 0 ? I / N : 0, R = ee(t, n, r, i), z = h <= s && x < c, te;
424
+ return z ? te = L > .5 ? "collinear_overlap" : "collinear_gap" : h <= o && (te = "parallel_offset"), {
425
+ type: te,
426
426
  angleDeg: g,
427
427
  avgPerpendicularDistance: x,
428
428
  maxPerpendicularDistance: S,
@@ -431,17 +431,17 @@ var N = class {
431
431
  closestDistance: R
432
432
  };
433
433
  };
434
- function ee(t, n, r) {
434
+ function B(t, n, r) {
435
435
  let i = new e.Vector3().subVectors(t, n), a = i.dot(r), o = r.clone().multiplyScalar(a);
436
436
  return new e.Vector3().subVectors(i, o).length();
437
437
  }
438
- function te(t, n, r, i) {
438
+ function ee(t, n, r, i) {
439
439
  let a = new e.Vector3().subVectors(n, t), o = new e.Vector3().subVectors(i, r), s = new e.Vector3().subVectors(r, t), c = a.dot(a), l = a.dot(o), u = o.dot(o), d = a.dot(s), f = o.dot(s), p = c * u - l * l, m, h;
440
440
  p < 1e-10 ? (m = 0, h = u === 0 ? 0 : f / u) : (m = (l * f - u * d) / p, h = (c * f - l * d) / p), m = e.MathUtils.clamp(m, 0, 1), h = u === 0 ? 0 : e.MathUtils.clamp((l * m + f) / u, 0, 1), m = c === 0 ? 0 : e.MathUtils.clamp((l * h - d) / c, 0, 1);
441
441
  let g = t.clone().add(a.clone().multiplyScalar(m)), _ = r.clone().add(o.clone().multiplyScalar(h));
442
442
  return g.distanceTo(_);
443
443
  }
444
- var ne = (t, n, r, i = .05, a = .02) => {
444
+ var te = (t, n, r, i = .05, a = .02) => {
445
445
  let [o, s, c, l] = t, u = new e.Vector3().subVectors(s, o), d = new e.Vector3().subVectors(l, o), f = new e.Vector3().crossVectors(u, d).normalize(), p = u.length(), m = d.length(), h = u.clone().normalize(), g = d.clone().normalize(), _ = r - i, v = r + i, y = new e.Vector3(), b = [], x = Math.ceil(p / a), S = Math.ceil(m / a), C = p / x, w = m / S, T = new Uint8Array(x * S);
446
446
  for (let t = 0; t < n.length; t++) {
447
447
  y.subVectors(n[t], o);
@@ -462,8 +462,8 @@ var ne = (t, n, r, i = .05, a = .02) => {
462
462
  quadArea: O,
463
463
  coveredArea: k
464
464
  };
465
- }, re = (e, t) => Math.round(Math.max(5, Math.min(350, t * Math.sqrt(e)))), ie = (t) => {
466
- let n = new e.Vector3(t.start.x, t.start.y, t.start.z), r = new e.Vector3(t.end.x, t.end.y, t.end.z), i = n.distanceTo(r), a = t.rooftopPz - t.start.z, o = re(i, 100), s = re(a, 70), c = a / s, l = /* @__PURE__ */ new Map();
465
+ }, ne = (e, t) => Math.round(Math.max(5, Math.min(350, t * Math.sqrt(e)))), re = (t) => {
466
+ let n = new e.Vector3(t.start.x, t.start.y, t.start.z), r = new e.Vector3(t.end.x, t.end.y, t.end.z), i = n.distanceTo(r), a = t.rooftopPz - t.start.z, o = ne(i, 100), s = ne(a, 70), c = a / s, l = /* @__PURE__ */ new Map();
467
467
  for (let e = 0; e < s; e++) l.set((e + 1) * c, {
468
468
  count: 0,
469
469
  minZ: Infinity,
@@ -490,7 +490,7 @@ var ne = (t, n, r, i = .05, a = .02) => {
490
490
  minZ: p,
491
491
  maxZ: m
492
492
  };
493
- }, ae = (t, n, r) => {
493
+ }, ie = (t, n, r) => {
494
494
  let i = new e.Plane(), a = new e.Vector3(t.x, t.y, t.z), o = new e.Vector3(n.x, n.y, n.z), s = new e.Vector3(n.x, n.y, n.z + 5);
495
495
  i.setFromCoplanarPoints(a, o, s);
496
496
  let c = [], l = [];
@@ -508,7 +508,7 @@ var ne = (t, n, r, i = .05, a = .02) => {
508
508
  newProjectPoints: h,
509
509
  newOnLinePoints: m
510
510
  };
511
- }, oe = (t) => {
511
+ }, ae = (t) => {
512
512
  function n(t, n, r, i, a, o, s, c, l) {
513
513
  let u = new e.Line3(t, n), d = /* @__PURE__ */ new Map(), f = new e.Vector3(), p = t.clone(), m = n.clone(), h = 0;
514
514
  for (;;) {
@@ -560,35 +560,35 @@ var ne = (t, n, r, i = .05, a = .02) => {
560
560
  o / 2;
561
561
  let b = l * u / (a * o);
562
562
  n(p, g, _, a, y, f, d, b, i), n(m, h, v, a, y, f, d, b, i), i.start = p, i.end = m;
563
- let { newOriginalPoints: x } = ae(p, m, i.originalPoints);
563
+ let { newOriginalPoints: x } = ie(p, m, i.originalPoints);
564
564
  i.originalPoints = x;
565
565
  }
566
- }, B = (t, n) => new e.Vector3(t.x, t.y, 0).distanceTo(new e.Vector3(n.x, n.y, 0)), se = (t, n, r = 1e-6) => {
566
+ }, V = (t, n) => new e.Vector3(t.x, t.y, 0).distanceTo(new e.Vector3(n.x, n.y, 0)), oe = (t, n, r = 1e-6) => {
567
567
  let i = new e.Vector3();
568
568
  return t.closestPointToPoint(n, !0, i), i.distanceTo(n) < r;
569
- }, ce = (e) => {
569
+ }, se = (e) => {
570
570
  let t = 0, n = [];
571
571
  for (let r = 0; r < e.length; r++) for (let i = r + 1; i < e.length; i++) {
572
572
  let a = e[r].distanceTo(e[i]);
573
573
  a > t && (t = a, n = [e[r], e[i]]);
574
574
  }
575
575
  return n;
576
- }, V = (e, t, n = .03) => Math.abs(e.x - t.x) < n && Math.abs(e.y - t.y) < n && Math.abs(e.z - t.z) < n, le = (e) => {
576
+ }, H = (e, t, n = .03) => Math.abs(e.x - t.x) < n && Math.abs(e.y - t.y) < n && Math.abs(e.z - t.z) < n, ce = (e) => {
577
577
  let t = [];
578
578
  e.children.forEach((e) => {
579
579
  e.type == "GridHelper" || e.type == "DirectionalLight" || e.type == "AmbientLight" || t.push(e);
580
580
  }), t.forEach((t) => {
581
- e.remove(t), de(t);
581
+ e.remove(t), ue(t);
582
582
  });
583
- }, ue = () => `#${Math.floor(Math.random() * 75 + 180).toString(16).padStart(2, "0")}${Math.floor(Math.random() * 75 + 180).toString(16).padStart(2, "0")}${Math.floor(Math.random() * 75 + 180).toString(16).padStart(2, "0")}`;
584
- function de(e) {
583
+ }, le = () => `#${Math.floor(Math.random() * 75 + 180).toString(16).padStart(2, "0")}${Math.floor(Math.random() * 75 + 180).toString(16).padStart(2, "0")}${Math.floor(Math.random() * 75 + 180).toString(16).padStart(2, "0")}`;
584
+ function ue(e) {
585
585
  for (; e.children && e.children.length > 0;) {
586
586
  let t = e.children[0];
587
- e.remove(t), de(t);
587
+ e.remove(t), ue(t);
588
588
  }
589
- e.geometry && e.geometry.dispose(), e.material && (Array.isArray(e.material) ? e.material.forEach((e) => fe(e)) : fe(e.material));
589
+ e.geometry && e.geometry.dispose(), e.material && (Array.isArray(e.material) ? e.material.forEach((e) => de(e)) : de(e.material));
590
590
  }
591
- function fe(e) {
591
+ function de(e) {
592
592
  for (let t of Object.keys(e)) {
593
593
  let n = e[t];
594
594
  n && typeof n == "object" && typeof n.dispose == "function" && n.dispose();
@@ -597,7 +597,7 @@ function fe(e) {
597
597
  }
598
598
  //#endregion
599
599
  //#region src/geometry/handleWallSegment.mjs
600
- var pe = class {
600
+ var fe = class {
601
601
  results;
602
602
  clusterResults;
603
603
  constructor() {
@@ -1029,12 +1029,12 @@ var pe = class {
1029
1029
  return console.error("合并网格时出错:", e), null;
1030
1030
  }
1031
1031
  }
1032
- }, me = (e) => {
1032
+ }, pe = (e) => {
1033
1033
  let t = {}, n = [], r = [], i = [];
1034
1034
  return e[0].width, e[0].height, e.forEach((e) => {
1035
1035
  r.push(...e.vertices), i.push(e.center), n.push(e.vertices);
1036
1036
  }), t.originalVertices = n, t.allCenterPoints = i, t;
1037
- }, he = (e) => {
1037
+ }, me = (e) => {
1038
1038
  let t = new d().copy(e.start).add(e.end).multiplyScalar(.5), n = new d().subVectors(new d(t.x, t.y, t.z + 1), t).normalize(), r = new d(e.direction.x, e.direction.y, 0);
1039
1039
  r.applyAxisAngle(n, Math.PI / 2);
1040
1040
  let i = new d().copy(t).add(r.clone().multiplyScalar(e.length)), a = new d().copy(t).sub(r.clone().multiplyScalar(e.length));
@@ -1044,7 +1044,7 @@ var pe = class {
1044
1044
  center: t,
1045
1045
  direction: r
1046
1046
  };
1047
- }, ge = (t, n, r = !0) => {
1047
+ }, he = (t, n, r = !0) => {
1048
1048
  let i = [];
1049
1049
  if (!t) return [];
1050
1050
  for (let a = 0; a < t.length; a++) {
@@ -1065,7 +1065,7 @@ var pe = class {
1065
1065
  wireframe: !1,
1066
1066
  transparent: !0,
1067
1067
  opacity: .5
1068
- }), g = new e.Group(), _ = new pe(), { horizontalSubdivisions: v, verticalSubdivisions: y } = _.initLimits4(p, m), b = _.createSubdividedWallPlane(o, y, v, h, g);
1068
+ }), g = new e.Group(), _ = new fe(), { horizontalSubdivisions: v, verticalSubdivisions: y } = _.initLimits4(p, m), b = _.createSubdividedWallPlane(o, y, v, h, g);
1069
1069
  _.analyzePointDistribution(b, f, .01);
1070
1070
  let x = new e.MeshBasicMaterial({
1071
1071
  color: "black",
@@ -1074,20 +1074,20 @@ var pe = class {
1074
1074
  side: e.DoubleSide
1075
1075
  }), S = _.highlightEmptySegments(b, x, g), C = [];
1076
1076
  for (let e of S.clusters) {
1077
- let t = me(e);
1077
+ let t = pe(e);
1078
1078
  t && C.push(t);
1079
1079
  }
1080
- let w = he(o).direction;
1080
+ let w = me(o).direction;
1081
1081
  o.checkResults = C, o.verticalDirection = w, o.originaIndex = a, i.push(o);
1082
1082
  }
1083
1083
  return i;
1084
- }, _e = (t, n) => {
1084
+ }, ge = (t, n) => {
1085
1085
  console.log("lines", t);
1086
1086
  for (let r = 0; r < t.length; r++) {
1087
1087
  let i = t[r], a = [];
1088
1088
  i.originalPoints.forEach((t) => {
1089
1089
  let n = new e.Vector3(t.x, t.y, 0), r = !1;
1090
- for (let e = 0; e < a.length; e++) if (V(n, a[e], .01)) {
1090
+ for (let e = 0; e < a.length; e++) if (H(n, a[e], .01)) {
1091
1091
  r = !0;
1092
1092
  break;
1093
1093
  }
@@ -1099,8 +1099,8 @@ var pe = class {
1099
1099
  let e = [];
1100
1100
  e.push(s.clone().addScaledVector(u, 1)), e.push(e[0].clone().addScaledVector(l, m)), e.push(e[1].clone().addScaledVector(d, 2)), e.push(s.clone().addScaledVector(d, m));
1101
1101
  let t = [];
1102
- for (let n = 0; n < a.length; n++) f.includes(n) || be(a[n], e) && (f.push(n), t.push(a[n]));
1103
- t.length > 0 && p.push(xe(t)), s = s.addScaledVector(l, m);
1102
+ for (let n = 0; n < a.length; n++) f.includes(n) || ye(a[n], e) && (f.push(n), t.push(a[n]));
1103
+ t.length > 0 && p.push(be(t)), s = s.addScaledVector(l, m);
1104
1104
  }
1105
1105
  let h = new Float32Array(a.length * 3);
1106
1106
  a.forEach((e, t) => {
@@ -1108,17 +1108,17 @@ var pe = class {
1108
1108
  });
1109
1109
  let g = new e.BufferGeometry();
1110
1110
  g.setAttribute("position", new e.BufferAttribute(h, 3)), g.rotateX(-Math.PI / 2), n.add(new e.Points(g, new e.PointsMaterial({
1111
- color: ue(),
1111
+ color: le(),
1112
1112
  size: .02
1113
1113
  })));
1114
- let [_, v] = Ee(p, {
1114
+ let [_, v] = Te(p, {
1115
1115
  plane: "xy",
1116
1116
  trimRatio: 0
1117
1117
  });
1118
1118
  D(_, v, n);
1119
1119
  }
1120
1120
  };
1121
- function ve(e, t = "xy") {
1121
+ function _e(e, t = "xy") {
1122
1122
  if (t === "xy") return {
1123
1123
  x: e.x,
1124
1124
  y: e.y
@@ -1133,30 +1133,30 @@ function ve(e, t = "xy") {
1133
1133
  };
1134
1134
  throw Error(`Unsupported plane: ${t}`);
1135
1135
  }
1136
- function ye(e, t, n) {
1136
+ function ve(e, t, n) {
1137
1137
  let r = t.x - e.x, i = t.y - e.y, a = n.x - e.x;
1138
1138
  return r * (n.y - e.y) - i * a;
1139
1139
  }
1140
- function be(e, t, n = "xy") {
1140
+ function ye(e, t, n = "xy") {
1141
1141
  if (!t || t.length !== 4) throw Error("rectPoints must contain 4 points");
1142
- let r = ve(e, n), i = t.map((e) => ve(e, n)), a = !1, o = !1;
1142
+ let r = _e(e, n), i = t.map((e) => _e(e, n)), a = !1, o = !1;
1143
1143
  for (let e = 0; e < 4; e++) {
1144
- let t = i[e], n = i[(e + 1) % 4], s = ye(t, n, r);
1144
+ let t = i[e], n = i[(e + 1) % 4], s = ve(t, n, r);
1145
1145
  if (s > 1e-9 && (a = !0), s < -1e-9 && (o = !0), a && o) return !1;
1146
1146
  }
1147
1147
  return !0;
1148
1148
  }
1149
- function xe(t) {
1149
+ function be(t) {
1150
1150
  if (!t || t.length === 0) return null;
1151
1151
  let n = new e.Vector3(0, 0, 0);
1152
1152
  for (let e of t) Array.isArray(e) ? (n.x += e[0], n.y += e[1], n.z += e[2]) : (n.x += e.x, n.y += e.y, n.z += e.z);
1153
1153
  return n.divideScalar(t.length), n;
1154
1154
  }
1155
- function Se(t) {
1155
+ function xe(t) {
1156
1156
  return t instanceof e.Vector3 ? t.clone() : Array.isArray(t) ? new e.Vector3(t[0], t[1], t[2]) : new e.Vector3(t.x, t.y, t.z);
1157
1157
  }
1158
- function Ce(e, t = "xy") {
1159
- let n = Se(e);
1158
+ function Se(e, t = "xy") {
1159
+ let n = xe(e);
1160
1160
  if (t === "xy") return {
1161
1161
  x: n.x,
1162
1162
  y: n.y,
@@ -1174,13 +1174,13 @@ function Ce(e, t = "xy") {
1174
1174
  };
1175
1175
  throw Error(`Unsupported plane: ${t}`);
1176
1176
  }
1177
- function we(t, n, r, i = "xy") {
1177
+ function Ce(t, n, r, i = "xy") {
1178
1178
  if (i === "xy") return new e.Vector3(t, n, r);
1179
1179
  if (i === "xz") return new e.Vector3(t, r, n);
1180
1180
  if (i === "yz") return new e.Vector3(r, t, n);
1181
1181
  throw Error(`Unsupported plane: ${i}`);
1182
1182
  }
1183
- function Te(e, t, n) {
1183
+ function we(e, t, n) {
1184
1184
  let r = 1e-12;
1185
1185
  if (Math.abs(t) < r) return e >= n ? {
1186
1186
  x: 1,
@@ -1198,10 +1198,10 @@ function Te(e, t, n) {
1198
1198
  y: l / u
1199
1199
  };
1200
1200
  }
1201
- function Ee(e, t = {}) {
1201
+ function Te(e, t = {}) {
1202
1202
  let { plane: n = "xy", trimRatio: r = 0 } = t;
1203
1203
  if (!e || e.length < 2) return null;
1204
- let i = e.map((e) => Ce(e, n)), a = 0, o = 0, s = 0;
1204
+ let i = e.map((e) => Se(e, n)), a = 0, o = 0, s = 0;
1205
1205
  for (let e of i) a += e.x, o += e.y, s += e.up;
1206
1206
  a /= i.length, o /= i.length, s /= i.length;
1207
1207
  let c = 0, l = 0, u = 0;
@@ -1210,7 +1210,7 @@ function Ee(e, t = {}) {
1210
1210
  c += t * t, l += t * n, u += n * n;
1211
1211
  }
1212
1212
  c /= i.length, l /= i.length, u /= i.length;
1213
- let d = Te(c, l, u), f = {
1213
+ let d = we(c, l, u), f = {
1214
1214
  x: -d.y,
1215
1215
  y: d.x
1216
1216
  }, p = [];
@@ -1232,12 +1232,12 @@ function Ee(e, t = {}) {
1232
1232
  let e = p.map((e) => e.up).sort((e, t) => e - t), t = Math.floor(e.length / 2);
1233
1233
  return e.length % 2 == 0 ? (e[t - 1] + e[t]) * .5 : e[t];
1234
1234
  })(), x = _.s, S = v.s, C = y, w = y, T = b, E = b, D = a + d.x * x + f.x * C, O = o + d.y * x + f.y * C, k = a + d.x * S + f.x * w, A = o + d.y * S + f.y * w;
1235
- return [we(D, O, T, n), we(k, A, E, n)];
1235
+ return [Ce(D, O, T, n), Ce(k, A, E, n)];
1236
1236
  }
1237
1237
  //#endregion
1238
1238
  //#region src/geometry/beamLine.mjs
1239
- var De = async (t, n, r, i) => {
1240
- le(i);
1239
+ var Ee = async (t, n, r, i) => {
1240
+ ce(i);
1241
1241
  let a = await fetch(t);
1242
1242
  if (!a) return;
1243
1243
  let o = await a.json(), s = new e.Group(), c = new e.Group(), l = new e.Group(), u = new e.Group(), d = new e.Group(), f = new e.Group(), p = new e.Group(), m = new e.Group();
@@ -1263,7 +1263,7 @@ var De = async (t, n, r, i) => {
1263
1263
  }
1264
1264
  }
1265
1265
  i.add(m), console.time();
1266
- let { beamGroup: x } = await Oe(o, _, y, i);
1266
+ let { beamGroup: x } = await De(o, _, y, i);
1267
1267
  console.timeEnd(), console.log("beamGroup", x);
1268
1268
  let S = new e.MeshBasicMaterial({
1269
1269
  color: "#cffd00",
@@ -1331,7 +1331,7 @@ var De = async (t, n, r, i) => {
1331
1331
  });
1332
1332
  let r = new e.BufferGeometry();
1333
1333
  r.setAttribute("position", new e.BufferAttribute(n, 3)), r.rotateX(-Math.PI / 2), c.add(new e.Points(r, new e.PointsMaterial({
1334
- color: ue(),
1334
+ color: le(),
1335
1335
  size: .02
1336
1336
  })));
1337
1337
  let i = [];
@@ -1420,8 +1420,8 @@ var De = async (t, n, r, i) => {
1420
1420
  beamDoorGroup: p,
1421
1421
  lineIndexGroup: m
1422
1422
  };
1423
- }, Oe = async (t, n, r, i) => {
1424
- if (oe(t, i), t.length <= 0 || n.length <= 0) return t;
1423
+ }, De = async (t, n, r, i) => {
1424
+ if (ae(t, i), t.length <= 0 || n.length <= 0) return t;
1425
1425
  r ||= [];
1426
1426
  for (let n of t) {
1427
1427
  let t = [];
@@ -1559,170 +1559,137 @@ var De = async (t, n, r, i) => {
1559
1559
  a.doorAndBeamData = [], a.completePointAreaPercentage = -1;
1560
1560
  let o = new e.Box3();
1561
1561
  o.setFromPoints(a.originalPoints);
1562
- let m = o.max.z, h = o.min.z, g = new e.Vector3(a.start.x, a.start.y, a.start.z), _ = new e.Vector3(a.end.x, a.end.y, a.end.z), v = a.rooftopPz - a.start.z, y = 0;
1562
+ let m = o.max.z;
1563
+ o.min.z;
1564
+ let h = new e.Vector3(a.start.x, a.start.y, a.start.z), g = new e.Vector3(a.end.x, a.end.y, a.end.z), _ = a.rooftopPz - a.start.z, v = 0;
1563
1565
  for (let o of a.mergeCheckRegion) {
1564
- let { facePoints: b, boxArea: x, totalInPlaneNum: S } = F(o.points, o.gridWidth, o.gridHeight, o.centerPts);
1565
- if (!b || b.length <= 0) continue;
1566
- b[0].distanceTo(b[1]);
1567
- let C = b[0].distanceTo(b[3]), w = o.gridHeight * (C / o.gridHeight / 3 * 2) + o.gridHeight / 2, T = new e.Vector3(b[0].x, b[0].y, b[0].z + w), E = new e.Vector3(b[1].x, b[1].y, b[1].z + w), D = new e.Line3(T, E), k = [], A = new e.Vector3();
1566
+ let { facePoints: y, boxArea: b, totalInPlaneNum: x } = F(o.points, o.gridWidth, o.gridHeight, o.centerPts);
1567
+ if (!y || y.length <= 0) continue;
1568
+ y[0].distanceTo(y[1]);
1569
+ let S = y[0].distanceTo(y[3]), C = o.gridHeight * (S / o.gridHeight / 3 * 2) + o.gridHeight / 2, w = new e.Vector3(y[0].x, y[0].y, y[0].z + C), T = new e.Vector3(y[1].x, y[1].y, y[1].z + C), E = new e.Line3(w, T), D = [], k = new e.Vector3();
1568
1570
  o.points.forEach((e) => {
1569
- D.closestPointToPoint(e, !0, A).distanceTo(e) < o.gridHeight + .01 && k.push(e);
1571
+ E.closestPointToPoint(e, !0, k).distanceTo(e) < o.gridHeight + .01 && D.push(e);
1570
1572
  });
1571
- let M = [], N = [];
1573
+ let A = [], M = [];
1572
1574
  for (;;) {
1573
1575
  let e = [];
1574
- for (let t = 0; t < k.length; t++) N.includes(t) || e.length == 0 && (e.push(k[t]), N.push(t));
1575
- for (let t = 0; t < k.length; t++) if (!N.includes(t)) {
1576
- for (let n = 0; n < e.length; n++) if (k[t].distanceTo(e[n]) < o.gridWidth + .01) {
1577
- e.push(k[t]), N.push(t), t = -1;
1576
+ for (let t = 0; t < D.length; t++) M.includes(t) || e.length == 0 && (e.push(D[t]), M.push(t));
1577
+ for (let t = 0; t < D.length; t++) if (!M.includes(t)) {
1578
+ for (let n = 0; n < e.length; n++) if (D[t].distanceTo(e[n]) < o.gridWidth + .01) {
1579
+ e.push(D[t]), M.push(t), t = -1;
1578
1580
  break;
1579
1581
  }
1580
1582
  }
1581
1583
  if (e.length == 0) break;
1582
- M.push(e);
1584
+ A.push(e);
1583
1585
  }
1584
- let P = [];
1585
- for (let t = 0; t < M.length; t++) {
1586
+ let N = [];
1587
+ for (let t = 0; t < A.length; t++) {
1586
1588
  let n = {
1587
1589
  lineSt: new e.Vector3(),
1588
1590
  lineEd: new e.Vector3(),
1589
1591
  facePoints: []
1590
- }, r = ce(M[t]);
1591
- Array.isArray(r) && r.length == 2 && (n.lineSt = r[0], n.lineEd = r[1], n.facePoints.push(new e.Vector3(r[0].x, r[0].y, b[0].z)), n.facePoints.push(new e.Vector3(r[1].x, r[1].y, b[0].z)), n.facePoints.push(new e.Vector3(r[1].x, r[1].y, b[2].z)), n.facePoints.push(new e.Vector3(r[0].x, r[0].y, b[2].z)), P.push(n));
1592
+ }, r = se(A[t]);
1593
+ Array.isArray(r) && r.length == 2 && (n.lineSt = r[0], n.lineEd = r[1], n.facePoints.push(new e.Vector3(r[0].x, r[0].y, y[0].z)), n.facePoints.push(new e.Vector3(r[1].x, r[1].y, y[0].z)), n.facePoints.push(new e.Vector3(r[1].x, r[1].y, y[2].z)), n.facePoints.push(new e.Vector3(r[0].x, r[0].y, y[2].z)), N.push(n));
1592
1594
  }
1593
- y += o.area;
1594
- let ee = 0;
1595
- if (S != 0 && (ee = o.gridHeight * o.gridWidth * S), (o.area - ee) / x * 100 > 70 && P.length == 1 || P.length > 1) for (let y = 0; y < P.length; y++) {
1596
- let b = P[y], x = b.facePoints[0].distanceTo(b.facePoints[1]), S = b.facePoints[0].distanceTo(b.facePoints[3]), C = x / a.length * 100, w = a.rooftopPz - b.facePoints[2].z;
1597
- if (S < 1.5 || m < b.facePoints[2].z || w > v / 3 * 2) continue;
1598
- let T = !1, E = !1, D = !1, k = [], A = b.facePoints[2].clone(), M = b.facePoints[3].clone(), N = b.facePoints[0].clone(), F = b.facePoints[1].clone(), ee = !1, te = -1;
1599
- if (Math.abs(b.facePoints[0].z - a.start.z) < .25) {
1600
- if (x > .17 && a.length > .5) {
1601
- let n = B(g, N), r = B(g, F), o = B(_, N), s = B(_, F), c = .1;
1595
+ v += o.area;
1596
+ let P = 0;
1597
+ if (x != 0 && (P = o.gridHeight * o.gridWidth * x), (o.area - P) / b * 100 > 70 && N.length == 1 || N.length > 1) for (let v = 0; v < N.length; v++) {
1598
+ let y = N[v], b = y.facePoints[0].distanceTo(y.facePoints[1]), x = y.facePoints[0].distanceTo(y.facePoints[3]), S = b / a.length * 100, C = a.rooftopPz - y.facePoints[2].z;
1599
+ if (x < 1.5 || m < y.facePoints[2].z || C > _ / 3 * 2) continue;
1600
+ let w = !1, T = !1, E = !1, D = [], k = y.facePoints[2].clone(), A = y.facePoints[3].clone(), M = y.facePoints[0].clone(), P = y.facePoints[1].clone(), F = !1, B = -1;
1601
+ if (Math.abs(y.facePoints[0].z - a.start.z) < .25) {
1602
+ if (b > .17 && a.length > .5) {
1603
+ let n = V(h, M), r = V(h, P), o = V(g, M), s = V(g, P), c = .1;
1602
1604
  if (n < c || r < c) {
1603
- let { newOriginalPoints: r } = ae(N, F, a.originalPoints), o = [], s = [];
1605
+ let { newOriginalPoints: r } = ie(M, P, a.originalPoints), o = [], s = [];
1604
1606
  if (r.forEach((e) => {
1605
- e.z >= A.z ? o.push(e) : e.z <= N.z && s.push(e);
1607
+ e.z >= k.z ? o.push(e) : e.z <= M.z && s.push(e);
1606
1608
  }), o.length > 10) {
1607
- let r = new e.Vector3(a.start.x, a.start.y, 0), o = new e.Vector3(a.end.x, a.end.y, 0), s = new e.Vector3().subVectors(r, o).normalize(), l = new e.Vector3(), u = Infinity, d = -1, f = !1;
1609
+ let r = new e.Vector3(a.start.x, a.start.y, 0), o = new e.Vector3(a.end.x, a.end.y, 0), s = new e.Vector3().subVectors(r, o).normalize(), l = new e.Vector3(), u = Infinity, d = -1, f = !1, p = !1;
1608
1610
  for (let n = 0; n < t.length; n++) {
1609
1611
  if (n == i) continue;
1610
- let a = new e.Vector3(t[n].start.x, t[n].start.y, 0), c = new e.Vector3(t[n].end.x, t[n].end.y, 0), p = O(r, o, a, c), m = L(r, o, a, c);
1611
- if (p != null) {
1612
- if (m && m.angle > 85) {
1613
- let e = p.point.distanceTo(r);
1614
- if (p.point.distanceTo(o), e < .3) {
1615
- u = Infinity, d = -1;
1612
+ let a = new e.Vector3(t[n].start.x, t[n].start.y, 0), c = new e.Vector3(t[n].end.x, t[n].end.y, 0), m = O(r, o, a, c), h = L(r, o, a, c);
1613
+ if (m != null) {
1614
+ if (h && h.angle > 85) {
1615
+ let e = m.point.distanceTo(r);
1616
+ if (m.point.distanceTo(o), e < .3) {
1617
+ p = !0, u = Infinity, d = -1;
1616
1618
  break;
1617
1619
  }
1618
1620
  }
1619
1621
  continue;
1620
1622
  }
1621
- if (m && m.angle > 85) {
1623
+ if (h && h.angle > 85) {
1622
1624
  let t = I(r, o, new e.Line3(a, c).closestPointToPoint(r, !0, l), r);
1623
1625
  if (!t || t.direction != "same") continue;
1624
1626
  let i = r.clone().addScaledVector(s, 10), f = o.clone().addScaledVector(s.clone().negate(), 10), p = new e.Vector3().subVectors(c, a).normalize(), m = O(i, f, a.clone().addScaledVector(p.clone().negate(), .03), c.clone().addScaledVector(p, .03));
1625
1627
  if (m == null) continue;
1626
1628
  let h = r.distanceTo(m.point);
1627
1629
  h < u && (u = h, d = n);
1628
- } else if (m && m.angle < 5) {
1629
- let t = new e.Vector3(N.x, N.y, 0), n = new e.Vector3(F.x, F.y, 0), r = B(t, a), i = B(t, c), o = B(n, a), s = B(n, c);
1630
+ } else if (h && h.angle < 5) {
1631
+ let t = new e.Vector3(M.x, M.y, 0), n = new e.Vector3(P.x, P.y, 0), r = V(t, a), i = V(t, c), o = V(n, a), s = V(n, c);
1630
1632
  if (r < .08 || i < .08 || o < .08 || s < .08) {
1631
1633
  f = !0, u = Infinity, d = -1;
1632
1634
  break;
1633
1635
  }
1634
1636
  }
1635
1637
  }
1636
- if (u != Infinity && u < 2 && a.length - x > .5) t[d].length > .25 && x + u > .5 && (ee = !0, n < c ? (M = M.addScaledVector(s, u), N = N.addScaledVector(s, u)) : (A = A.addScaledVector(s, u), F = F.addScaledVector(s, u)));
1637
- else if (!f) {
1638
- let r = .05, a = g.clone().addScaledVector(s, r), o = g.clone().addScaledVector(s.clone().negate(), r);
1639
- a.z = o.z = 0;
1640
- let l = !1;
1641
- for (let n = 0; n < t.length; n++) {
1642
- if (n == i) continue;
1643
- let s = new e.Vector3(t[n].start.x, t[n].start.y, 0), c = new e.Vector3(t[n].end.x, t[n].end.y, 0), d = new e.Vector3().subVectors(c, s).normalize();
1644
- s = s.clone().addScaledVector(d.clone().negate(), r), c = c.clone().addScaledVector(d, r);
1645
- let f = O(a, o, s, c);
1646
- if (f) {
1647
- f.point.z = g.z;
1648
- let e = f.point.distanceTo(g);
1649
- if (f.point.distanceTo(_) < e) continue;
1650
- u > e && (u = e), l = !0;
1651
- }
1652
- }
1653
- if (!l) continue;
1654
- u != Infinity && u < 2 && (n < c ? (M = M.addScaledVector(s.clone().negate(), u), N = N.addScaledVector(s.clone().negate(), u)) : (A = A.addScaledVector(s.clone().negate(), u), F = F.addScaledVector(s.clone().negate(), u)));
1655
- }
1638
+ if (u != Infinity && u < 2 && a.length - b > .5 && u < b * 3) t[d].length > .25 && b + u > .5 && (F = !0, n < c ? (A = A.addScaledVector(s, u), M = M.addScaledVector(s, u)) : (k = k.addScaledVector(s, u), P = P.addScaledVector(s, u)));
1639
+ else if (!f && !p) continue;
1656
1640
  } else continue;
1657
- } else if (o < c || s < c) {
1658
- let { newOriginalPoints: n } = ae(N, F, a.originalPoints), r = [], s = [];
1641
+ }
1642
+ if (o < c || s < c) {
1643
+ let { newOriginalPoints: n } = ie(M, P, a.originalPoints), r = [], s = [];
1659
1644
  if (n.forEach((e) => {
1660
- e.z >= A.z ? r.push(e) : e.z <= N.z && s.push(e);
1645
+ e.z >= k.z ? r.push(e) : e.z <= M.z && s.push(e);
1661
1646
  }), r.length > 10) {
1662
- let n = new e.Vector3(a.start.x, a.start.y, 0), r = new e.Vector3(a.end.x, a.end.y, 0), s = new e.Vector3().subVectors(r, n).normalize(), l = new e.Vector3(), u = Infinity, d = -1, f = !1;
1647
+ let n = new e.Vector3(a.start.x, a.start.y, 0), r = new e.Vector3(a.end.x, a.end.y, 0), s = new e.Vector3().subVectors(r, n).normalize(), l = new e.Vector3(), u = Infinity, d = -1, f = !1, p = !1;
1663
1648
  for (let a = 0; a < t.length; a++) {
1664
1649
  if (a == i) continue;
1665
- let o = new e.Vector3(t[a].start.x, t[a].start.y, 0), c = new e.Vector3(t[a].end.x, t[a].end.y, 0), p = O(n, r, o, c), m = L(n, r, o, c);
1666
- if (p != null) {
1667
- if (m && m.angle > 85 && (p.point.distanceTo(n), p.point.distanceTo(r) < .3)) {
1668
- u = Infinity, d = -1;
1650
+ let o = new e.Vector3(t[a].start.x, t[a].start.y, 0), c = new e.Vector3(t[a].end.x, t[a].end.y, 0), m = O(n, r, o, c), h = L(n, r, o, c);
1651
+ if (m != null) {
1652
+ if (h && h.angle > 85 && (m.point.distanceTo(n), m.point.distanceTo(r) < .3)) {
1653
+ p = !0, u = Infinity, d = -1;
1669
1654
  break;
1670
1655
  }
1671
1656
  continue;
1672
1657
  }
1673
- if (m && m.angle > 85) {
1658
+ if (h && h.angle > 85) {
1674
1659
  let t = I(r, n, new e.Line3(o, c).closestPointToPoint(r, !0, l), r);
1675
1660
  if (!t || t.direction != "same") continue;
1676
1661
  let i = n.clone().addScaledVector(s.clone().negate(), 10), f = r.clone().addScaledVector(s, 10), p = new e.Vector3().subVectors(c, o).normalize(), m = O(i, f, o.clone().addScaledVector(p.clone().negate(), .03), c.clone().addScaledVector(p, .03));
1677
1662
  if (m == null) continue;
1678
1663
  let h = r.distanceTo(m.point);
1679
1664
  h < u && (u = h, d = a);
1680
- } else if (m && m.angle < 5) {
1681
- let t = new e.Vector3(N.x, N.y, 0), n = new e.Vector3(F.x, F.y, 0), r = B(t, o), i = B(t, c), a = B(n, o), s = B(n, c);
1665
+ } else if (h && h.angle < 5) {
1666
+ let t = new e.Vector3(M.x, M.y, 0), n = new e.Vector3(P.x, P.y, 0), r = V(t, o), i = V(t, c), a = V(n, o), s = V(n, c);
1682
1667
  if (r < .08 || i < .08 || a < .08 || s < .08) {
1683
1668
  f = !0, u = Infinity, d = -1;
1684
1669
  break;
1685
1670
  }
1686
1671
  }
1687
1672
  }
1688
- if (u != Infinity && u < 2 && a.length - x > .5) t[d].length > .25 && x + u > .5 && (ee = !0, o < c ? (M = M.addScaledVector(s, u), N = N.addScaledVector(s, u)) : (A = A.addScaledVector(s, u), F = F.addScaledVector(s, u)));
1689
- else if (!f) {
1690
- let n = .05, r = _.clone().addScaledVector(s, n), a = g.clone();
1691
- r.z = a.z = 0;
1692
- let l = !1;
1693
- for (let o = 0; o < t.length; o++) {
1694
- if (o == i) continue;
1695
- let s = new e.Vector3(t[o].start.x, t[o].start.y, 0), c = new e.Vector3(t[o].end.x, t[o].end.y, 0), d = new e.Vector3().subVectors(c, s).normalize();
1696
- s = s.clone().addScaledVector(d.clone().negate(), n), c = c.clone().addScaledVector(d, n);
1697
- let f = O(r, a, s, c);
1698
- if (f) {
1699
- f.point.z = _.z;
1700
- let e = f.point.distanceTo(_);
1701
- if (f.point.distanceTo(g) < e) continue;
1702
- u > e && (u = e), l = !0;
1703
- }
1704
- }
1705
- if (!l) continue;
1706
- u != Infinity && u < 2 && (o < c ? (M = M.addScaledVector(s.clone().negate(), u), N = N.addScaledVector(s.clone().negate(), u)) : (A = A.addScaledVector(s.clone().negate(), u), F = F.addScaledVector(s.clone().negate(), u)));
1707
- }
1673
+ if (u != Infinity && u < 2 && a.length - b > .5 && u < b * 3) t[d].length > .25 && b + u > .5 && (F = !0, o < c ? (A = A.addScaledVector(s, u), M = M.addScaledVector(s, u)) : (k = k.addScaledVector(s, u), P = P.addScaledVector(s, u)));
1674
+ else if (!f && !p) continue;
1708
1675
  } else continue;
1709
1676
  }
1710
- x = M.distanceTo(A);
1677
+ b = A.distanceTo(k);
1711
1678
  }
1712
- if (C < 85 && x > .31 || x > .7 && S > v - v / 3) {
1679
+ if (S < 85 && b > .3 || b > .7 && x > _ - _ / 3) {
1713
1680
  let t = !1;
1714
1681
  for (let r = 0; r < n.length; r++) {
1715
1682
  let i = r + 1;
1716
1683
  if (i >= n.length) continue;
1717
1684
  let a = new e.Vector3(n[r].x, n[r].y, n[r].z), o = new e.Vector3(n[i].x, n[i].y, n[i].z);
1718
- if (O(new e.Vector3(a.x, a.y, 0), new e.Vector3(o.x, o.y, 0), new e.Vector3(b.facePoints[0].x, b.facePoints[0].y, 0), new e.Vector3(b.facePoints[1].x, b.facePoints[1].y, 0), .1) != null) {
1685
+ if (O(new e.Vector3(a.x, a.y, 0), new e.Vector3(o.x, o.y, 0), new e.Vector3(y.facePoints[0].x, y.facePoints[0].y, 0), new e.Vector3(y.facePoints[1].x, y.facePoints[1].y, 0), .1) != null) {
1719
1686
  t = !0;
1720
1687
  break;
1721
1688
  }
1722
1689
  }
1723
1690
  for (let t = 0; t < s.length; t++) {
1724
- let n = new e.Vector3(s[t].doorStartPt.x, s[t].doorStartPt.y, 0), i = new e.Vector3(s[t].doorEndPt.x, s[t].doorEndPt.y, 0), o = new e.Vector3(b.facePoints[0].x, b.facePoints[0].y, 0), c = new e.Vector3(b.facePoints[1].x, b.facePoints[1].y, 0), l = b.facePoints[2].z < s[t].maxZ || Math.abs(b.facePoints[2].z - s[t].maxZ) < .3;
1725
- if (Math.abs(b.facePoints[2].z - s[t].maxZ), l) {
1691
+ let n = new e.Vector3(s[t].doorStartPt.x, s[t].doorStartPt.y, 0), i = new e.Vector3(s[t].doorEndPt.x, s[t].doorEndPt.y, 0), o = new e.Vector3(y.facePoints[0].x, y.facePoints[0].y, 0), c = new e.Vector3(y.facePoints[1].x, y.facePoints[1].y, 0), l = y.facePoints[2].z < s[t].maxZ || Math.abs(y.facePoints[2].z - s[t].maxZ) < .3;
1692
+ if (Math.abs(y.facePoints[2].z - s[t].maxZ), l) {
1726
1693
  let l = z(n.clone(), i.clone(), o.clone(), c.clone(), { distanceThreshold: 2 });
1727
1694
  if (l && l.type == "collinear_gap") {
1728
1695
  let u = R(n, i), d = new e.Line3(new e.Vector3(a.start.x, a.start.y, 0), new e.Vector3(a.end.x, a.end.y, 0)), f = new e.Vector3(), p = d.closestPointToPoint(u, !0, f);
@@ -1732,169 +1699,173 @@ var De = async (t, n, r, i) => {
1732
1699
  let e = o.distanceTo(i), t = c.distanceTo(i);
1733
1700
  if (e > .2 && t > .2) continue;
1734
1701
  }
1735
- E = !0, D = !0, k.push(s[t].index), s[t].isFind = !0, te = t, r[s[t].index].isFindBeam = !0;
1702
+ T = !0, E = !0, D.push(s[t].index), s[t].isFind = !0, B = t, r[s[t].index].isFindBeam = !0;
1736
1703
  let d = new e.Vector3().subVectors(o, c).normalize(), f = n.distanceTo(i) - l.overlap;
1737
- u < a && d.negate(), a > u ? (A = b.facePoints[2].clone().addScaledVector(d, f), M = b.facePoints[3].clone(), N = M.clone(), F = A.clone(), N.z = F.z = b.facePoints[0].z) : (A = b.facePoints[2].clone(), M = b.facePoints[3].clone().addScaledVector(d, f), N = M.clone(), F = A.clone(), N.z = F.z = b.facePoints[0].z);
1704
+ u < a && d.negate(), a > u ? (k = y.facePoints[2].clone().addScaledVector(d, f), A = y.facePoints[3].clone(), M = A.clone(), P = k.clone(), M.z = P.z = y.facePoints[0].z) : (k = y.facePoints[2].clone(), A = y.facePoints[3].clone().addScaledVector(d, f), M = A.clone(), P = k.clone(), M.z = P.z = y.facePoints[0].z);
1738
1705
  }
1739
1706
  } else if (l && l.type == "collinear_overlap" && l.maxPerpendicularDistance < .35) {
1740
1707
  let a = o.distanceTo(c), u = i.distanceTo(n);
1741
1708
  if (Math.abs(a - l.overlap) < .25 || Math.abs(u - l.overlap) < .25) {
1742
1709
  if (u > a && Math.abs(u - l.overlap) > 1) {
1743
1710
  let t = o.distanceTo(n), r = o.distanceTo(i), a = c.distanceTo(n), s = c.distanceTo(i), d = t < r ? t : r, f = a < s ? a : s, p = new e.Vector3().subVectors(o, c).normalize(), m = u - l.overlap;
1744
- d < f ? (p.negate(), A = b.facePoints[2].clone().addScaledVector(p, m), M = b.facePoints[3].clone(), N = M.clone(), F = A.clone(), N.z = F.z = b.facePoints[0].z) : (A = b.facePoints[2].clone(), M = b.facePoints[3].clone().addScaledVector(p, m), N = M.clone(), F = A.clone(), N.z = F.z = b.facePoints[0].z);
1711
+ d < f ? (p.negate(), k = y.facePoints[2].clone().addScaledVector(p, m), A = y.facePoints[3].clone(), M = A.clone(), P = k.clone(), M.z = P.z = y.facePoints[0].z) : (k = y.facePoints[2].clone(), A = y.facePoints[3].clone().addScaledVector(p, m), M = A.clone(), P = k.clone(), M.z = P.z = y.facePoints[0].z);
1745
1712
  }
1746
- E = !0, D = !0, k.push(s[t].index), s[t].isFind = !0, r[s[t].index].isFindBeam = !0, te = t;
1713
+ T = !0, E = !0, D.push(s[t].index), s[t].isFind = !0, r[s[t].index].isFindBeam = !0, B = t;
1747
1714
  }
1748
1715
  }
1749
1716
  }
1750
1717
  }
1751
- if (!D) for (let t = 0; t < s.length; t++) {
1718
+ if (!E) for (let t = 0; t < s.length; t++) {
1752
1719
  if (s[t].inWall) continue;
1753
- let n = new e.Vector3(s[t].doorStartPt.x, s[t].doorStartPt.y, 0), i = new e.Vector3(s[t].doorEndPt.x, s[t].doorEndPt.y, 0), a = new e.Vector3(b.facePoints[0].x, b.facePoints[0].y, 0), o = new e.Vector3(b.facePoints[1].x, b.facePoints[1].y, 0), c = new e.Vector3().subVectors(n, i).normalize(), l = new e.Vector3().subVectors(a, o).normalize(), u = .25, d = O(n.clone().addScaledVector(c, u), i.clone().addScaledVector(c.clone().negate(), u), a.clone().addScaledVector(l, u), o.clone().addScaledVector(l.clone().negate(), u)), f = n.distanceTo(a), m = n.distanceTo(o), h = i.distanceTo(a), g = i.distanceTo(o);
1754
- (f < p || m < p || h < p || g < p || d) && (r[s[t].index].isFindBeam = !0, E = !0, s[t].isFind = !0, te = t);
1720
+ let n = new e.Vector3(s[t].doorStartPt.x, s[t].doorStartPt.y, 0), i = new e.Vector3(s[t].doorEndPt.x, s[t].doorEndPt.y, 0), a = new e.Vector3(y.facePoints[0].x, y.facePoints[0].y, 0), o = new e.Vector3(y.facePoints[1].x, y.facePoints[1].y, 0), c = new e.Vector3().subVectors(n, i).normalize(), l = new e.Vector3().subVectors(a, o).normalize(), u = .25, d = O(n.clone().addScaledVector(c, u), i.clone().addScaledVector(c.clone().negate(), u), a.clone().addScaledVector(l, u), o.clone().addScaledVector(l.clone().negate(), u)), f = n.distanceTo(a), m = n.distanceTo(o), h = i.distanceTo(a), g = i.distanceTo(o);
1721
+ (f < p || m < p || h < p || g < p || d) && (r[s[t].index].isFindBeam = !0, T = !0, s[t].isFind = !0, B = t);
1755
1722
  }
1756
- (E || t || Math.abs(S - v) > .1 && S > v / 2 && x > .3 && Math.abs(h - a.start.z) < .4) && (T = !0);
1723
+ (T || t || Math.abs(x - _) > .1 && x > _ / 2 && b > .3) && (w = !0);
1757
1724
  }
1758
1725
  }
1759
- if (T) {
1726
+ if (w) {
1760
1727
  let n = !1;
1761
1728
  for (let e = 0; e < d.length; e++) {
1762
- let t = z(d[e].start, d[e].end, N, F);
1729
+ let t = z(d[e].start, d[e].end, M, P);
1763
1730
  if (t && t.type == "collinear_overlap" && t.maxPerpendicularDistance < .01) {
1764
1731
  n = !0;
1765
1732
  break;
1766
1733
  }
1767
1734
  }
1768
1735
  if (n) {
1769
- te != -1 && (r[s[te].index].isFindBeam = !1, s[te].isFind = !1);
1736
+ B != -1 && (r[s[B].index].isFindBeam = !1, s[B].isFind = !1);
1770
1737
  continue;
1771
1738
  }
1772
1739
  d.push({
1773
- start: N,
1774
- end: F
1740
+ start: M,
1741
+ end: P
1775
1742
  });
1776
1743
  {
1777
1744
  new e.PointsMaterial({
1778
1745
  color: 65535,
1779
1746
  size: .01
1780
1747
  });
1781
- let t = new e.Vector3().subVectors(N, F), n = new e.Vector3().subVectors(F, N), r = Infinity, i = Infinity, o = N.clone(), s = F.clone(), c = [], l = [], u = new e.Line3(A, M), d = new e.Vector3(), f = 999999;
1748
+ let t = new e.Vector3().subVectors(M, P), n = new e.Vector3().subVectors(P, M), r = Infinity, i = Infinity, o = M.clone(), s = P.clone(), c = [], l = [], u = new e.Line3(k, A), d = new e.Vector3(), f = 999999;
1782
1749
  if (a.originalPoints.forEach((r) => {
1783
- if (r.z - N.z < S / 2 + .1 && r.z - N.z > S / 2 - .1 && c.push(r), r.z > A.z) {
1784
- let i = u.closestPointToPoint(r, !0, d), a = new e.Vector3().subVectors(i, A), o = j(t, new e.Vector3().subVectors(i, M)), s = j(n, a);
1750
+ if (r.z - M.z < x / 2 + .1 && r.z - M.z > x / 2 - .1 && c.push(r), r.z > k.z) {
1751
+ let i = u.closestPointToPoint(r, !0, d), a = new e.Vector3().subVectors(i, k), o = j(t, new e.Vector3().subVectors(i, A)), s = j(n, a);
1785
1752
  o && o.parallel && !o.sameDirection && s && s.parallel && !s.sameDirection && l.push(r);
1786
1753
  }
1787
1754
  }), c.length > 0) {
1788
- let { newProjectPoints: a } = ae(N, F, c);
1789
- for (let e of a) e.z = N.z;
1755
+ let { newProjectPoints: a } = ie(M, P, c);
1756
+ for (let e of a) e.z = M.z;
1790
1757
  a.forEach((a) => {
1791
- let c = new e.Vector3(a.x, a.y, N.z), l = new e.Vector3().subVectors(c, F), u = j(t, new e.Vector3().subVectors(c, N)), d = j(n, l);
1758
+ let c = new e.Vector3(a.x, a.y, M.z), l = new e.Vector3().subVectors(c, P), u = j(t, new e.Vector3().subVectors(c, M)), d = j(n, l);
1792
1759
  if (u && u.parallel && u.sameDirection) {
1793
- let e = c.distanceTo(N);
1760
+ let e = c.distanceTo(M);
1794
1761
  e < r && (r = e, o = c);
1795
1762
  } else if (d && d.parallel && d.sameDirection) {
1796
- let e = c.distanceTo(F);
1763
+ let e = c.distanceTo(P);
1797
1764
  e < i && (i = e, s = c);
1798
1765
  }
1799
1766
  });
1800
1767
  }
1801
- if (o.equals(N) || (N = o, M = new e.Vector3(N.x, N.y, M.z)), s.equals(F) || (F = s, A = new e.Vector3(F.x, F.y, A.z)), l.length > 10) {
1802
- let { newOnLinePoints: e } = ae(M, A, l);
1768
+ if (o.equals(M) || (M = o, A = new e.Vector3(M.x, M.y, A.z)), s.equals(P) || (P = s, k = new e.Vector3(P.x, P.y, k.z)), l.length > 10) {
1769
+ let { newOnLinePoints: e } = ie(A, k, l);
1803
1770
  for (let t = 0; t < e.length; t++) {
1804
1771
  let n = u.closestPointToPoint(e[t], !0, d).distanceTo(e[t]);
1805
1772
  n > .02 && f > n && (f = n);
1806
1773
  }
1807
- A.z += f, M.z += f, S += f;
1774
+ k.z += f, A.z += f, x += f;
1808
1775
  }
1809
1776
  }
1810
- let p = F.distanceTo(N);
1811
- if (p < .4 && !E || p < .3 && E) continue;
1777
+ let p = P.distanceTo(M);
1778
+ if (p < .4 && !T || p < .3 && T) continue;
1812
1779
  u.includes(i) || u.push(i), a.checkResults[o.index].isDoor = !0;
1813
1780
  let m = "", h = {
1814
1781
  id: c,
1815
- beamStart: A,
1816
- beamEnd: M,
1817
- beamHeight: a.rooftopPz - A.z,
1818
- doorStart: N,
1819
- doorEnd: F,
1820
- doorHeight: S,
1782
+ beamStart: k,
1783
+ beamEnd: A,
1784
+ beamHeight: a.rooftopPz - k.z,
1785
+ doorStart: M,
1786
+ doorEnd: P,
1787
+ doorHeight: x,
1821
1788
  nearId: -1,
1822
1789
  type: m,
1823
- isExtend: ee,
1824
- isDoor: E,
1825
- isPullOutDoor: D,
1826
- pcbDoorIndexs: k
1827
- }, g = !1, _ = new e.Vector3(), v = new e.Vector3(), y = -1;
1790
+ isExtend: F,
1791
+ isDoor: T,
1792
+ isPullOutDoor: E,
1793
+ pcbDoorIndexs: D
1794
+ }, g = !1, _ = new e.Vector3(), v = new e.Vector3(), y = -1, S = -1, C = -1;
1828
1795
  for (let n = 0; n < l.length; n++) {
1829
1796
  let r = t[l[n].linesIndex].doorAndBeamData[l[n].doorIndex];
1830
1797
  if (r.nearId != -1) continue;
1831
- let i = I(A.clone(), M.clone(), r.beamStart.clone(), r.beamEnd.clone());
1798
+ let i = I(k.clone(), A.clone(), r.beamStart.clone(), r.beamEnd.clone());
1832
1799
  if (i && i.isParallel) {
1833
- let t = A.distanceTo(M), n = r.beamStart.distanceTo(r.beamEnd), i = new e.Line3(A.clone(), M.clone());
1834
- i.start.z = 0, i.end.z = 0;
1835
- let a = R(r.beamStart, r.beamEnd, !0);
1836
- n > t && (i.start = new e.Vector3(r.beamStart.x, r.beamStart.y, 0), i.end = new e.Vector3(r.beamEnd.x, r.beamEnd.y, 0), a = R(A, M, !0));
1837
- let o = new e.Vector3(), s = i.closestPointToPoint(a, !0, o), l = s.distanceTo(a), u = new e.Vector3().subVectors(a, s).normalize(), d = u.clone().negate(), f = a.clone().addScaledVector(d, l + .1), p = O(i.start, i.end, a, f), m = !E && !r.isDoor && (t > n * 2 || n > t * 2);
1838
- if (l < .4 && p != null && !m) {
1800
+ let t = k.distanceTo(A), i = r.beamStart.distanceTo(r.beamEnd), a = new e.Line3(k.clone(), A.clone());
1801
+ a.start.z = 0, a.end.z = 0;
1802
+ let o = R(r.beamStart, r.beamEnd, !0);
1803
+ i > t && (a.start = new e.Vector3(r.beamStart.x, r.beamStart.y, 0), a.end = new e.Vector3(r.beamEnd.x, r.beamEnd.y, 0), o = R(k, A, !0));
1804
+ let s = new e.Vector3(), u = a.closestPointToPoint(o, !0, s), d = u.distanceTo(o), f = new e.Vector3().subVectors(o, u).normalize(), p = f.clone().negate(), m = o.clone().addScaledVector(p, d + .1), b = O(a.start, a.end, o, m), x = !T && !r.isDoor && (t > i * 2 || i > t * 2);
1805
+ if (d < .4 && b != null && !x) {
1839
1806
  r.nearId = c, h.nearId = r.id;
1840
1807
  let e = .8;
1841
1808
  (r.isDoor || h.isDoor) && (r.isDoor = !0, h.isDoor = !0);
1842
- let i = k.some((e) => r.pcbDoorIndexs.includes(e));
1843
- t < n ? t > e && !r.isPullOutDoor ? (r.beamStart = A.clone().addScaledVector(d, l), r.beamEnd = M.clone().addScaledVector(d, l), r.doorStart = N.clone().addScaledVector(d, l), r.doorEnd = F.clone().addScaledVector(d, l), r.doorHeight = h.doorHeight, r.beamStart.z = r.beamEnd.z = r.doorStart.z + r.doorHeight) : !D || D && r.isPullOutDoor && i ? (h.beamStart = r.beamStart.clone().addScaledVector(u, l), h.beamEnd = r.beamEnd.clone().addScaledVector(u, l), h.doorStart = r.doorStart.clone().addScaledVector(u, l), h.doorEnd = r.doorEnd.clone().addScaledVector(u, l), h.doorHeight = r.doorHeight, h.beamStart.z = h.beamEnd.z = h.doorStart.z + h.doorHeight) : (r.beamStart = A.clone().addScaledVector(d, l), r.beamEnd = M.clone().addScaledVector(d, l), r.doorStart = N.clone().addScaledVector(d, l), r.doorEnd = F.clone().addScaledVector(d, l), r.doorHeight = h.doorHeight, r.beamStart.z = r.beamEnd.z = r.doorStart.z + r.doorHeight) : t > n && (n > e && !D ? (h.beamStart = r.beamStart.clone().addScaledVector(d, l), h.beamEnd = r.beamEnd.clone().addScaledVector(d, l), h.doorStart = r.doorStart.clone().addScaledVector(d, l), h.doorEnd = r.doorEnd.clone().addScaledVector(d, l), h.doorHeight = r.doorHeight, h.beamStart.z = h.beamEnd.z = h.doorStart.z + h.doorHeight) : !r.isPullOutDoor || D && r.isPullOutDoor && i ? (r.beamStart = A.clone().addScaledVector(u, l), r.beamEnd = M.clone().addScaledVector(u, l), r.doorStart = N.clone().addScaledVector(u, l), r.doorEnd = F.clone().addScaledVector(u, l), r.doorHeight = h.doorHeight, r.beamStart.z = r.beamEnd.z = r.doorStart.z + r.doorHeight) : (h.beamStart = r.beamStart.clone().addScaledVector(d, l), h.beamEnd = r.beamEnd.clone().addScaledVector(d, l), h.doorStart = r.doorStart.clone().addScaledVector(d, l), h.doorEnd = r.doorEnd.clone().addScaledVector(d, l), h.doorHeight = r.doorHeight, h.beamStart.z = h.beamEnd.z = h.doorStart.z + h.doorHeight)), y = h.nearId, _ = r.beamStart.clone(), v = r.beamEnd.clone(), g = !0;
1809
+ let a = D.some((e) => r.pcbDoorIndexs.includes(e));
1810
+ t < i ? t > e && !r.isPullOutDoor ? (r.beamStart = k.clone().addScaledVector(p, d), r.beamEnd = A.clone().addScaledVector(p, d), r.doorStart = M.clone().addScaledVector(p, d), r.doorEnd = P.clone().addScaledVector(p, d), r.doorHeight = h.doorHeight, r.beamStart.z = r.beamEnd.z = r.doorStart.z + r.doorHeight) : !E || E && r.isPullOutDoor && a ? (h.beamStart = r.beamStart.clone().addScaledVector(f, d), h.beamEnd = r.beamEnd.clone().addScaledVector(f, d), h.doorStart = r.doorStart.clone().addScaledVector(f, d), h.doorEnd = r.doorEnd.clone().addScaledVector(f, d), h.doorHeight = r.doorHeight, h.beamStart.z = h.beamEnd.z = h.doorStart.z + h.doorHeight) : (r.beamStart = k.clone().addScaledVector(p, d), r.beamEnd = A.clone().addScaledVector(p, d), r.doorStart = M.clone().addScaledVector(p, d), r.doorEnd = P.clone().addScaledVector(p, d), r.doorHeight = h.doorHeight, r.beamStart.z = r.beamEnd.z = r.doorStart.z + r.doorHeight) : t > i && (i > e && !E ? (h.beamStart = r.beamStart.clone().addScaledVector(p, d), h.beamEnd = r.beamEnd.clone().addScaledVector(p, d), h.doorStart = r.doorStart.clone().addScaledVector(p, d), h.doorEnd = r.doorEnd.clone().addScaledVector(p, d), h.doorHeight = r.doorHeight, h.beamStart.z = h.beamEnd.z = h.doorStart.z + h.doorHeight) : !r.isPullOutDoor || E && r.isPullOutDoor && a ? (r.beamStart = k.clone().addScaledVector(f, d), r.beamEnd = A.clone().addScaledVector(f, d), r.doorStart = M.clone().addScaledVector(f, d), r.doorEnd = P.clone().addScaledVector(f, d), r.doorHeight = h.doorHeight, r.beamStart.z = r.beamEnd.z = r.doorStart.z + r.doorHeight) : (h.beamStart = r.beamStart.clone().addScaledVector(p, d), h.beamEnd = r.beamEnd.clone().addScaledVector(p, d), h.doorStart = r.doorStart.clone().addScaledVector(p, d), h.doorEnd = r.doorEnd.clone().addScaledVector(p, d), h.doorHeight = r.doorHeight, h.beamStart.z = h.beamEnd.z = h.doorStart.z + h.doorHeight)), y = h.nearId, _ = r.beamStart.clone(), v = r.beamEnd.clone(), g = !0, S = l[n].linesIndex, C = l[n].doorIndex;
1844
1811
  break;
1845
1812
  }
1846
1813
  }
1847
1814
  }
1848
- let b = !1;
1815
+ let w = !1;
1849
1816
  if (!g) {
1850
- let a = new e.Line3(N.clone(), F.clone());
1817
+ let a = new e.Line3(M.clone(), P.clone());
1851
1818
  for (let o = 0; o < t.length; o++) {
1852
1819
  if (t[o].length < .5 || o == i || !t[o].checkResults) continue;
1853
- let c = z(new e.Vector3(t[o].start.x, t[o].start.y, t[o].start.z), new e.Vector3(t[o].end.x, t[o].end.y, t[o].end.z), N, F);
1820
+ let c = z(new e.Vector3(t[o].start.x, t[o].start.y, t[o].start.z), new e.Vector3(t[o].end.x, t[o].end.y, t[o].end.z), M, P), l = re(t[o]);
1854
1821
  if (c && c.maxPerpendicularDistance < .3) {
1855
1822
  for (let i = 0; i < t[o].checkResults.length; i++) {
1856
1823
  let i = [];
1857
1824
  t[o].originalPoints.forEach((t) => {
1858
- t.z > N.z && t.z < N.z + S / 2 && i.push(new e.Vector3(t.x, t.y, N.z));
1825
+ t.z > M.z && t.z < M.z + x / 2 && i.push(new e.Vector3(t.x, t.y, M.z));
1859
1826
  });
1860
- let c = new e.Vector3(), l = [], u = [];
1827
+ let c = new e.Vector3(), u = [], d = [];
1861
1828
  for (let e = 0; e < i.length; e++) {
1862
1829
  let t = a.closestPointToPoint(i[e], !0, c);
1863
- t.distanceTo(i[e]) < .15 && (l.push(i[e]), u.push(t.clone()));
1830
+ t.distanceTo(i[e]) < .15 && (u.push(i[e]), d.push(t.clone()));
1864
1831
  }
1865
- for (let e = 0; e < u.length; e++) se(a, u[e]) && l.push(u[e]);
1866
- if (l = u, l.length < 500) continue;
1867
- let d = ce(l);
1868
- if (d.length == 2) {
1869
- let e = d[0].distanceTo(d[1]);
1832
+ for (let e = 0; e < d.length; e++) oe(a, d[e]) && u.push(d[e]);
1833
+ if (u = d, u.length < 500) continue;
1834
+ let f = se(u);
1835
+ if (f.length == 2) {
1836
+ let e = f[0].distanceTo(f[1]);
1870
1837
  if (Math.abs(e - a.distance()) < .3) {
1871
- n = !0, te != -1 && (r[s[te].index].isFindBeam = !1, s[te].isFind = !1);
1838
+ if (h.beamStart.z > l.maxZ - .03 && b > 1) w = !0;
1839
+ else if (n = !0, B != -1 && (r[s[B].index].isFindBeam = !1, s[B].isFind = !1), S != -1 && C != -1) {
1840
+ let e = t[S].doorAndBeamData[C];
1841
+ e.nearId = -1;
1842
+ }
1872
1843
  break;
1873
1844
  }
1874
1845
  }
1875
1846
  }
1876
1847
  if (n) break;
1877
- } else c && c.type == "collinear_overlap" && c.maxPerpendicularDistance > .3 && c.maxPerpendicularDistance < .7 && (b = !0);
1848
+ } else c && c.type == "collinear_overlap" && c.maxPerpendicularDistance > .3 && c.maxPerpendicularDistance < .7 && (w = !0);
1878
1849
  }
1879
1850
  if (n) continue;
1880
1851
  }
1881
- let C = !1;
1852
+ let N = !1;
1882
1853
  if (y != -1) for (let e = 0; e < f.length && !(f[e].length == 1 && (f[e][0].id == c ? (f[e].push({
1883
1854
  id: y,
1884
1855
  beamStart: _,
1885
1856
  beamEnd: v
1886
- }), C = !0) : f[e][0].id == y && (f[e].push({
1857
+ }), N = !0) : f[e][0].id == y && (f[e].push({
1887
1858
  id: c,
1888
- beamStart: A,
1889
- beamEnd: M
1890
- }), C = !0), C)); e++);
1891
- C || f.push([{
1859
+ beamStart: k,
1860
+ beamEnd: A
1861
+ }), N = !0), N)); e++);
1862
+ N || f.push([{
1892
1863
  id: c,
1893
- beamStart: A,
1894
- beamEnd: M
1864
+ beamStart: k,
1865
+ beamEnd: A
1895
1866
  }]);
1896
- let w = h.doorStart.distanceTo(h.doorEnd);
1897
- if (console.log("id:", c, i, w), m = E ? "door" : w > 1.8 || b && w > 1 ? "beam" : "hole", h.type = m, h.nearId != -1 && m == "hole") {
1867
+ let L = h.doorStart.distanceTo(h.doorEnd);
1868
+ if (m = T ? "door" : L > 1.8 || w && L > 1 ? "beam" : "hole", h.type = m, h.nearId != -1 && m == "hole") {
1898
1869
  let e = !1;
1899
1870
  for (let n = 0; n < t.length; n++) if (t[n].doorAndBeamData) {
1900
1871
  for (let r = 0; r < t[n].doorAndBeamData.length; r++) if (t[n].doorAndBeamData[r].nearId == c && t[n].doorAndBeamData[r].type == "beam") {
@@ -1907,12 +1878,12 @@ var De = async (t, n, r, i) => {
1907
1878
  if (a.doorAndBeamData.push(h), l.push({
1908
1879
  linesIndex: i,
1909
1880
  doorIndex: a.doorAndBeamData.length - 1
1910
- }), c++, D && x < 2) break;
1881
+ }), c++, E && b < 2) break;
1911
1882
  }
1912
1883
  }
1913
1884
  }
1914
- let b = a.length * (a.rooftopPz - a.start.z);
1915
- a.completePointAreaPercentage = y / b * 100;
1885
+ let y = a.length * (a.rooftopPz - a.start.z);
1886
+ a.completePointAreaPercentage = v / y * 100;
1916
1887
  }
1917
1888
  if (u.length > 1) for (let n = 0; n < u.length; n++) {
1918
1889
  let r = [];
@@ -1920,14 +1891,14 @@ var De = async (t, n, r, i) => {
1920
1891
  let a = t[u[n]].doorAndBeamData[i].doorStart.clone(), o = t[u[n]].doorAndBeamData[i].doorEnd.clone();
1921
1892
  a.z = o.z = 0;
1922
1893
  let s = a.distanceTo(o), c = !1;
1923
- for (let r = 0; r < u.length; r++) if (n != r) for (let n = 0; n < t[u[r]].doorAndBeamData.length; n++) {
1924
- let i = t[u[r]].doorAndBeamData[n].doorStart.clone(), l = t[u[r]].doorAndBeamData[n].doorEnd.clone();
1925
- i.z = l.z = 0, i.distanceTo(l);
1926
- let d = z(a, o, i, l);
1927
- if (d.type == "collinear_overlap" && d.maxPerpendicularDistance < .2) {
1928
- let t = new e.Line3(i, l), n = R(a, o), r = t.closestPointToPoint(n, !0, new e.Vector3()), u = n.distanceTo(r);
1929
- if (Math.abs(s - d.overlap) < .1 && u < .04) {
1930
- c = !0;
1894
+ for (let r = 0; r < u.length; r++) if (n != r) for (let l = 0; l < t[u[r]].doorAndBeamData.length; l++) {
1895
+ let d = t[u[r]].doorAndBeamData[l].doorStart.clone(), f = t[u[r]].doorAndBeamData[l].doorEnd.clone();
1896
+ d.z = f.z = 0, d.distanceTo(f);
1897
+ let p = z(a, o, d, f);
1898
+ if (p.type == "collinear_overlap" && p.maxPerpendicularDistance < .2) {
1899
+ let m = new e.Line3(d, f), h = R(a, o), g = m.closestPointToPoint(h, !0, new e.Vector3()), _ = h.distanceTo(g);
1900
+ if (Math.abs(s - p.overlap) < .1 && _ < .04) {
1901
+ t[u[r]].doorAndBeamData[l].nearId == t[u[n]].doorAndBeamData[i].id && (t[u[r]].doorAndBeamData[l].nearId = -1), c = !0;
1931
1902
  break;
1932
1903
  }
1933
1904
  }
@@ -2011,7 +1982,7 @@ var De = async (t, n, r, i) => {
2011
1982
  lines: t,
2012
1983
  beamGroup: f
2013
1984
  };
2014
- }, ke = (t, n) => {
1985
+ }, Oe = (t, n) => {
2015
1986
  if (t.length <= 0) return t;
2016
1987
  for (let n of t) {
2017
1988
  let t = [];
@@ -2084,7 +2055,7 @@ var De = async (t, n, r, i) => {
2084
2055
  size: .01
2085
2056
  });
2086
2057
  for (let r = 0; r < t.length; r++) {
2087
- let i = t[r], { minZ: o, maxZ: s } = ie(i);
2058
+ let i = t[r], { minZ: o, maxZ: s } = re(i);
2088
2059
  if (o == null || s == null) continue;
2089
2060
  i.doorAndBeamData = [], i.completePointAreaPercentage = -1, s - o;
2090
2061
  let c = i.rooftopPz - i.start.z;
@@ -2092,7 +2063,7 @@ var De = async (t, n, r, i) => {
2092
2063
  let l = new e.Vector3(i.start.x, i.start.y, 0), u = new e.Vector3(i.end.x, i.end.y, 0);
2093
2064
  for (let i = 0; i < t.length; i++) {
2094
2065
  if (i == r || t[i].length < 1) continue;
2095
- let a = t[i], o = new e.Vector3(a.start.x, a.start.y, 0), c = new e.Vector3(a.end.x, a.end.y, 0), d = I(l, u, o, c), f = R(l, u), p = new e.Line3(o, c).closestPointToPoint(f, !0, new e.Vector3()), m = f.distanceTo(p), h = ie(a);
2066
+ let a = t[i], o = new e.Vector3(a.start.x, a.start.y, 0), c = new e.Vector3(a.end.x, a.end.y, 0), d = I(l, u, o, c), f = R(l, u), p = new e.Line3(o, c).closestPointToPoint(f, !0, new e.Vector3()), m = f.distanceTo(p), h = re(a);
2096
2067
  if (!(h.minZ === void 0 || h.maxZ === void 0) && !(h.maxZ - h.minZ > 1) && d && d.isParallel && m < .25 && Math.abs(s - h.minZ) < .1) {
2097
2068
  let a = R(l, u), s = R(o, c);
2098
2069
  a.z = s.z = 1, a.applyEuler(new e.Euler(-Math.PI / 2, 0, 0)), s.applyEuler(new e.Euler(-Math.PI / 2, 0, 0));
@@ -2102,7 +2073,7 @@ var De = async (t, n, r, i) => {
2102
2073
  }
2103
2074
  }
2104
2075
  return t;
2105
- }, Ae = (t, n) => {
2076
+ }, ke = (t, n) => {
2106
2077
  let r = {
2107
2078
  rectangles: [],
2108
2079
  threeEdgeRect: []
@@ -2117,7 +2088,7 @@ var De = async (t, n, r, i) => {
2117
2088
  if (r == n || i < a || i > o) continue;
2118
2089
  let g = new e.Vector3(t[r].start.x, t[r].start.y, t[r].start.z), _ = new e.Vector3(t[r].end.x, t[r].end.y, t[r].end.z), v = L(u, d, g, _);
2119
2090
  if (!v || v.angle < 85) continue;
2120
- let y = V(g, u), b = V(g, d), x = V(_, u), S = V(_, d);
2091
+ let y = H(g, u), b = H(g, d), x = H(_, u), S = H(_, d);
2121
2092
  if (!(!y && !b && !x && !S)) {
2122
2093
  y || b ? (p = g.clone(), m = _.clone()) : (p = _.clone(), m = g.clone()), h = new e.Vector3().subVectors(m, p).normalize(), h.clone().negate();
2123
2094
  for (let p = 0; p < t.length; p++) {
@@ -2125,7 +2096,7 @@ var De = async (t, n, r, i) => {
2125
2096
  if (p == n || p == r || h < a || h > o) continue;
2126
2097
  let v = new e.Vector3(t[p].start.x, t[p].start.y, t[p].start.z), y = new e.Vector3(t[p].end.x, t[p].end.y, t[p].end.z), b = L(g, _, v, y);
2127
2098
  if (!b || b.angle < 85) continue;
2128
- let x = V(v, m), S = V(y, m);
2099
+ let x = H(v, m), S = H(y, m);
2129
2100
  if (!x && !S) continue;
2130
2101
  new e.Vector3();
2131
2102
  let C = new e.Vector3(), w = new e.Vector3();
@@ -2137,12 +2108,12 @@ var De = async (t, n, r, i) => {
2137
2108
  if (f == n || f == r || f == p || m < a || m > o) continue;
2138
2109
  let h = new e.Vector3(t[f].start.x, t[f].start.y, t[f].start.z), g = new e.Vector3(t[f].end.x, t[f].end.y, t[f].end.z), _ = L(h, g, v, y);
2139
2110
  if (!_ || _.angle < 85) continue;
2140
- let b = V(h, C), x = V(g, C);
2111
+ let b = H(h, C), x = H(g, C);
2141
2112
  if (!b && !x) continue;
2142
2113
  new e.Vector3();
2143
2114
  let S = new e.Vector3();
2144
2115
  b ? (h.clone(), S = g.clone()) : (g.clone(), S = h.clone());
2145
- let w = V(S, u), T = V(S, d);
2116
+ let w = H(S, u), T = H(S, d);
2146
2117
  if (!w && !T) continue;
2147
2118
  let E = c * i;
2148
2119
  if (!(E < s || E > 2)) {
@@ -2175,7 +2146,7 @@ var De = async (t, n, r, i) => {
2175
2146
  }, u = new e.Vector3(t[n].start.x, t[n].start.y, t[n].start.z), d = new e.Vector3(t[n].end.x, t[n].end.y, t[n].end.z), f = !0, p = !0;
2176
2147
  for (let r = 0; r < t.length; r++) {
2177
2148
  if (r == n) continue;
2178
- let i = new e.Vector3(t[r].start.x, t[r].start.y, t[r].start.z), a = new e.Vector3(t[r].end.x, t[r].end.y, t[r].end.z), o = V(i, u), s = V(a, u), c = V(i, d), l = V(a, d);
2149
+ let i = new e.Vector3(t[r].start.x, t[r].start.y, t[r].start.z), a = new e.Vector3(t[r].end.x, t[r].end.y, t[r].end.z), o = H(i, u), s = H(a, u), c = H(i, d), l = H(a, d);
2179
2150
  if (o || s ? f = !1 : (c || l) && (p = !1), !f && !p) break;
2180
2151
  }
2181
2152
  if (!f && !p) continue;
@@ -2187,7 +2158,7 @@ var De = async (t, n, r, i) => {
2187
2158
  if (r == n || i.has(r) || f < a || f > o) continue;
2188
2159
  let p = new e.Vector3(t[r].start.x, t[r].start.y, t[r].start.z), m = new e.Vector3(t[r].end.x, t[r].end.y, t[r].end.z), g = L(u, d, p, m);
2189
2160
  if (!g || g.angle < 85) continue;
2190
- let _ = V(p, d), v = V(m, d);
2161
+ let _ = H(p, d), v = H(m, d);
2191
2162
  if (!_ && !v) continue;
2192
2163
  new e.Vector3();
2193
2164
  let y = new e.Vector3();
@@ -2197,7 +2168,7 @@ var De = async (t, n, r, i) => {
2197
2168
  if (d == n || d == r || i.has(d) || g < a || g > o) continue;
2198
2169
  let _ = new e.Vector3(t[d].start.x, t[d].start.y, t[d].start.z), v = new e.Vector3(t[d].end.x, t[d].end.y, t[d].end.z), b = L(p, m, _, v);
2199
2170
  if (!b || b.angle < 85) continue;
2200
- let x = V(_, y), S = V(v, y);
2171
+ let x = H(_, y), S = H(v, y);
2201
2172
  if (!x && !S) continue;
2202
2173
  let C = new e.Vector3(), w = new e.Vector3();
2203
2174
  x ? (C = _.clone(), w = v.clone()) : (C = v.clone(), w = _.clone());
@@ -2206,7 +2177,7 @@ var De = async (t, n, r, i) => {
2206
2177
  let E = !0, D = !0;
2207
2178
  for (let n = 0; n < t.length; n++) {
2208
2179
  if (n == d) continue;
2209
- let r = new e.Vector3(t[n].start.x, t[n].start.y, t[n].start.z), i = new e.Vector3(t[n].end.x, t[n].end.y, t[n].end.z), a = V(r, _), o = V(i, _), s = V(r, v), c = V(i, v);
2180
+ let r = new e.Vector3(t[n].start.x, t[n].start.y, t[n].start.z), i = new e.Vector3(t[n].end.x, t[n].end.y, t[n].end.z), a = H(r, _), o = H(i, _), s = H(r, v), c = H(i, v);
2210
2181
  if (a || o ? E = !1 : (s || c) && (D = !1), !E && !D) break;
2211
2182
  }
2212
2183
  if (!E && !D) continue;
@@ -2225,8 +2196,8 @@ var De = async (t, n, r, i) => {
2225
2196
  l.indexs.length == 3 && (l.indexs.forEach((e) => i.add(e)), r.threeEdgeRect.push(l));
2226
2197
  }
2227
2198
  return r;
2228
- }, H = 11102230246251565e-32, U = 134217729, je = (3 + 8 * H) * H;
2229
- function Me(e, t, n, r, i) {
2199
+ }, U = 11102230246251565e-32, W = 134217729, Ae = (3 + 8 * U) * U;
2200
+ function je(e, t, n, r, i) {
2230
2201
  let a, o, s, c, l = t[0], u = r[0], d = 0, f = 0;
2231
2202
  u > l == u > -l ? (a = l, l = t[++d]) : (a = u, u = r[++f]);
2232
2203
  let p = 0;
@@ -2235,37 +2206,37 @@ function Me(e, t, n, r, i) {
2235
2206
  for (; f < n;) o = a + u, c = o - a, s = a - (o - c) + (u - c), u = r[++f], a = o, s !== 0 && (i[p++] = s);
2236
2207
  return (a !== 0 || p === 0) && (i[p++] = a), p;
2237
2208
  }
2238
- function Ne(e, t) {
2209
+ function Me(e, t) {
2239
2210
  let n = t[0];
2240
2211
  for (let r = 1; r < e; r++) n += t[r];
2241
2212
  return n;
2242
2213
  }
2243
- function W(e) {
2214
+ function G(e) {
2244
2215
  return new Float64Array(e);
2245
2216
  }
2246
2217
  //#endregion
2247
2218
  //#region node_modules/robust-predicates/esm/orient2d.js
2248
- var Pe = (3 + 16 * H) * H, Fe = (2 + 12 * H) * H, Ie = (9 + 64 * H) * H * H, Le = W(4), Re = W(8), ze = W(12), Be = W(16), G = W(4);
2249
- function Ve(e, t, n, r, i, a, o) {
2219
+ var Ne = (3 + 16 * U) * U, Pe = (2 + 12 * U) * U, Fe = (9 + 64 * U) * U * U, Ie = G(4), Le = G(8), Re = G(12), ze = G(16), K = G(4);
2220
+ function Be(e, t, n, r, i, a, o) {
2250
2221
  let s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T = e - i, E = n - i, D = t - a, O = r - a;
2251
- b = T * O, f = U * T, p = f - (f - T), m = T - p, f = U * O, h = f - (f - O), g = O - h, x = m * g - (b - p * h - m * h - p * g), S = D * E, f = U * D, p = f - (f - D), m = D - p, f = U * E, h = f - (f - E), g = E - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, Le[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, Le[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, Le[2] = v - (w - d) + (_ - d), Le[3] = w;
2252
- let k = Ne(4, Le), A = Fe * o;
2253
- if (k >= A || -k >= A || (d = e - T, s = e - (T + d) + (d - i), d = n - E, l = n - (E + d) + (d - i), d = t - D, c = t - (D + d) + (d - a), d = r - O, u = r - (O + d) + (d - a), s === 0 && c === 0 && l === 0 && u === 0) || (A = Ie * o + je * Math.abs(k), k += T * u + O * s - (D * l + E * c), k >= A || -k >= A)) return k;
2254
- b = s * O, f = U * s, p = f - (f - s), m = s - p, f = U * O, h = f - (f - O), g = O - h, x = m * g - (b - p * h - m * h - p * g), S = c * E, f = U * c, p = f - (f - c), m = c - p, f = U * E, h = f - (f - E), g = E - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, G[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, G[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, G[2] = v - (w - d) + (_ - d), G[3] = w;
2255
- let j = Me(4, Le, 4, G, Re);
2256
- b = T * u, f = U * T, p = f - (f - T), m = T - p, f = U * u, h = f - (f - u), g = u - h, x = m * g - (b - p * h - m * h - p * g), S = D * l, f = U * D, p = f - (f - D), m = D - p, f = U * l, h = f - (f - l), g = l - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, G[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, G[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, G[2] = v - (w - d) + (_ - d), G[3] = w;
2257
- let M = Me(j, Re, 4, G, ze);
2258
- return b = s * u, f = U * s, p = f - (f - s), m = s - p, f = U * u, h = f - (f - u), g = u - h, x = m * g - (b - p * h - m * h - p * g), S = c * l, f = U * c, p = f - (f - c), m = c - p, f = U * l, h = f - (f - l), g = l - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, G[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, G[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, G[2] = v - (w - d) + (_ - d), G[3] = w, Be[Me(M, ze, 4, G, Be) - 1];
2222
+ b = T * O, f = W * T, p = f - (f - T), m = T - p, f = W * O, h = f - (f - O), g = O - h, x = m * g - (b - p * h - m * h - p * g), S = D * E, f = W * D, p = f - (f - D), m = D - p, f = W * E, h = f - (f - E), g = E - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, Ie[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, Ie[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, Ie[2] = v - (w - d) + (_ - d), Ie[3] = w;
2223
+ let k = Me(4, Ie), A = Pe * o;
2224
+ if (k >= A || -k >= A || (d = e - T, s = e - (T + d) + (d - i), d = n - E, l = n - (E + d) + (d - i), d = t - D, c = t - (D + d) + (d - a), d = r - O, u = r - (O + d) + (d - a), s === 0 && c === 0 && l === 0 && u === 0) || (A = Fe * o + Ae * Math.abs(k), k += T * u + O * s - (D * l + E * c), k >= A || -k >= A)) return k;
2225
+ b = s * O, f = W * s, p = f - (f - s), m = s - p, f = W * O, h = f - (f - O), g = O - h, x = m * g - (b - p * h - m * h - p * g), S = c * E, f = W * c, p = f - (f - c), m = c - p, f = W * E, h = f - (f - E), g = E - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, K[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, K[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, K[2] = v - (w - d) + (_ - d), K[3] = w;
2226
+ let j = je(4, Ie, 4, K, Le);
2227
+ b = T * u, f = W * T, p = f - (f - T), m = T - p, f = W * u, h = f - (f - u), g = u - h, x = m * g - (b - p * h - m * h - p * g), S = D * l, f = W * D, p = f - (f - D), m = D - p, f = W * l, h = f - (f - l), g = l - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, K[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, K[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, K[2] = v - (w - d) + (_ - d), K[3] = w;
2228
+ let M = je(j, Le, 4, K, Re);
2229
+ return b = s * u, f = W * s, p = f - (f - s), m = s - p, f = W * u, h = f - (f - u), g = u - h, x = m * g - (b - p * h - m * h - p * g), S = c * l, f = W * c, p = f - (f - c), m = c - p, f = W * l, h = f - (f - l), g = l - h, C = m * g - (S - p * h - m * h - p * g), _ = x - C, d = x - _, K[0] = x - (_ + d) + (d - C), v = b + _, d = v - b, y = b - (v - d) + (_ - d), _ = y - S, d = y - _, K[1] = y - (_ + d) + (d - S), w = v + _, d = w - v, K[2] = v - (w - d) + (_ - d), K[3] = w, ze[je(M, Re, 4, K, ze) - 1];
2259
2230
  }
2260
- function He(e, t, n, r, i, a) {
2231
+ function Ve(e, t, n, r, i, a) {
2261
2232
  let o = (t - a) * (n - i), s = (e - i) * (r - a), c = o - s, l = Math.abs(o + s);
2262
- return Math.abs(c) >= Pe * l ? c : -Ve(e, t, n, r, i, a, l);
2233
+ return Math.abs(c) >= Ne * l ? c : -Be(e, t, n, r, i, a, l);
2263
2234
  }
2264
- (7 + 56 * H) * H, (3 + 28 * H) * H, (26 + 288 * H) * H * H, W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(8), W(8), W(8), W(4), W(8), W(8), W(16), W(12), W(192), W(192), (10 + 96 * H) * H, (4 + 48 * H) * H, (44 + 576 * H) * H * H, W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(8), W(8), W(8), W(8), W(8), W(8), W(8), W(8), W(8), W(4), W(4), W(4), W(8), W(16), W(16), W(16), W(32), W(32), W(48), W(64), W(1152), W(1152), (16 + 224 * H) * H, (5 + 72 * H) * H, (71 + 1408 * H) * H * H, W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(4), W(24), W(24), W(24), W(24), W(24), W(24), W(24), W(24), W(24), W(24), W(1152), W(1152), W(1152), W(1152), W(1152), W(2304), W(2304), W(3456), W(5760), W(8), W(8), W(8), W(16), W(24), W(48), W(48), W(96), W(192), W(384), W(384), W(384), W(768), W(96), W(96), W(96), W(1152);
2235
+ (7 + 56 * U) * U, (3 + 28 * U) * U, (26 + 288 * U) * U * U, G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(8), G(8), G(8), G(4), G(8), G(8), G(16), G(12), G(192), G(192), (10 + 96 * U) * U, (4 + 48 * U) * U, (44 + 576 * U) * U * U, G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(8), G(8), G(8), G(8), G(8), G(8), G(8), G(8), G(8), G(4), G(4), G(4), G(8), G(16), G(16), G(16), G(32), G(32), G(48), G(64), G(1152), G(1152), (16 + 224 * U) * U, (5 + 72 * U) * U, (71 + 1408 * U) * U * U, G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(4), G(24), G(24), G(24), G(24), G(24), G(24), G(24), G(24), G(24), G(24), G(1152), G(1152), G(1152), G(1152), G(1152), G(2304), G(2304), G(3456), G(5760), G(8), G(8), G(8), G(16), G(24), G(48), G(48), G(96), G(192), G(384), G(384), G(384), G(768), G(96), G(96), G(96), G(1152);
2265
2236
  //#endregion
2266
2237
  //#region node_modules/delaunator/index.js
2267
- var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2268
- static from(t, n = $e, r = et) {
2238
+ var He = 2 ** -52, Ue = new Uint32Array(512), We = class e {
2239
+ static from(t, n = Qe, r = $e) {
2269
2240
  let i = t.length, a = new Float64Array(i * 2);
2270
2241
  for (let e = 0; e < i; e++) {
2271
2242
  let i = t[e];
@@ -2288,25 +2259,25 @@ var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2288
2259
  }
2289
2260
  let u = (o + c) / 2, d = (s + l) / 2, f = 0, p = 0, m = 0;
2290
2261
  for (let t = 0, n = Infinity; t < a; t++) {
2291
- let r = qe(u, d, e[2 * t], e[2 * t + 1]);
2262
+ let r = Ke(u, d, e[2 * t], e[2 * t + 1]);
2292
2263
  r < n && (f = t, n = r);
2293
2264
  }
2294
2265
  let h = e[2 * f], g = e[2 * f + 1];
2295
2266
  for (let t = 0, n = Infinity; t < a; t++) {
2296
2267
  if (t === f) continue;
2297
- let r = qe(h, g, e[2 * t], e[2 * t + 1]);
2268
+ let r = Ke(h, g, e[2 * t], e[2 * t + 1]);
2298
2269
  r < n && r > 0 && (p = t, n = r);
2299
2270
  }
2300
2271
  let _ = e[2 * p], v = e[2 * p + 1], y = Infinity;
2301
2272
  for (let t = 0; t < a; t++) {
2302
2273
  if (t === f || t === p) continue;
2303
- let n = Ye(h, g, _, v, e[2 * t], e[2 * t + 1]);
2274
+ let n = Je(h, g, _, v, e[2 * t], e[2 * t + 1]);
2304
2275
  n < y && (m = t, y = n);
2305
2276
  }
2306
2277
  let b = e[2 * m], x = e[2 * m + 1];
2307
2278
  if (y === Infinity) {
2308
2279
  for (let t = 0; t < a; t++) this._dists[t] = e[2 * t] - e[0] || e[2 * t + 1] - e[1];
2309
- Ze(this._ids, this._dists, 0, a - 1);
2280
+ Xe(this._ids, this._dists, 0, a - 1);
2310
2281
  let t = new Uint32Array(a), n = 0;
2311
2282
  for (let e = 0, r = -Infinity; e < a; e++) {
2312
2283
  let i = this._ids[e], a = this._dists[i];
@@ -2315,24 +2286,24 @@ var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2315
2286
  this.hull = t.subarray(0, n), this.triangles = new Uint32Array(), this.halfedges = new Int32Array();
2316
2287
  return;
2317
2288
  }
2318
- if (He(h, g, _, v, b, x) < 0) {
2289
+ if (Ve(h, g, _, v, b, x) < 0) {
2319
2290
  let e = p, t = _, n = v;
2320
2291
  p = m, _ = b, v = x, m = e, b = t, x = n;
2321
2292
  }
2322
- let S = Xe(h, g, _, v, b, x);
2293
+ let S = Ye(h, g, _, v, b, x);
2323
2294
  this._cx = S.x, this._cy = S.y;
2324
- for (let t = 0; t < a; t++) this._dists[t] = qe(e[2 * t], e[2 * t + 1], S.x, S.y);
2325
- Ze(this._ids, this._dists, 0, a - 1), this._hullStart = f;
2295
+ for (let t = 0; t < a; t++) this._dists[t] = Ke(e[2 * t], e[2 * t + 1], S.x, S.y);
2296
+ Xe(this._ids, this._dists, 0, a - 1), this._hullStart = f;
2326
2297
  let C = 3;
2327
2298
  n[f] = t[m] = p, n[p] = t[f] = m, n[m] = t[p] = f, r[f] = 0, r[p] = 1, r[m] = 2, i.fill(-1), i[this._hashKey(h, g)] = f, i[this._hashKey(_, v)] = p, i[this._hashKey(b, x)] = m, this.trianglesLen = 0, this._addTriangle(f, p, m, -1, -1, -1);
2328
2299
  for (let a = 0, o = 0, s = 0; a < this._ids.length; a++) {
2329
2300
  let c = this._ids[a], l = e[2 * c], u = e[2 * c + 1];
2330
- if (a > 0 && Math.abs(l - o) <= Ue && Math.abs(u - s) <= Ue || (o = l, s = u, c === f || c === p || c === m)) continue;
2301
+ if (a > 0 && Math.abs(l - o) <= He && Math.abs(u - s) <= He || (o = l, s = u, c === f || c === p || c === m)) continue;
2331
2302
  let d = 0;
2332
2303
  for (let e = 0, t = this._hashKey(l, u); e < this._hashSize && (d = i[(t + e) % this._hashSize], !(d !== -1 && d !== n[d])); e++);
2333
2304
  d = t[d];
2334
2305
  let h = d, g;
2335
- for (; g = n[h], He(l, u, e[2 * h], e[2 * h + 1], e[2 * g], e[2 * g + 1]) >= 0;) if (h = g, h === d) {
2306
+ for (; g = n[h], Ve(l, u, e[2 * h], e[2 * h + 1], e[2 * g], e[2 * g + 1]) >= 0;) if (h = g, h === d) {
2336
2307
  h = -1;
2337
2308
  break;
2338
2309
  }
@@ -2340,8 +2311,8 @@ var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2340
2311
  let _ = this._addTriangle(h, c, n[h], -1, -1, r[h]);
2341
2312
  r[c] = this._legalize(_ + 2), r[h] = _, C++;
2342
2313
  let v = n[h];
2343
- for (; g = n[v], He(l, u, e[2 * v], e[2 * v + 1], e[2 * g], e[2 * g + 1]) < 0;) _ = this._addTriangle(v, c, g, r[c], -1, r[v]), r[c] = this._legalize(_ + 2), n[v] = v, C--, v = g;
2344
- if (h === d) for (; g = t[h], He(l, u, e[2 * g], e[2 * g + 1], e[2 * h], e[2 * h + 1]) < 0;) _ = this._addTriangle(g, c, h, -1, r[h], r[g]), this._legalize(_ + 2), r[g] = _, n[h] = h, C--, h = g;
2314
+ for (; g = n[v], Ve(l, u, e[2 * v], e[2 * v + 1], e[2 * g], e[2 * g + 1]) < 0;) _ = this._addTriangle(v, c, g, r[c], -1, r[v]), r[c] = this._legalize(_ + 2), n[v] = v, C--, v = g;
2315
+ if (h === d) for (; g = t[h], Ve(l, u, e[2 * g], e[2 * g + 1], e[2 * h], e[2 * h + 1]) < 0;) _ = this._addTriangle(g, c, h, -1, r[h], r[g]), this._legalize(_ + 2), r[g] = _, n[h] = h, C--, h = g;
2345
2316
  this._hullStart = t[c] = h, n[h] = t[v] = c, n[c] = v, i[this._hashKey(l, u)] = c, i[this._hashKey(e[2 * h], e[2 * h + 1])] = h;
2346
2317
  }
2347
2318
  this.hull = new Uint32Array(C);
@@ -2349,7 +2320,7 @@ var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2349
2320
  this.triangles = this._triangles.subarray(0, this.trianglesLen), this.halfedges = this._halfedges.subarray(0, this.trianglesLen);
2350
2321
  }
2351
2322
  _hashKey(e, t) {
2352
- return Math.floor(Ke(e - this._cx, t - this._cy) * this._hashSize) % this._hashSize;
2323
+ return Math.floor(Ge(e - this._cx, t - this._cy) * this._hashSize) % this._hashSize;
2353
2324
  }
2354
2325
  _legalize(e) {
2355
2326
  let { _triangles: t, _halfedges: n, coords: r } = this, i = 0, a = 0;
@@ -2357,11 +2328,11 @@ var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2357
2328
  let o = n[e], s = e - e % 3;
2358
2329
  if (a = s + (e + 2) % 3, o === -1) {
2359
2330
  if (i === 0) break;
2360
- e = We[--i];
2331
+ e = Ue[--i];
2361
2332
  continue;
2362
2333
  }
2363
2334
  let c = o - o % 3, l = s + (e + 1) % 3, u = c + (o + 2) % 3, d = t[a], f = t[e], p = t[l], m = t[u];
2364
- if (Je(r[2 * d], r[2 * d + 1], r[2 * f], r[2 * f + 1], r[2 * p], r[2 * p + 1], r[2 * m], r[2 * m + 1])) {
2335
+ if (qe(r[2 * d], r[2 * d + 1], r[2 * f], r[2 * f + 1], r[2 * p], r[2 * p + 1], r[2 * m], r[2 * m + 1])) {
2365
2336
  t[e] = m, t[o] = d;
2366
2337
  let r = n[u];
2367
2338
  if (r === -1) {
@@ -2376,10 +2347,10 @@ var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2376
2347
  }
2377
2348
  this._link(e, r), this._link(o, n[a]), this._link(a, u);
2378
2349
  let s = c + (o + 1) % 3;
2379
- i < We.length && (We[i++] = s);
2350
+ i < Ue.length && (Ue[i++] = s);
2380
2351
  } else {
2381
2352
  if (i === 0) break;
2382
- e = We[--i];
2353
+ e = Ue[--i];
2383
2354
  }
2384
2355
  }
2385
2356
  return a;
@@ -2392,30 +2363,30 @@ var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
2392
2363
  return this._triangles[o] = e, this._triangles[o + 1] = t, this._triangles[o + 2] = n, this._link(o, r), this._link(o + 1, i), this._link(o + 2, a), this.trianglesLen += 3, o;
2393
2364
  }
2394
2365
  };
2395
- function Ke(e, t) {
2366
+ function Ge(e, t) {
2396
2367
  let n = e / (Math.abs(e) + Math.abs(t));
2397
2368
  return (t > 0 ? 3 - n : 1 + n) / 4;
2398
2369
  }
2399
- function qe(e, t, n, r) {
2370
+ function Ke(e, t, n, r) {
2400
2371
  let i = e - n, a = t - r;
2401
2372
  return i * i + a * a;
2402
2373
  }
2403
- function Je(e, t, n, r, i, a, o, s) {
2374
+ function qe(e, t, n, r, i, a, o, s) {
2404
2375
  let c = e - o, l = t - s, u = n - o, d = r - s, f = i - o, p = a - s, m = c * c + l * l, h = u * u + d * d, g = f * f + p * p;
2405
2376
  return c * (d * g - h * p) - l * (u * g - h * f) + m * (u * p - d * f) < 0;
2406
2377
  }
2407
- function Ye(e, t, n, r, i, a) {
2378
+ function Je(e, t, n, r, i, a) {
2408
2379
  let o = n - e, s = r - t, c = i - e, l = a - t, u = o * o + s * s, d = c * c + l * l, f = .5 / (o * l - s * c), p = (l * u - s * d) * f, m = (o * d - c * u) * f;
2409
2380
  return p * p + m * m;
2410
2381
  }
2411
- function Xe(e, t, n, r, i, a) {
2382
+ function Ye(e, t, n, r, i, a) {
2412
2383
  let o = n - e, s = r - t, c = i - e, l = a - t, u = o * o + s * s, d = c * c + l * l, f = .5 / (o * l - s * c);
2413
2384
  return {
2414
2385
  x: e + (l * u - s * d) * f,
2415
2386
  y: t + (o * d - c * u) * f
2416
2387
  };
2417
2388
  }
2418
- function Ze(e, t, n, r) {
2389
+ function Xe(e, t, n, r) {
2419
2390
  if (r - n <= 20) for (let i = n + 1; i <= r; i++) {
2420
2391
  let r = e[i], a = t[r], o = i - 1;
2421
2392
  for (; o >= n && t[e[o]] > a;) e[o + 1] = e[o--];
@@ -2423,7 +2394,7 @@ function Ze(e, t, n, r) {
2423
2394
  }
2424
2395
  else {
2425
2396
  let i = n + r >> 1, a = n + 1, o = r;
2426
- Qe(e, i, a), t[e[n]] > t[e[r]] && Qe(e, n, r), t[e[a]] > t[e[r]] && Qe(e, a, r), t[e[n]] > t[e[a]] && Qe(e, n, a);
2397
+ Ze(e, i, a), t[e[n]] > t[e[r]] && Ze(e, n, r), t[e[a]] > t[e[r]] && Ze(e, a, r), t[e[n]] > t[e[a]] && Ze(e, n, a);
2427
2398
  let s = e[a], c = t[s];
2428
2399
  for (;;) {
2429
2400
  do
@@ -2433,24 +2404,24 @@ function Ze(e, t, n, r) {
2433
2404
  o--;
2434
2405
  while (t[e[o]] > c);
2435
2406
  if (o < a) break;
2436
- Qe(e, a, o);
2407
+ Ze(e, a, o);
2437
2408
  }
2438
- e[n + 1] = e[o], e[o] = s, r - a + 1 >= o - n ? (Ze(e, t, a, r), Ze(e, t, n, o - 1)) : (Ze(e, t, n, o - 1), Ze(e, t, a, r));
2409
+ e[n + 1] = e[o], e[o] = s, r - a + 1 >= o - n ? (Xe(e, t, a, r), Xe(e, t, n, o - 1)) : (Xe(e, t, n, o - 1), Xe(e, t, a, r));
2439
2410
  }
2440
2411
  }
2441
- function Qe(e, t, n) {
2412
+ function Ze(e, t, n) {
2442
2413
  let r = e[t];
2443
2414
  e[t] = e[n], e[n] = r;
2444
2415
  }
2445
- function $e(e) {
2416
+ function Qe(e) {
2446
2417
  return e[0];
2447
2418
  }
2448
- function et(e) {
2419
+ function $e(e) {
2449
2420
  return e[1];
2450
2421
  }
2451
2422
  //#endregion
2452
2423
  //#region node_modules/d3-delaunay/src/path.js
2453
- var tt = 1e-6, nt = class {
2424
+ var et = 1e-6, tt = class {
2454
2425
  constructor() {
2455
2426
  this._x0 = this._y0 = this._x1 = this._y1 = null, this._ = "";
2456
2427
  }
@@ -2467,7 +2438,7 @@ var tt = 1e-6, nt = class {
2467
2438
  e = +e, t = +t, n = +n;
2468
2439
  let r = e + n, i = t;
2469
2440
  if (n < 0) throw Error("negative radius");
2470
- this._x1 === null ? this._ += `M${r},${i}` : (Math.abs(this._x1 - r) > tt || Math.abs(this._y1 - i) > tt) && (this._ += "L" + r + "," + i), n && (this._ += `A${n},${n},0,1,1,${e - n},${t}A${n},${n},0,1,1,${this._x1 = r},${this._y1 = i}`);
2441
+ this._x1 === null ? this._ += `M${r},${i}` : (Math.abs(this._x1 - r) > et || Math.abs(this._y1 - i) > et) && (this._ += "L" + r + "," + i), n && (this._ += `A${n},${n},0,1,1,${e - n},${t}A${n},${n},0,1,1,${this._x1 = r},${this._y1 = i}`);
2471
2442
  }
2472
2443
  rect(e, t, n, r) {
2473
2444
  this._ += `M${this._x0 = this._x1 = +e},${this._y0 = this._y1 = +t}h${+n}v${+r}h${-n}Z`;
@@ -2475,7 +2446,7 @@ var tt = 1e-6, nt = class {
2475
2446
  value() {
2476
2447
  return this._ || null;
2477
2448
  }
2478
- }, rt = class {
2449
+ }, nt = class {
2479
2450
  constructor() {
2480
2451
  this._ = [];
2481
2452
  }
@@ -2491,7 +2462,7 @@ var tt = 1e-6, nt = class {
2491
2462
  value() {
2492
2463
  return this._.length ? this._ : null;
2493
2464
  }
2494
- }, it = class {
2465
+ }, rt = class {
2495
2466
  constructor(e, [t, n, r, i] = [
2496
2467
  0,
2497
2468
  0,
@@ -2527,7 +2498,7 @@ var tt = 1e-6, nt = class {
2527
2498
  for (let n = 0; n < t.length; ++n) s = t[n], c = l, u = d, f = p, l = s * 4, d = e[2 * s], p = e[2 * s + 1], r[c + 2] = r[l] = f - p, r[c + 3] = r[l + 1] = d - u;
2528
2499
  }
2529
2500
  render(e) {
2530
- let t = e == null ? e = new nt() : void 0, { delaunay: { halfedges: n, inedges: r, hull: i }, circumcenters: a, vectors: o } = this;
2501
+ let t = e == null ? e = new tt() : void 0, { delaunay: { halfedges: n, inedges: r, hull: i }, circumcenters: a, vectors: o } = this;
2531
2502
  if (i.length <= 1) return null;
2532
2503
  for (let t = 0, r = n.length; t < r; ++t) {
2533
2504
  let r = n[t];
@@ -2544,11 +2515,11 @@ var tt = 1e-6, nt = class {
2544
2515
  return t && t.value();
2545
2516
  }
2546
2517
  renderBounds(e) {
2547
- let t = e == null ? e = new nt() : void 0;
2518
+ let t = e == null ? e = new tt() : void 0;
2548
2519
  return e.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin), t && t.value();
2549
2520
  }
2550
2521
  renderCell(e, t) {
2551
- let n = t == null ? t = new nt() : void 0, r = this._clip(e);
2522
+ let n = t == null ? t = new tt() : void 0, r = this._clip(e);
2552
2523
  if (r === null || !r.length) return;
2553
2524
  t.moveTo(r[0], r[1]);
2554
2525
  let i = r.length;
@@ -2564,7 +2535,7 @@ var tt = 1e-6, nt = class {
2564
2535
  }
2565
2536
  }
2566
2537
  cellPolygon(e) {
2567
- let t = new rt();
2538
+ let t = new nt();
2568
2539
  return this.renderCell(e, t), t.value();
2569
2540
  }
2570
2541
  _renderSegment(e, t, n, r, i) {
@@ -2748,14 +2719,14 @@ var tt = 1e-6, nt = class {
2748
2719
  }
2749
2720
  return e;
2750
2721
  }
2751
- }, at = 2 * Math.PI, ot = Math.pow;
2752
- function st(e) {
2722
+ }, it = 2 * Math.PI, at = Math.pow;
2723
+ function ot(e) {
2753
2724
  return e[0];
2754
2725
  }
2755
- function ct(e) {
2726
+ function st(e) {
2756
2727
  return e[1];
2757
2728
  }
2758
- function lt(e) {
2729
+ function ct(e) {
2759
2730
  let { triangles: t, coords: n } = e;
2760
2731
  for (let e = 0; e < t.length; e += 3) {
2761
2732
  let r = 2 * t[e], i = 2 * t[e + 1], a = 2 * t[e + 2];
@@ -2763,22 +2734,22 @@ function lt(e) {
2763
2734
  }
2764
2735
  return !0;
2765
2736
  }
2766
- function ut(e, t, n) {
2737
+ function lt(e, t, n) {
2767
2738
  return [e + Math.sin(e + t) * n, t + Math.cos(e - t) * n];
2768
2739
  }
2769
- var dt = class e {
2770
- static from(t, n = st, r = ct, i) {
2771
- return new e("length" in t ? ft(t, n, r, i) : Float64Array.from(pt(t, n, r, i)));
2740
+ var ut = class e {
2741
+ static from(t, n = ot, r = st, i) {
2742
+ return new e("length" in t ? dt(t, n, r, i) : Float64Array.from(ft(t, n, r, i)));
2772
2743
  }
2773
2744
  constructor(e) {
2774
- this._delaunator = new Ge(e), this.inedges = new Int32Array(e.length / 2), this._hullIndex = new Int32Array(e.length / 2), this.points = this._delaunator.coords, this._init();
2745
+ this._delaunator = new We(e), this.inedges = new Int32Array(e.length / 2), this._hullIndex = new Int32Array(e.length / 2), this.points = this._delaunator.coords, this._init();
2775
2746
  }
2776
2747
  update() {
2777
2748
  return this._delaunator.update(), this._init(), this;
2778
2749
  }
2779
2750
  _init() {
2780
2751
  let e = this._delaunator, t = this.points;
2781
- if (e.hull && e.hull.length > 2 && lt(e)) {
2752
+ if (e.hull && e.hull.length > 2 && ct(e)) {
2782
2753
  this.collinear = Int32Array.from({ length: t.length / 2 }, (e, t) => t).sort((e, n) => t[2 * e] - t[2 * n] || t[2 * e + 1] - t[2 * n + 1]);
2783
2754
  let e = this.collinear[0], n = this.collinear[this.collinear.length - 1], r = [
2784
2755
  t[2 * e],
@@ -2787,10 +2758,10 @@ var dt = class e {
2787
2758
  t[2 * n + 1]
2788
2759
  ], i = 1e-8 * Math.hypot(r[3] - r[1], r[2] - r[0]);
2789
2760
  for (let e = 0, n = t.length / 2; e < n; ++e) {
2790
- let n = ut(t[2 * e], t[2 * e + 1], i);
2761
+ let n = lt(t[2 * e], t[2 * e + 1], i);
2791
2762
  t[2 * e] = n[0], t[2 * e + 1] = n[1];
2792
2763
  }
2793
- this._delaunator = new Ge(t);
2764
+ this._delaunator = new We(t);
2794
2765
  } else delete this.collinear;
2795
2766
  let n = this.halfedges = this._delaunator.halfedges, r = this.hull = this._delaunator.hull, i = this.triangles = this._delaunator.triangles, a = this.inedges.fill(-1), o = this._hullIndex.fill(-1);
2796
2767
  for (let e = 0, t = n.length; e < t; ++e) {
@@ -2801,7 +2772,7 @@ var dt = class e {
2801
2772
  r.length <= 2 && r.length > 0 && (this.triangles = new Int32Array(3).fill(-1), this.halfedges = new Int32Array(3).fill(-1), this.triangles[0] = r[0], a[r[0]] = 1, r.length === 2 && (a[r[1]] = 0, this.triangles[1] = r[1], this.triangles[2] = r[1]));
2802
2773
  }
2803
2774
  voronoi(e) {
2804
- return new it(this, e);
2775
+ return new rt(this, e);
2805
2776
  }
2806
2777
  *neighbors(e) {
2807
2778
  let { inedges: t, hull: n, _hullIndex: r, halfedges: i, triangles: a, collinear: o } = this;
@@ -2831,19 +2802,19 @@ var dt = class e {
2831
2802
  _step(e, t, n) {
2832
2803
  let { inedges: r, hull: i, _hullIndex: a, halfedges: o, triangles: s, points: c } = this;
2833
2804
  if (r[e] === -1 || !c.length) return (e + 1) % (c.length >> 1);
2834
- let l = e, u = ot(t - c[e * 2], 2) + ot(n - c[e * 2 + 1], 2), d = r[e], f = d;
2805
+ let l = e, u = at(t - c[e * 2], 2) + at(n - c[e * 2 + 1], 2), d = r[e], f = d;
2835
2806
  do {
2836
- let r = s[f], d = ot(t - c[r * 2], 2) + ot(n - c[r * 2 + 1], 2);
2807
+ let r = s[f], d = at(t - c[r * 2], 2) + at(n - c[r * 2 + 1], 2);
2837
2808
  if (d < u && (u = d, l = r), f = f % 3 == 2 ? f - 2 : f + 1, s[f] !== e) break;
2838
2809
  if (f = o[f], f === -1) {
2839
- if (f = i[(a[e] + 1) % i.length], f !== r && ot(t - c[f * 2], 2) + ot(n - c[f * 2 + 1], 2) < u) return f;
2810
+ if (f = i[(a[e] + 1) % i.length], f !== r && at(t - c[f * 2], 2) + at(n - c[f * 2 + 1], 2) < u) return f;
2840
2811
  break;
2841
2812
  }
2842
2813
  } while (f !== d);
2843
2814
  return l;
2844
2815
  }
2845
2816
  render(e) {
2846
- let t = e == null ? e = new nt() : void 0, { points: n, halfedges: r, triangles: i } = this;
2817
+ let t = e == null ? e = new tt() : void 0, { points: n, halfedges: r, triangles: i } = this;
2847
2818
  for (let t = 0, a = r.length; t < a; ++t) {
2848
2819
  let a = r[t];
2849
2820
  if (a < t) continue;
@@ -2854,15 +2825,15 @@ var dt = class e {
2854
2825
  }
2855
2826
  renderPoints(e, t) {
2856
2827
  t === void 0 && (!e || typeof e.moveTo != "function") && (t = e, e = null), t = t == null ? 2 : +t;
2857
- let n = e == null ? e = new nt() : void 0, { points: r } = this;
2828
+ let n = e == null ? e = new tt() : void 0, { points: r } = this;
2858
2829
  for (let n = 0, i = r.length; n < i; n += 2) {
2859
2830
  let i = r[n], a = r[n + 1];
2860
- e.moveTo(i + t, a), e.arc(i, a, t, 0, at);
2831
+ e.moveTo(i + t, a), e.arc(i, a, t, 0, it);
2861
2832
  }
2862
2833
  return n && n.value();
2863
2834
  }
2864
2835
  renderHull(e) {
2865
- let t = e == null ? e = new nt() : void 0, { hull: n, points: r } = this, i = n[0] * 2, a = n.length;
2836
+ let t = e == null ? e = new tt() : void 0, { hull: n, points: r } = this, i = n[0] * 2, a = n.length;
2866
2837
  e.moveTo(r[i], r[i + 1]);
2867
2838
  for (let t = 1; t < a; ++t) {
2868
2839
  let i = 2 * n[t];
@@ -2871,11 +2842,11 @@ var dt = class e {
2871
2842
  return e.closePath(), t && t.value();
2872
2843
  }
2873
2844
  hullPolygon() {
2874
- let e = new rt();
2845
+ let e = new nt();
2875
2846
  return this.renderHull(e), e.value();
2876
2847
  }
2877
2848
  renderTriangle(e, t) {
2878
- let n = t == null ? t = new nt() : void 0, { points: r, triangles: i } = this, a = i[e *= 3] * 2, o = i[e + 1] * 2, s = i[e + 2] * 2;
2849
+ let n = t == null ? t = new tt() : void 0, { points: r, triangles: i } = this, a = i[e *= 3] * 2, o = i[e + 1] * 2, s = i[e + 2] * 2;
2879
2850
  return t.moveTo(r[a], r[a + 1]), t.lineTo(r[o], r[o + 1]), t.lineTo(r[s], r[s + 1]), t.closePath(), n && n.value();
2880
2851
  }
2881
2852
  *trianglePolygons() {
@@ -2883,11 +2854,11 @@ var dt = class e {
2883
2854
  for (let t = 0, n = e.length / 3; t < n; ++t) yield this.trianglePolygon(t);
2884
2855
  }
2885
2856
  trianglePolygon(e) {
2886
- let t = new rt();
2857
+ let t = new nt();
2887
2858
  return this.renderTriangle(e, t), t.value();
2888
2859
  }
2889
2860
  };
2890
- function ft(e, t, n, r) {
2861
+ function dt(e, t, n, r) {
2891
2862
  let i = e.length, a = new Float64Array(i * 2);
2892
2863
  for (let o = 0; o < i; ++o) {
2893
2864
  let i = e[o];
@@ -2895,20 +2866,20 @@ function ft(e, t, n, r) {
2895
2866
  }
2896
2867
  return a;
2897
2868
  }
2898
- function* pt(e, t, n, r) {
2869
+ function* ft(e, t, n, r) {
2899
2870
  let i = 0;
2900
2871
  for (let a of e) yield t.call(r, a, i, e), yield n.call(r, a, i, e), ++i;
2901
2872
  }
2902
2873
  //#endregion
2903
2874
  //#region src/utils/clusert.mjs
2904
- function mt(e, t, n, r) {
2875
+ function pt(e, t, n, r) {
2905
2876
  return 1 + (e[t][0] === 0 || e[n][0] === 0 || e[r][0] === 0 ? 1 : 0);
2906
2877
  }
2907
- function ht(e, t, n, r, i, a) {
2878
+ function mt(e, t, n, r, i, a) {
2908
2879
  let o = Math.hypot(n - i, r - a), s = Math.hypot(e - i, t - a), c = Math.hypot(e - n, t - r), l = Math.abs((n - e) * (a - t) - (i - e) * (r - t)) / 2;
2909
2880
  return l === 0 ? Infinity : o * s * c / (4 * l);
2910
2881
  }
2911
- function gt(e) {
2882
+ function ht(e) {
2912
2883
  if (!e || e.length < 3) return [];
2913
2884
  let t = /* @__PURE__ */ new Set(), n = [];
2914
2885
  for (let r of e) {
@@ -2916,12 +2887,12 @@ function gt(e) {
2916
2887
  t.has(e) || (t.add(e), n.push(r));
2917
2888
  }
2918
2889
  if (n.length < 3) return [];
2919
- let { triangles: r } = new dt(Float64Array.from(n.flat()));
2890
+ let { triangles: r } = new ut(Float64Array.from(n.flat()));
2920
2891
  if (!r.length) return [];
2921
2892
  let i = /* @__PURE__ */ new Map(), a = (e, t) => e < t ? `${e}_${t}` : `${t}_${e}`;
2922
2893
  for (let e = 0; e < r.length; e += 3) {
2923
2894
  let t = r[e], o = r[e + 1], s = r[e + 2], [c, l] = n[t], [u, d] = n[o], [f, p] = n[s];
2924
- if (ht(c, l, u, d, f, p) <= 1 / mt(n, t, o, s)) for (let [e, n] of [
2895
+ if (mt(c, l, u, d, f, p) <= 1 / pt(n, t, o, s)) for (let [e, n] of [
2925
2896
  [t, o],
2926
2897
  [o, s],
2927
2898
  [s, t]
@@ -2946,7 +2917,7 @@ function gt(e) {
2946
2917
  }
2947
2918
  //#endregion
2948
2919
  //#region node_modules/three/examples/jsm/math/OBB.js
2949
- var K = {
2920
+ var q = {
2950
2921
  c: null,
2951
2922
  u: [
2952
2923
  new d(),
@@ -2954,7 +2925,7 @@ var K = {
2954
2925
  new d()
2955
2926
  ],
2956
2927
  e: []
2957
- }, q = {
2928
+ }, J = {
2958
2929
  c: null,
2959
2930
  u: [
2960
2931
  new d(),
@@ -2962,15 +2933,15 @@ var K = {
2962
2933
  new d()
2963
2934
  ],
2964
2935
  e: []
2965
- }, J = [
2936
+ }, Y = [
2966
2937
  [],
2967
2938
  [],
2968
2939
  []
2969
- ], Y = [
2940
+ ], X = [
2970
2941
  [],
2971
2942
  [],
2972
2943
  []
2973
- ], X = [], _t = new d(), vt = new d(), yt = new d(), Z = new d(), bt = new d(), xt = new d(), Q = new a(), St = new t(), Ct = new o(), wt = new o(), Tt = new l(), Et = class {
2944
+ ], Z = [], gt = new d(), _t = new d(), vt = new d(), Q = new d(), yt = new d(), bt = new d(), xt = new a(), St = new t(), Ct = new o(), wt = new o(), Tt = new l(), Et = class {
2974
2945
  constructor(e = new d(), t = new d(), n = new a()) {
2975
2946
  this.center = e, this.halfSize = t, this.rotation = n;
2976
2947
  }
@@ -2988,43 +2959,43 @@ var K = {
2988
2959
  }
2989
2960
  clampPoint(e, t) {
2990
2961
  let n = this.halfSize;
2991
- Z.subVectors(e, this.center), this.rotation.extractBasis(_t, vt, yt), t.copy(this.center);
2992
- let r = i.clamp(Z.dot(_t), -n.x, n.x);
2993
- t.add(_t.multiplyScalar(r));
2994
- let a = i.clamp(Z.dot(vt), -n.y, n.y);
2995
- t.add(vt.multiplyScalar(a));
2996
- let o = i.clamp(Z.dot(yt), -n.z, n.z);
2997
- return t.add(yt.multiplyScalar(o)), t;
2962
+ Q.subVectors(e, this.center), this.rotation.extractBasis(gt, _t, vt), t.copy(this.center);
2963
+ let r = i.clamp(Q.dot(gt), -n.x, n.x);
2964
+ t.add(gt.multiplyScalar(r));
2965
+ let a = i.clamp(Q.dot(_t), -n.y, n.y);
2966
+ t.add(_t.multiplyScalar(a));
2967
+ let o = i.clamp(Q.dot(vt), -n.z, n.z);
2968
+ return t.add(vt.multiplyScalar(o)), t;
2998
2969
  }
2999
2970
  containsPoint(e) {
3000
- return Z.subVectors(e, this.center), this.rotation.extractBasis(_t, vt, yt), Math.abs(Z.dot(_t)) <= this.halfSize.x && Math.abs(Z.dot(vt)) <= this.halfSize.y && Math.abs(Z.dot(yt)) <= this.halfSize.z;
2971
+ return Q.subVectors(e, this.center), this.rotation.extractBasis(gt, _t, vt), Math.abs(Q.dot(gt)) <= this.halfSize.x && Math.abs(Q.dot(_t)) <= this.halfSize.y && Math.abs(Q.dot(vt)) <= this.halfSize.z;
3001
2972
  }
3002
2973
  intersectsBox3(e) {
3003
2974
  return this.intersectsOBB(Dt.fromBox3(e));
3004
2975
  }
3005
2976
  intersectsSphere(e) {
3006
- return this.clampPoint(e.center, xt), xt.distanceToSquared(e.center) <= e.radius * e.radius;
2977
+ return this.clampPoint(e.center, bt), bt.distanceToSquared(e.center) <= e.radius * e.radius;
3007
2978
  }
3008
2979
  intersectsOBB(e, t = 2 ** -52) {
3009
- K.c = this.center, K.e[0] = this.halfSize.x, K.e[1] = this.halfSize.y, K.e[2] = this.halfSize.z, this.rotation.extractBasis(K.u[0], K.u[1], K.u[2]), q.c = e.center, q.e[0] = e.halfSize.x, q.e[1] = e.halfSize.y, q.e[2] = e.halfSize.z, e.rotation.extractBasis(q.u[0], q.u[1], q.u[2]);
3010
- for (let e = 0; e < 3; e++) for (let t = 0; t < 3; t++) J[e][t] = K.u[e].dot(q.u[t]);
3011
- Z.subVectors(q.c, K.c), X[0] = Z.dot(K.u[0]), X[1] = Z.dot(K.u[1]), X[2] = Z.dot(K.u[2]);
3012
- for (let e = 0; e < 3; e++) for (let n = 0; n < 3; n++) Y[e][n] = Math.abs(J[e][n]) + t;
2980
+ q.c = this.center, q.e[0] = this.halfSize.x, q.e[1] = this.halfSize.y, q.e[2] = this.halfSize.z, this.rotation.extractBasis(q.u[0], q.u[1], q.u[2]), J.c = e.center, J.e[0] = e.halfSize.x, J.e[1] = e.halfSize.y, J.e[2] = e.halfSize.z, e.rotation.extractBasis(J.u[0], J.u[1], J.u[2]);
2981
+ for (let e = 0; e < 3; e++) for (let t = 0; t < 3; t++) Y[e][t] = q.u[e].dot(J.u[t]);
2982
+ Q.subVectors(J.c, q.c), Z[0] = Q.dot(q.u[0]), Z[1] = Q.dot(q.u[1]), Z[2] = Q.dot(q.u[2]);
2983
+ for (let e = 0; e < 3; e++) for (let n = 0; n < 3; n++) X[e][n] = Math.abs(Y[e][n]) + t;
3013
2984
  let n, r;
3014
- for (let e = 0; e < 3; e++) if (n = K.e[e], r = q.e[0] * Y[e][0] + q.e[1] * Y[e][1] + q.e[2] * Y[e][2], Math.abs(X[e]) > n + r) return !1;
3015
- for (let e = 0; e < 3; e++) if (n = K.e[0] * Y[0][e] + K.e[1] * Y[1][e] + K.e[2] * Y[2][e], r = q.e[e], Math.abs(X[0] * J[0][e] + X[1] * J[1][e] + X[2] * J[2][e]) > n + r) return !1;
3016
- return n = K.e[1] * Y[2][0] + K.e[2] * Y[1][0], r = q.e[1] * Y[0][2] + q.e[2] * Y[0][1], !(Math.abs(X[2] * J[1][0] - X[1] * J[2][0]) > n + r || (n = K.e[1] * Y[2][1] + K.e[2] * Y[1][1], r = q.e[0] * Y[0][2] + q.e[2] * Y[0][0], Math.abs(X[2] * J[1][1] - X[1] * J[2][1]) > n + r) || (n = K.e[1] * Y[2][2] + K.e[2] * Y[1][2], r = q.e[0] * Y[0][1] + q.e[1] * Y[0][0], Math.abs(X[2] * J[1][2] - X[1] * J[2][2]) > n + r) || (n = K.e[0] * Y[2][0] + K.e[2] * Y[0][0], r = q.e[1] * Y[1][2] + q.e[2] * Y[1][1], Math.abs(X[0] * J[2][0] - X[2] * J[0][0]) > n + r) || (n = K.e[0] * Y[2][1] + K.e[2] * Y[0][1], r = q.e[0] * Y[1][2] + q.e[2] * Y[1][0], Math.abs(X[0] * J[2][1] - X[2] * J[0][1]) > n + r) || (n = K.e[0] * Y[2][2] + K.e[2] * Y[0][2], r = q.e[0] * Y[1][1] + q.e[1] * Y[1][0], Math.abs(X[0] * J[2][2] - X[2] * J[0][2]) > n + r) || (n = K.e[0] * Y[1][0] + K.e[1] * Y[0][0], r = q.e[1] * Y[2][2] + q.e[2] * Y[2][1], Math.abs(X[1] * J[0][0] - X[0] * J[1][0]) > n + r) || (n = K.e[0] * Y[1][1] + K.e[1] * Y[0][1], r = q.e[0] * Y[2][2] + q.e[2] * Y[2][0], Math.abs(X[1] * J[0][1] - X[0] * J[1][1]) > n + r) || (n = K.e[0] * Y[1][2] + K.e[1] * Y[0][2], r = q.e[0] * Y[2][1] + q.e[1] * Y[2][0], Math.abs(X[1] * J[0][2] - X[0] * J[1][2]) > n + r));
2985
+ for (let e = 0; e < 3; e++) if (n = q.e[e], r = J.e[0] * X[e][0] + J.e[1] * X[e][1] + J.e[2] * X[e][2], Math.abs(Z[e]) > n + r) return !1;
2986
+ for (let e = 0; e < 3; e++) if (n = q.e[0] * X[0][e] + q.e[1] * X[1][e] + q.e[2] * X[2][e], r = J.e[e], Math.abs(Z[0] * Y[0][e] + Z[1] * Y[1][e] + Z[2] * Y[2][e]) > n + r) return !1;
2987
+ return n = q.e[1] * X[2][0] + q.e[2] * X[1][0], r = J.e[1] * X[0][2] + J.e[2] * X[0][1], !(Math.abs(Z[2] * Y[1][0] - Z[1] * Y[2][0]) > n + r || (n = q.e[1] * X[2][1] + q.e[2] * X[1][1], r = J.e[0] * X[0][2] + J.e[2] * X[0][0], Math.abs(Z[2] * Y[1][1] - Z[1] * Y[2][1]) > n + r) || (n = q.e[1] * X[2][2] + q.e[2] * X[1][2], r = J.e[0] * X[0][1] + J.e[1] * X[0][0], Math.abs(Z[2] * Y[1][2] - Z[1] * Y[2][2]) > n + r) || (n = q.e[0] * X[2][0] + q.e[2] * X[0][0], r = J.e[1] * X[1][2] + J.e[2] * X[1][1], Math.abs(Z[0] * Y[2][0] - Z[2] * Y[0][0]) > n + r) || (n = q.e[0] * X[2][1] + q.e[2] * X[0][1], r = J.e[0] * X[1][2] + J.e[2] * X[1][0], Math.abs(Z[0] * Y[2][1] - Z[2] * Y[0][1]) > n + r) || (n = q.e[0] * X[2][2] + q.e[2] * X[0][2], r = J.e[0] * X[1][1] + J.e[1] * X[1][0], Math.abs(Z[0] * Y[2][2] - Z[2] * Y[0][2]) > n + r) || (n = q.e[0] * X[1][0] + q.e[1] * X[0][0], r = J.e[1] * X[2][2] + J.e[2] * X[2][1], Math.abs(Z[1] * Y[0][0] - Z[0] * Y[1][0]) > n + r) || (n = q.e[0] * X[1][1] + q.e[1] * X[0][1], r = J.e[0] * X[2][2] + J.e[2] * X[2][0], Math.abs(Z[1] * Y[0][1] - Z[0] * Y[1][1]) > n + r) || (n = q.e[0] * X[1][2] + q.e[1] * X[0][2], r = J.e[0] * X[2][1] + J.e[1] * X[2][0], Math.abs(Z[1] * Y[0][2] - Z[0] * Y[1][2]) > n + r));
3017
2988
  }
3018
2989
  intersectsPlane(e) {
3019
- this.rotation.extractBasis(_t, vt, yt);
3020
- let t = this.halfSize.x * Math.abs(e.normal.dot(_t)) + this.halfSize.y * Math.abs(e.normal.dot(vt)) + this.halfSize.z * Math.abs(e.normal.dot(yt)), n = e.normal.dot(this.center) - e.constant;
2990
+ this.rotation.extractBasis(gt, _t, vt);
2991
+ let t = this.halfSize.x * Math.abs(e.normal.dot(gt)) + this.halfSize.y * Math.abs(e.normal.dot(_t)) + this.halfSize.z * Math.abs(e.normal.dot(vt)), n = e.normal.dot(this.center) - e.constant;
3021
2992
  return Math.abs(n) <= t;
3022
2993
  }
3023
2994
  intersectRay(e, t) {
3024
- return this.getSize(bt), St.setFromCenterAndSize(Z.set(0, 0, 0), bt), Ct.setFromMatrix3(this.rotation), Ct.setPosition(this.center), wt.copy(Ct).invert(), Tt.copy(e).applyMatrix4(wt), Tt.intersectBox(St, t) ? t.applyMatrix4(Ct) : null;
2995
+ return this.getSize(yt), St.setFromCenterAndSize(Q.set(0, 0, 0), yt), Ct.setFromMatrix3(this.rotation), Ct.setPosition(this.center), wt.copy(Ct).invert(), Tt.copy(e).applyMatrix4(wt), Tt.intersectBox(St, t) ? t.applyMatrix4(Ct) : null;
3025
2996
  }
3026
2997
  intersectsRay(e) {
3027
- return this.intersectRay(e, Z) !== null;
2998
+ return this.intersectRay(e, Q) !== null;
3028
2999
  }
3029
3000
  fromBox3(e) {
3030
3001
  return e.getCenter(this.center), e.getSize(this.halfSize).multiplyScalar(.5), this.rotation.identity(), this;
@@ -3033,10 +3004,10 @@ var K = {
3033
3004
  return e.center.equals(this.center) && e.halfSize.equals(this.halfSize) && e.rotation.equals(this.rotation);
3034
3005
  }
3035
3006
  applyMatrix4(e) {
3036
- let t = e.elements, n = Z.set(t[0], t[1], t[2]).length(), r = Z.set(t[4], t[5], t[6]).length(), i = Z.set(t[8], t[9], t[10]).length();
3037
- e.determinant() < 0 && (n = -n), Q.setFromMatrix4(e);
3007
+ let t = e.elements, n = Q.set(t[0], t[1], t[2]).length(), r = Q.set(t[4], t[5], t[6]).length(), i = Q.set(t[8], t[9], t[10]).length();
3008
+ e.determinant() < 0 && (n = -n), xt.setFromMatrix4(e);
3038
3009
  let a = 1 / n, o = 1 / r, s = 1 / i;
3039
- return Q.elements[0] *= a, Q.elements[1] *= a, Q.elements[2] *= a, Q.elements[3] *= o, Q.elements[4] *= o, Q.elements[5] *= o, Q.elements[6] *= s, Q.elements[7] *= s, Q.elements[8] *= s, this.rotation.multiply(Q), this.halfSize.x *= n, this.halfSize.y *= r, this.halfSize.z *= i, Z.setFromMatrixPosition(e), this.center.add(Z), this;
3010
+ return xt.elements[0] *= a, xt.elements[1] *= a, xt.elements[2] *= a, xt.elements[3] *= o, xt.elements[4] *= o, xt.elements[5] *= o, xt.elements[6] *= s, xt.elements[7] *= s, xt.elements[8] *= s, this.rotation.multiply(xt), this.halfSize.x *= n, this.halfSize.y *= r, this.halfSize.z *= i, Q.setFromMatrixPosition(e), this.center.add(Q), this;
3040
3011
  }
3041
3012
  }, Dt = new Et(), $ = 6371008.8, Ot = {
3042
3013
  centimeters: $ * 100,
@@ -4055,7 +4026,7 @@ var Gn = (t) => {
4055
4026
  let a = t[i].points.map((e) => [e.x, e.y]), o = Un(t[i].points), s = t[i].obj_id;
4056
4027
  s = s.replace(/calcony railing/g, "balcony railing").replace(/glass balcony railing/g, "balcony railing").replace(/metal balcony railing/g, "balcony railing").replace(/temporary construction guardrail/g, "balcony railing"), s.split("_").slice(1, 3).join("_").split(".")[0].split("_")[0];
4057
4028
  let c = s.indexOf("_") + 1, l = s.lastIndexOf("_"), u = s.substring(c, l);
4058
- if (u !== "floor") continue;
4029
+ if (u === "wall") continue;
4059
4030
  let d = [];
4060
4031
  for (let n = 0; n < t[i].points.length; n++) d.push(new e.Vector3(t[i].points[n].x, t[i].points[n].y, t[i].points[n].z));
4061
4032
  let f = -99999;
@@ -4076,7 +4047,7 @@ var Gn = (t) => {
4076
4047
  }
4077
4048
  let p = {
4078
4049
  points: d,
4079
- path: gt(a),
4050
+ path: ht(a),
4080
4051
  h: o.h,
4081
4052
  minz: o.minz,
4082
4053
  maxz: o.maxz,
@@ -4130,7 +4101,7 @@ var Gn = (t) => {
4130
4101
  obb: t[e].obb.clone()
4131
4102
  };
4132
4103
  for (let i = e + 1; i < t.length; i++) if (!(t[i].obb == null || r.includes(i)) && n.obb.intersectsOBB(t[i].obb)) {
4133
- r.push(i), n.points.push(...t[i].points), n.path = gt(n.points.map((e) => [e.x, e.y]));
4104
+ r.push(i), n.points.push(...t[i].points), n.path = ht(n.points.map((e) => [e.x, e.y]));
4134
4105
  let a = Un(n.points);
4135
4106
  n.h = a.h, n.minz = a.minz, n.maxz = a.maxz, n.center = {
4136
4107
  x: a.x,
@@ -4249,11 +4220,29 @@ var Gn = (t) => {
4249
4220
  let n = new e.Vector3();
4250
4221
  i[t].obb.getSize(n), (n.x < .1 || n.y < .1) && (i[t].isDel = !0);
4251
4222
  }
4252
- r === "balcony railing" && (Math.abs(n - a) < .4 && (i[t].isDel = !0), (a < s && Math.abs(a - s) > 1 || a > s && Math.abs(a - s) > 1) && (i[t].isDel = !0), n < s && (i[t].isDel = !0));
4223
+ r === "balcony railing" && (Math.abs(n - a) < .4 && (i[t].isDel = !0), (a < s && Math.abs(a - s) > 1 || a > s && Math.abs(a - s) > 1) && (i[t].isDel = !0), n < s && (i[t].isDel = !0)), r === "people" && (Math.abs(n - a) < 1 && (i[t].isDel = !0), a > s && a - s > .3 && (i[t].isDel = !0), n < s && (i[t].isDel = !0));
4253
4224
  }
4254
4225
  }
4255
4226
  for (let e = 0; e < n.length; e++) n[e].array = n[e].array.filter((e) => !e.isDel);
4256
- return n;
4227
+ let i = [];
4228
+ for (let t = 0; t < n.length; t++) {
4229
+ let r = n[t].array;
4230
+ for (let t = 0; t < r.length; t++) i.push({
4231
+ obbBox: r[t].obb,
4232
+ box: new e.Box3().setFromPoints(r[t].points),
4233
+ category: r[t].type,
4234
+ center: {
4235
+ x: r[t].center.x,
4236
+ y: r[t].center.y,
4237
+ z: (r[t].minz + r[t].maxz) / 2
4238
+ },
4239
+ name: r[t].obj_id,
4240
+ obj_id: r[t].obj_id,
4241
+ pcdPoints: r[t].points,
4242
+ positionArr: r[t].positionArr
4243
+ });
4244
+ }
4245
+ return i;
4257
4246
  };
4258
4247
  //#endregion
4259
- export { z as classifySegments, ge as getAllGeometry, Oe as getBeamLine, Ae as getColLine, ke as getMainBeamLine, Gn as getMergeMeaning, I as getParallelism, ie as getPointCloudMinMax, ne as getPointCoverageOnQuad, j as isParallel, L as perpendicularInfo, oe as removeNoisePoints, O as segmentsIntersect2D, _e as updateStEdPoint, De as usegetBeamLine };
4248
+ export { z as classifySegments, he as getAllGeometry, De as getBeamLine, ke as getColLine, Oe as getMainBeamLine, Gn as getMergeMeaning, I as getParallelism, re as getPointCloudMinMax, te as getPointCoverageOnQuad, j as isParallel, L as perpendicularInfo, ae as removeNoisePoints, O as segmentsIntersect2D, ge as updateStEdPoint, Ee as usegetBeamLine };