rm-graphical-computing 1.0.38 → 1.0.40

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,44 +560,49 @@ 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();
595
595
  }
596
596
  e.dispose();
597
597
  }
598
- //#endregion
599
- //#region src/geometry/handleWallSegment.mjs
600
- var pe = class {
598
+ var fe = (e, t = .001) => {
599
+ let n = /* @__PURE__ */ new Map(), r = [];
600
+ for (let i of e) {
601
+ let e = `${Math.round(i.x / t)},${Math.round(i.y / t)},${Math.round(i.z / t)}`;
602
+ n.has(e) || (n.set(e, !0), r.push(i));
603
+ }
604
+ return r;
605
+ }, pe = class {
601
606
  results;
602
607
  clusterResults;
603
608
  constructor() {
@@ -1087,7 +1092,7 @@ var pe = class {
1087
1092
  let i = t[r], a = [];
1088
1093
  i.originalPoints.forEach((t) => {
1089
1094
  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)) {
1095
+ for (let e = 0; e < a.length; e++) if (H(n, a[e], .01)) {
1091
1096
  r = !0;
1092
1097
  break;
1093
1098
  }
@@ -1108,7 +1113,7 @@ var pe = class {
1108
1113
  });
1109
1114
  let g = new e.BufferGeometry();
1110
1115
  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(),
1116
+ color: le(),
1112
1117
  size: .02
1113
1118
  })));
1114
1119
  let [_, v] = Ee(p, {
@@ -1237,7 +1242,7 @@ function Ee(e, t = {}) {
1237
1242
  //#endregion
1238
1243
  //#region src/geometry/beamLine.mjs
1239
1244
  var De = async (t, n, r, i) => {
1240
- le(i);
1245
+ ce(i);
1241
1246
  let a = await fetch(t);
1242
1247
  if (!a) return;
1243
1248
  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();
@@ -1331,7 +1336,7 @@ var De = async (t, n, r, i) => {
1331
1336
  });
1332
1337
  let r = new e.BufferGeometry();
1333
1338
  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(),
1339
+ color: le(),
1335
1340
  size: .02
1336
1341
  })));
1337
1342
  let i = [];
@@ -1421,7 +1426,7 @@ var De = async (t, n, r, i) => {
1421
1426
  lineIndexGroup: m
1422
1427
  };
1423
1428
  }, Oe = async (t, n, r, i) => {
1424
- if (oe(t, i), t.length <= 0 || n.length <= 0) return t;
1429
+ if (ae(t, i), t.length <= 0 || n.length <= 0) return t;
1425
1430
  r ||= [];
1426
1431
  for (let n of t) {
1427
1432
  let t = [];
@@ -1559,170 +1564,137 @@ var De = async (t, n, r, i) => {
1559
1564
  a.doorAndBeamData = [], a.completePointAreaPercentage = -1;
1560
1565
  let o = new e.Box3();
1561
1566
  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;
1567
+ let m = o.max.z;
1568
+ o.min.z;
1569
+ 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
1570
  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();
1571
+ let { facePoints: y, boxArea: b, totalInPlaneNum: x } = F(o.points, o.gridWidth, o.gridHeight, o.centerPts);
1572
+ if (!y || y.length <= 0) continue;
1573
+ y[0].distanceTo(y[1]);
1574
+ 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
1575
  o.points.forEach((e) => {
1569
- D.closestPointToPoint(e, !0, A).distanceTo(e) < o.gridHeight + .01 && k.push(e);
1576
+ E.closestPointToPoint(e, !0, k).distanceTo(e) < o.gridHeight + .01 && D.push(e);
1570
1577
  });
1571
- let M = [], N = [];
1578
+ let A = [], M = [];
1572
1579
  for (;;) {
1573
1580
  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;
1581
+ for (let t = 0; t < D.length; t++) M.includes(t) || e.length == 0 && (e.push(D[t]), M.push(t));
1582
+ for (let t = 0; t < D.length; t++) if (!M.includes(t)) {
1583
+ for (let n = 0; n < e.length; n++) if (D[t].distanceTo(e[n]) < o.gridWidth + .01) {
1584
+ e.push(D[t]), M.push(t), t = -1;
1578
1585
  break;
1579
1586
  }
1580
1587
  }
1581
1588
  if (e.length == 0) break;
1582
- M.push(e);
1589
+ A.push(e);
1583
1590
  }
1584
- let P = [];
1585
- for (let t = 0; t < M.length; t++) {
1591
+ let N = [];
1592
+ for (let t = 0; t < A.length; t++) {
1586
1593
  let n = {
1587
1594
  lineSt: new e.Vector3(),
1588
1595
  lineEd: new e.Vector3(),
1589
1596
  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));
1597
+ }, r = se(A[t]);
1598
+ 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
1599
  }
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;
1600
+ v += o.area;
1601
+ let P = 0;
1602
+ 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++) {
1603
+ 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;
1604
+ if (x < 1.5 || m < y.facePoints[2].z || C > _ / 3 * 2) continue;
1605
+ 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;
1606
+ if (Math.abs(y.facePoints[0].z - a.start.z) < .25) {
1607
+ if (b > .17 && a.length > .5) {
1608
+ let n = V(h, M), r = V(h, P), o = V(g, M), s = V(g, P), c = .1;
1602
1609
  if (n < c || r < c) {
1603
- let { newOriginalPoints: r } = ae(N, F, a.originalPoints), o = [], s = [];
1610
+ let { newOriginalPoints: r } = ie(M, P, a.originalPoints), o = [], s = [];
1604
1611
  if (r.forEach((e) => {
1605
- e.z >= A.z ? o.push(e) : e.z <= N.z && s.push(e);
1612
+ e.z >= k.z ? o.push(e) : e.z <= M.z && s.push(e);
1606
1613
  }), 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;
1614
+ 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
1615
  for (let n = 0; n < t.length; n++) {
1609
1616
  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;
1617
+ 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);
1618
+ if (m != null) {
1619
+ if (h && h.angle > 85) {
1620
+ let e = m.point.distanceTo(r);
1621
+ if (m.point.distanceTo(o), e < .3) {
1622
+ p = !0, u = Infinity, d = -1;
1616
1623
  break;
1617
1624
  }
1618
1625
  }
1619
1626
  continue;
1620
1627
  }
1621
- if (m && m.angle > 85) {
1628
+ if (h && h.angle > 85) {
1622
1629
  let t = I(r, o, new e.Line3(a, c).closestPointToPoint(r, !0, l), r);
1623
1630
  if (!t || t.direction != "same") continue;
1624
1631
  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
1632
  if (m == null) continue;
1626
1633
  let h = r.distanceTo(m.point);
1627
1634
  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);
1635
+ } else if (h && h.angle < 5) {
1636
+ 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
1637
  if (r < .08 || i < .08 || o < .08 || s < .08) {
1631
1638
  f = !0, u = Infinity, d = -1;
1632
1639
  break;
1633
1640
  }
1634
1641
  }
1635
1642
  }
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
- }
1643
+ 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)));
1644
+ else if (!f && !p) continue;
1656
1645
  } else continue;
1657
- } else if (o < c || s < c) {
1658
- let { newOriginalPoints: n } = ae(N, F, a.originalPoints), r = [], s = [];
1646
+ }
1647
+ if (o < c || s < c) {
1648
+ let { newOriginalPoints: n } = ie(M, P, a.originalPoints), r = [], s = [];
1659
1649
  if (n.forEach((e) => {
1660
- e.z >= A.z ? r.push(e) : e.z <= N.z && s.push(e);
1650
+ e.z >= k.z ? r.push(e) : e.z <= M.z && s.push(e);
1661
1651
  }), 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;
1652
+ 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
1653
  for (let a = 0; a < t.length; a++) {
1664
1654
  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;
1655
+ 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);
1656
+ if (m != null) {
1657
+ if (h && h.angle > 85 && (m.point.distanceTo(n), m.point.distanceTo(r) < .3)) {
1658
+ p = !0, u = Infinity, d = -1;
1669
1659
  break;
1670
1660
  }
1671
1661
  continue;
1672
1662
  }
1673
- if (m && m.angle > 85) {
1663
+ if (h && h.angle > 85) {
1674
1664
  let t = I(r, n, new e.Line3(o, c).closestPointToPoint(r, !0, l), r);
1675
1665
  if (!t || t.direction != "same") continue;
1676
1666
  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
1667
  if (m == null) continue;
1678
1668
  let h = r.distanceTo(m.point);
1679
1669
  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);
1670
+ } else if (h && h.angle < 5) {
1671
+ 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
1672
  if (r < .08 || i < .08 || a < .08 || s < .08) {
1683
1673
  f = !0, u = Infinity, d = -1;
1684
1674
  break;
1685
1675
  }
1686
1676
  }
1687
1677
  }
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
- }
1678
+ 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)));
1679
+ else if (!f && !p) continue;
1708
1680
  } else continue;
1709
1681
  }
1710
- x = M.distanceTo(A);
1682
+ b = A.distanceTo(k);
1711
1683
  }
1712
- if (C < 85 && x > .31 || x > .7 && S > v - v / 3) {
1684
+ if (S < 85 && b > .3 || b > .7 && x > _ - _ / 3) {
1713
1685
  let t = !1;
1714
1686
  for (let r = 0; r < n.length; r++) {
1715
1687
  let i = r + 1;
1716
1688
  if (i >= n.length) continue;
1717
1689
  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) {
1690
+ 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
1691
  t = !0;
1720
1692
  break;
1721
1693
  }
1722
1694
  }
1723
1695
  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) {
1696
+ 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;
1697
+ if (Math.abs(y.facePoints[2].z - s[t].maxZ), l) {
1726
1698
  let l = z(n.clone(), i.clone(), o.clone(), c.clone(), { distanceThreshold: 2 });
1727
1699
  if (l && l.type == "collinear_gap") {
1728
1700
  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 +1704,173 @@ var De = async (t, n, r, i) => {
1732
1704
  let e = o.distanceTo(i), t = c.distanceTo(i);
1733
1705
  if (e > .2 && t > .2) continue;
1734
1706
  }
1735
- E = !0, D = !0, k.push(s[t].index), s[t].isFind = !0, te = t, r[s[t].index].isFindBeam = !0;
1707
+ T = !0, E = !0, D.push(s[t].index), s[t].isFind = !0, B = t, r[s[t].index].isFindBeam = !0;
1736
1708
  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);
1709
+ 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
1710
  }
1739
1711
  } else if (l && l.type == "collinear_overlap" && l.maxPerpendicularDistance < .35) {
1740
1712
  let a = o.distanceTo(c), u = i.distanceTo(n);
1741
1713
  if (Math.abs(a - l.overlap) < .25 || Math.abs(u - l.overlap) < .25) {
1742
1714
  if (u > a && Math.abs(u - l.overlap) > 1) {
1743
1715
  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);
1716
+ 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
1717
  }
1746
- E = !0, D = !0, k.push(s[t].index), s[t].isFind = !0, r[s[t].index].isFindBeam = !0, te = t;
1718
+ T = !0, E = !0, D.push(s[t].index), s[t].isFind = !0, r[s[t].index].isFindBeam = !0, B = t;
1747
1719
  }
1748
1720
  }
1749
1721
  }
1750
1722
  }
1751
- if (!D) for (let t = 0; t < s.length; t++) {
1723
+ if (!E) for (let t = 0; t < s.length; t++) {
1752
1724
  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);
1725
+ 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);
1726
+ (f < p || m < p || h < p || g < p || d) && (r[s[t].index].isFindBeam = !0, T = !0, s[t].isFind = !0, B = t);
1755
1727
  }
1756
- (E || t || Math.abs(S - v) > .1 && S > v / 2 && x > .3 && Math.abs(h - a.start.z) < .4) && (T = !0);
1728
+ (T || t || Math.abs(x - _) > .1 && x > _ / 2 && b > .3) && (w = !0);
1757
1729
  }
1758
1730
  }
1759
- if (T) {
1731
+ if (w) {
1760
1732
  let n = !1;
1761
1733
  for (let e = 0; e < d.length; e++) {
1762
- let t = z(d[e].start, d[e].end, N, F);
1734
+ let t = z(d[e].start, d[e].end, M, P);
1763
1735
  if (t && t.type == "collinear_overlap" && t.maxPerpendicularDistance < .01) {
1764
1736
  n = !0;
1765
1737
  break;
1766
1738
  }
1767
1739
  }
1768
1740
  if (n) {
1769
- te != -1 && (r[s[te].index].isFindBeam = !1, s[te].isFind = !1);
1741
+ B != -1 && (r[s[B].index].isFindBeam = !1, s[B].isFind = !1);
1770
1742
  continue;
1771
1743
  }
1772
1744
  d.push({
1773
- start: N,
1774
- end: F
1745
+ start: M,
1746
+ end: P
1775
1747
  });
1776
1748
  {
1777
1749
  new e.PointsMaterial({
1778
1750
  color: 65535,
1779
1751
  size: .01
1780
1752
  });
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;
1753
+ 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
1754
  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);
1755
+ if (r.z - M.z < x / 2 + .1 && r.z - M.z > x / 2 - .1 && c.push(r), r.z > k.z) {
1756
+ 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
1757
  o && o.parallel && !o.sameDirection && s && s.parallel && !s.sameDirection && l.push(r);
1786
1758
  }
1787
1759
  }), c.length > 0) {
1788
- let { newProjectPoints: a } = ae(N, F, c);
1789
- for (let e of a) e.z = N.z;
1760
+ let { newProjectPoints: a } = ie(M, P, c);
1761
+ for (let e of a) e.z = M.z;
1790
1762
  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);
1763
+ 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
1764
  if (u && u.parallel && u.sameDirection) {
1793
- let e = c.distanceTo(N);
1765
+ let e = c.distanceTo(M);
1794
1766
  e < r && (r = e, o = c);
1795
1767
  } else if (d && d.parallel && d.sameDirection) {
1796
- let e = c.distanceTo(F);
1768
+ let e = c.distanceTo(P);
1797
1769
  e < i && (i = e, s = c);
1798
1770
  }
1799
1771
  });
1800
1772
  }
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);
1773
+ 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) {
1774
+ let { newOnLinePoints: e } = ie(A, k, l);
1803
1775
  for (let t = 0; t < e.length; t++) {
1804
1776
  let n = u.closestPointToPoint(e[t], !0, d).distanceTo(e[t]);
1805
1777
  n > .02 && f > n && (f = n);
1806
1778
  }
1807
- A.z += f, M.z += f, S += f;
1779
+ k.z += f, A.z += f, x += f;
1808
1780
  }
1809
1781
  }
1810
- let p = F.distanceTo(N);
1811
- if (p < .4 && !E || p < .3 && E) continue;
1782
+ let p = P.distanceTo(M);
1783
+ if (p < .4 && !T || p < .3 && T) continue;
1812
1784
  u.includes(i) || u.push(i), a.checkResults[o.index].isDoor = !0;
1813
1785
  let m = "", h = {
1814
1786
  id: c,
1815
- beamStart: A,
1816
- beamEnd: M,
1817
- beamHeight: a.rooftopPz - A.z,
1818
- doorStart: N,
1819
- doorEnd: F,
1820
- doorHeight: S,
1787
+ beamStart: k,
1788
+ beamEnd: A,
1789
+ beamHeight: a.rooftopPz - k.z,
1790
+ doorStart: M,
1791
+ doorEnd: P,
1792
+ doorHeight: x,
1821
1793
  nearId: -1,
1822
1794
  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;
1795
+ isExtend: F,
1796
+ isDoor: T,
1797
+ isPullOutDoor: E,
1798
+ pcbDoorIndexs: D
1799
+ }, g = !1, _ = new e.Vector3(), v = new e.Vector3(), y = -1, S = -1, C = -1;
1828
1800
  for (let n = 0; n < l.length; n++) {
1829
1801
  let r = t[l[n].linesIndex].doorAndBeamData[l[n].doorIndex];
1830
1802
  if (r.nearId != -1) continue;
1831
- let i = I(A.clone(), M.clone(), r.beamStart.clone(), r.beamEnd.clone());
1803
+ let i = I(k.clone(), A.clone(), r.beamStart.clone(), r.beamEnd.clone());
1832
1804
  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) {
1805
+ let t = k.distanceTo(A), i = r.beamStart.distanceTo(r.beamEnd), a = new e.Line3(k.clone(), A.clone());
1806
+ a.start.z = 0, a.end.z = 0;
1807
+ let o = R(r.beamStart, r.beamEnd, !0);
1808
+ 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));
1809
+ 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);
1810
+ if (d < .4 && b != null && !x) {
1839
1811
  r.nearId = c, h.nearId = r.id;
1840
1812
  let e = .8;
1841
1813
  (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;
1814
+ let a = D.some((e) => r.pcbDoorIndexs.includes(e));
1815
+ 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
1816
  break;
1845
1817
  }
1846
1818
  }
1847
1819
  }
1848
- let b = !1;
1820
+ let w = !1;
1849
1821
  if (!g) {
1850
- let a = new e.Line3(N.clone(), F.clone());
1822
+ let a = new e.Line3(M.clone(), P.clone());
1851
1823
  for (let o = 0; o < t.length; o++) {
1852
1824
  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);
1825
+ 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
1826
  if (c && c.maxPerpendicularDistance < .3) {
1855
1827
  for (let i = 0; i < t[o].checkResults.length; i++) {
1856
1828
  let i = [];
1857
1829
  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));
1830
+ t.z > M.z + .2 && t.z < M.z + x / 2 && i.push(new e.Vector3(t.x, t.y, M.z));
1859
1831
  });
1860
- let c = new e.Vector3(), l = [], u = [];
1832
+ let c = new e.Vector3(), u = [], d = [];
1861
1833
  for (let e = 0; e < i.length; e++) {
1862
1834
  let t = a.closestPointToPoint(i[e], !0, c);
1863
- t.distanceTo(i[e]) < .15 && (l.push(i[e]), u.push(t.clone()));
1835
+ t.distanceTo(i[e]) < .15 && (u.push(i[e]), d.push(t.clone()));
1864
1836
  }
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]);
1837
+ for (let e = 0; e < d.length; e++) oe(a, d[e]) && u.push(d[e]);
1838
+ if (u = d, u = fe(u), u.length < 150) continue;
1839
+ let f = se(u);
1840
+ if (f.length == 2) {
1841
+ let e = f[0].distanceTo(f[1]);
1870
1842
  if (Math.abs(e - a.distance()) < .3) {
1871
- n = !0, te != -1 && (r[s[te].index].isFindBeam = !1, s[te].isFind = !1);
1843
+ if (h.beamStart.z > l.maxZ - .03 && b > 1) w = !0;
1844
+ else if (n = !0, B != -1 && (r[s[B].index].isFindBeam = !1, s[B].isFind = !1), S != -1 && C != -1) {
1845
+ let e = t[S].doorAndBeamData[C];
1846
+ e.nearId = -1;
1847
+ }
1872
1848
  break;
1873
1849
  }
1874
1850
  }
1875
1851
  }
1876
1852
  if (n) break;
1877
- } else c && c.type == "collinear_overlap" && c.maxPerpendicularDistance > .3 && c.maxPerpendicularDistance < .7 && (b = !0);
1853
+ } else c && c.type == "collinear_overlap" && c.maxPerpendicularDistance > .3 && c.maxPerpendicularDistance < .7 && (w = !0);
1878
1854
  }
1879
1855
  if (n) continue;
1880
1856
  }
1881
- let C = !1;
1857
+ let N = !1;
1882
1858
  if (y != -1) for (let e = 0; e < f.length && !(f[e].length == 1 && (f[e][0].id == c ? (f[e].push({
1883
1859
  id: y,
1884
1860
  beamStart: _,
1885
1861
  beamEnd: v
1886
- }), C = !0) : f[e][0].id == y && (f[e].push({
1862
+ }), N = !0) : f[e][0].id == y && (f[e].push({
1887
1863
  id: c,
1888
- beamStart: A,
1889
- beamEnd: M
1890
- }), C = !0), C)); e++);
1891
- C || f.push([{
1864
+ beamStart: k,
1865
+ beamEnd: A
1866
+ }), N = !0), N)); e++);
1867
+ N || f.push([{
1892
1868
  id: c,
1893
- beamStart: A,
1894
- beamEnd: M
1869
+ beamStart: k,
1870
+ beamEnd: A
1895
1871
  }]);
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") {
1872
+ let L = h.doorStart.distanceTo(h.doorEnd);
1873
+ if (m = T ? "door" : L > 1.8 || w && L > 1 ? "beam" : "hole", h.type = m, h.nearId != -1 && m == "hole") {
1898
1874
  let e = !1;
1899
1875
  for (let n = 0; n < t.length; n++) if (t[n].doorAndBeamData) {
1900
1876
  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 +1883,12 @@ var De = async (t, n, r, i) => {
1907
1883
  if (a.doorAndBeamData.push(h), l.push({
1908
1884
  linesIndex: i,
1909
1885
  doorIndex: a.doorAndBeamData.length - 1
1910
- }), c++, D && x < 2) break;
1886
+ }), c++, E && b < 2) break;
1911
1887
  }
1912
1888
  }
1913
1889
  }
1914
- let b = a.length * (a.rooftopPz - a.start.z);
1915
- a.completePointAreaPercentage = y / b * 100;
1890
+ let y = a.length * (a.rooftopPz - a.start.z);
1891
+ a.completePointAreaPercentage = v / y * 100;
1916
1892
  }
1917
1893
  if (u.length > 1) for (let n = 0; n < u.length; n++) {
1918
1894
  let r = [];
@@ -1920,14 +1896,14 @@ var De = async (t, n, r, i) => {
1920
1896
  let a = t[u[n]].doorAndBeamData[i].doorStart.clone(), o = t[u[n]].doorAndBeamData[i].doorEnd.clone();
1921
1897
  a.z = o.z = 0;
1922
1898
  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;
1899
+ for (let r = 0; r < u.length; r++) if (n != r) for (let l = 0; l < t[u[r]].doorAndBeamData.length; l++) {
1900
+ let d = t[u[r]].doorAndBeamData[l].doorStart.clone(), f = t[u[r]].doorAndBeamData[l].doorEnd.clone();
1901
+ d.z = f.z = 0, d.distanceTo(f);
1902
+ let p = z(a, o, d, f);
1903
+ if (p.type == "collinear_overlap" && p.maxPerpendicularDistance < .2) {
1904
+ let m = new e.Line3(d, f), h = R(a, o), g = m.closestPointToPoint(h, !0, new e.Vector3()), _ = h.distanceTo(g);
1905
+ if (Math.abs(s - p.overlap) < .1 && _ < .04) {
1906
+ t[u[r]].doorAndBeamData[l].nearId == t[u[n]].doorAndBeamData[i].id && (t[u[r]].doorAndBeamData[l].nearId = -1), c = !0;
1931
1907
  break;
1932
1908
  }
1933
1909
  }
@@ -2084,7 +2060,7 @@ var De = async (t, n, r, i) => {
2084
2060
  size: .01
2085
2061
  });
2086
2062
  for (let r = 0; r < t.length; r++) {
2087
- let i = t[r], { minZ: o, maxZ: s } = ie(i);
2063
+ let i = t[r], { minZ: o, maxZ: s } = re(i);
2088
2064
  if (o == null || s == null) continue;
2089
2065
  i.doorAndBeamData = [], i.completePointAreaPercentage = -1, s - o;
2090
2066
  let c = i.rooftopPz - i.start.z;
@@ -2092,7 +2068,7 @@ var De = async (t, n, r, i) => {
2092
2068
  let l = new e.Vector3(i.start.x, i.start.y, 0), u = new e.Vector3(i.end.x, i.end.y, 0);
2093
2069
  for (let i = 0; i < t.length; i++) {
2094
2070
  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);
2071
+ 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
2072
  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
2073
  let a = R(l, u), s = R(o, c);
2098
2074
  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));
@@ -2117,7 +2093,7 @@ var De = async (t, n, r, i) => {
2117
2093
  if (r == n || i < a || i > o) continue;
2118
2094
  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
2095
  if (!v || v.angle < 85) continue;
2120
- let y = V(g, u), b = V(g, d), x = V(_, u), S = V(_, d);
2096
+ let y = H(g, u), b = H(g, d), x = H(_, u), S = H(_, d);
2121
2097
  if (!(!y && !b && !x && !S)) {
2122
2098
  y || b ? (p = g.clone(), m = _.clone()) : (p = _.clone(), m = g.clone()), h = new e.Vector3().subVectors(m, p).normalize(), h.clone().negate();
2123
2099
  for (let p = 0; p < t.length; p++) {
@@ -2125,7 +2101,7 @@ var De = async (t, n, r, i) => {
2125
2101
  if (p == n || p == r || h < a || h > o) continue;
2126
2102
  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
2103
  if (!b || b.angle < 85) continue;
2128
- let x = V(v, m), S = V(y, m);
2104
+ let x = H(v, m), S = H(y, m);
2129
2105
  if (!x && !S) continue;
2130
2106
  new e.Vector3();
2131
2107
  let C = new e.Vector3(), w = new e.Vector3();
@@ -2137,12 +2113,12 @@ var De = async (t, n, r, i) => {
2137
2113
  if (f == n || f == r || f == p || m < a || m > o) continue;
2138
2114
  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
2115
  if (!_ || _.angle < 85) continue;
2140
- let b = V(h, C), x = V(g, C);
2116
+ let b = H(h, C), x = H(g, C);
2141
2117
  if (!b && !x) continue;
2142
2118
  new e.Vector3();
2143
2119
  let S = new e.Vector3();
2144
2120
  b ? (h.clone(), S = g.clone()) : (g.clone(), S = h.clone());
2145
- let w = V(S, u), T = V(S, d);
2121
+ let w = H(S, u), T = H(S, d);
2146
2122
  if (!w && !T) continue;
2147
2123
  let E = c * i;
2148
2124
  if (!(E < s || E > 2)) {
@@ -2175,7 +2151,7 @@ var De = async (t, n, r, i) => {
2175
2151
  }, 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
2152
  for (let r = 0; r < t.length; r++) {
2177
2153
  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);
2154
+ 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
2155
  if (o || s ? f = !1 : (c || l) && (p = !1), !f && !p) break;
2180
2156
  }
2181
2157
  if (!f && !p) continue;
@@ -2187,7 +2163,7 @@ var De = async (t, n, r, i) => {
2187
2163
  if (r == n || i.has(r) || f < a || f > o) continue;
2188
2164
  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
2165
  if (!g || g.angle < 85) continue;
2190
- let _ = V(p, d), v = V(m, d);
2166
+ let _ = H(p, d), v = H(m, d);
2191
2167
  if (!_ && !v) continue;
2192
2168
  new e.Vector3();
2193
2169
  let y = new e.Vector3();
@@ -2197,7 +2173,7 @@ var De = async (t, n, r, i) => {
2197
2173
  if (d == n || d == r || i.has(d) || g < a || g > o) continue;
2198
2174
  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
2175
  if (!b || b.angle < 85) continue;
2200
- let x = V(_, y), S = V(v, y);
2176
+ let x = H(_, y), S = H(v, y);
2201
2177
  if (!x && !S) continue;
2202
2178
  let C = new e.Vector3(), w = new e.Vector3();
2203
2179
  x ? (C = _.clone(), w = v.clone()) : (C = v.clone(), w = _.clone());
@@ -2206,7 +2182,7 @@ var De = async (t, n, r, i) => {
2206
2182
  let E = !0, D = !0;
2207
2183
  for (let n = 0; n < t.length; n++) {
2208
2184
  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);
2185
+ 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
2186
  if (a || o ? E = !1 : (s || c) && (D = !1), !E && !D) break;
2211
2187
  }
2212
2188
  if (!E && !D) continue;
@@ -2225,7 +2201,7 @@ var De = async (t, n, r, i) => {
2225
2201
  l.indexs.length == 3 && (l.indexs.forEach((e) => i.add(e)), r.threeEdgeRect.push(l));
2226
2202
  }
2227
2203
  return r;
2228
- }, H = 11102230246251565e-32, U = 134217729, je = (3 + 8 * H) * H;
2204
+ }, U = 11102230246251565e-32, W = 134217729, je = (3 + 8 * U) * U;
2229
2205
  function Me(e, t, n, r, i) {
2230
2206
  let a, o, s, c, l = t[0], u = r[0], d = 0, f = 0;
2231
2207
  u > l == u > -l ? (a = l, l = t[++d]) : (a = u, u = r[++f]);
@@ -2240,28 +2216,28 @@ function Ne(e, t) {
2240
2216
  for (let r = 1; r < e; r++) n += t[r];
2241
2217
  return n;
2242
2218
  }
2243
- function W(e) {
2219
+ function G(e) {
2244
2220
  return new Float64Array(e);
2245
2221
  }
2246
2222
  //#endregion
2247
2223
  //#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);
2224
+ var Pe = (3 + 16 * U) * U, Fe = (2 + 12 * U) * U, Ie = (9 + 64 * U) * U * U, Le = G(4), Re = G(8), ze = G(12), Be = G(16), K = G(4);
2249
2225
  function Ve(e, t, n, r, i, a, o) {
2250
2226
  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;
2227
+ 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 - _, 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
2228
  let k = Ne(4, Le), A = Fe * o;
2253
2229
  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];
2230
+ 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;
2231
+ let j = Me(4, Le, 4, K, Re);
2232
+ 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;
2233
+ let M = Me(j, Re, 4, K, ze);
2234
+ 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, Be[Me(M, ze, 4, K, Be) - 1];
2259
2235
  }
2260
2236
  function He(e, t, n, r, i, a) {
2261
2237
  let o = (t - a) * (n - i), s = (e - i) * (r - a), c = o - s, l = Math.abs(o + s);
2262
2238
  return Math.abs(c) >= Pe * l ? c : -Ve(e, t, n, r, i, a, l);
2263
2239
  }
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);
2240
+ (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
2241
  //#endregion
2266
2242
  //#region node_modules/delaunator/index.js
2267
2243
  var Ue = 2 ** -52, We = new Uint32Array(512), Ge = class e {
@@ -2946,7 +2922,7 @@ function gt(e) {
2946
2922
  }
2947
2923
  //#endregion
2948
2924
  //#region node_modules/three/examples/jsm/math/OBB.js
2949
- var K = {
2925
+ var q = {
2950
2926
  c: null,
2951
2927
  u: [
2952
2928
  new d(),
@@ -2954,7 +2930,7 @@ var K = {
2954
2930
  new d()
2955
2931
  ],
2956
2932
  e: []
2957
- }, q = {
2933
+ }, J = {
2958
2934
  c: null,
2959
2935
  u: [
2960
2936
  new d(),
@@ -2962,15 +2938,15 @@ var K = {
2962
2938
  new d()
2963
2939
  ],
2964
2940
  e: []
2965
- }, J = [
2941
+ }, Y = [
2966
2942
  [],
2967
2943
  [],
2968
2944
  []
2969
- ], Y = [
2945
+ ], X = [
2970
2946
  [],
2971
2947
  [],
2972
2948
  []
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 {
2949
+ ], Z = [], _t = new d(), vt = new d(), yt = new d(), Q = new d(), bt = new d(), xt = new d(), St = new a(), Ct = new t(), wt = new o(), Tt = new o(), Et = new l(), Dt = class {
2974
2950
  constructor(e = new d(), t = new d(), n = new a()) {
2975
2951
  this.center = e, this.halfSize = t, this.rotation = n;
2976
2952
  }
@@ -2988,32 +2964,32 @@ var K = {
2988
2964
  }
2989
2965
  clampPoint(e, t) {
2990
2966
  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);
2967
+ Q.subVectors(e, this.center), this.rotation.extractBasis(_t, vt, yt), t.copy(this.center);
2968
+ let r = i.clamp(Q.dot(_t), -n.x, n.x);
2993
2969
  t.add(_t.multiplyScalar(r));
2994
- let a = i.clamp(Z.dot(vt), -n.y, n.y);
2970
+ let a = i.clamp(Q.dot(vt), -n.y, n.y);
2995
2971
  t.add(vt.multiplyScalar(a));
2996
- let o = i.clamp(Z.dot(yt), -n.z, n.z);
2972
+ let o = i.clamp(Q.dot(yt), -n.z, n.z);
2997
2973
  return t.add(yt.multiplyScalar(o)), t;
2998
2974
  }
2999
2975
  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;
2976
+ return Q.subVectors(e, this.center), this.rotation.extractBasis(_t, vt, yt), Math.abs(Q.dot(_t)) <= this.halfSize.x && Math.abs(Q.dot(vt)) <= this.halfSize.y && Math.abs(Q.dot(yt)) <= this.halfSize.z;
3001
2977
  }
3002
2978
  intersectsBox3(e) {
3003
- return this.intersectsOBB(Dt.fromBox3(e));
2979
+ return this.intersectsOBB(Ot.fromBox3(e));
3004
2980
  }
3005
2981
  intersectsSphere(e) {
3006
2982
  return this.clampPoint(e.center, xt), xt.distanceToSquared(e.center) <= e.radius * e.radius;
3007
2983
  }
3008
2984
  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;
2985
+ 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]);
2986
+ for (let e = 0; e < 3; e++) for (let t = 0; t < 3; t++) Y[e][t] = q.u[e].dot(J.u[t]);
2987
+ 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]);
2988
+ for (let e = 0; e < 3; e++) for (let n = 0; n < 3; n++) X[e][n] = Math.abs(Y[e][n]) + t;
3013
2989
  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));
2990
+ 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;
2991
+ 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;
2992
+ 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
2993
  }
3018
2994
  intersectsPlane(e) {
3019
2995
  this.rotation.extractBasis(_t, vt, yt);
@@ -3021,10 +2997,10 @@ var K = {
3021
2997
  return Math.abs(n) <= t;
3022
2998
  }
3023
2999
  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;
3000
+ return this.getSize(bt), Ct.setFromCenterAndSize(Q.set(0, 0, 0), bt), wt.setFromMatrix3(this.rotation), wt.setPosition(this.center), Tt.copy(wt).invert(), Et.copy(e).applyMatrix4(Tt), Et.intersectBox(Ct, t) ? t.applyMatrix4(wt) : null;
3025
3001
  }
3026
3002
  intersectsRay(e) {
3027
- return this.intersectRay(e, Z) !== null;
3003
+ return this.intersectRay(e, Q) !== null;
3028
3004
  }
3029
3005
  fromBox3(e) {
3030
3006
  return e.getCenter(this.center), e.getSize(this.halfSize).multiplyScalar(.5), this.rotation.identity(), this;
@@ -3033,12 +3009,12 @@ var K = {
3033
3009
  return e.center.equals(this.center) && e.halfSize.equals(this.halfSize) && e.rotation.equals(this.rotation);
3034
3010
  }
3035
3011
  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);
3012
+ 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();
3013
+ e.determinant() < 0 && (n = -n), St.setFromMatrix4(e);
3038
3014
  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;
3015
+ return St.elements[0] *= a, St.elements[1] *= a, St.elements[2] *= a, St.elements[3] *= o, St.elements[4] *= o, St.elements[5] *= o, St.elements[6] *= s, St.elements[7] *= s, St.elements[8] *= s, this.rotation.multiply(St), this.halfSize.x *= n, this.halfSize.y *= r, this.halfSize.z *= i, Q.setFromMatrixPosition(e), this.center.add(Q), this;
3040
3016
  }
3041
- }, Dt = new Et(), $ = 6371008.8, Ot = {
3017
+ }, Ot = new Dt(), $ = 6371008.8, kt = {
3042
3018
  centimeters: $ * 100,
3043
3019
  centimetres: $ * 100,
3044
3020
  degrees: 360 / (2 * Math.PI),
@@ -3055,60 +3031,60 @@ var K = {
3055
3031
  radians: 1,
3056
3032
  yards: $ * 1.0936
3057
3033
  };
3058
- function kt(e, t, n = {}) {
3034
+ function At(e, t, n = {}) {
3059
3035
  let r = { type: "Feature" };
3060
3036
  return (n.id === 0 || n.id) && (r.id = n.id), n.bbox && (r.bbox = n.bbox), r.properties = t || {}, r.geometry = e, r;
3061
3037
  }
3062
- function At(e, t, n = {}) {
3038
+ function jt(e, t, n = {}) {
3063
3039
  if (!e) throw Error("coordinates is required");
3064
3040
  if (!Array.isArray(e)) throw Error("coordinates must be an Array");
3065
3041
  if (e.length < 2) throw Error("coordinates must be at least 2 numbers long");
3066
- if (!Lt(e[0]) || !Lt(e[1])) throw Error("coordinates must contain numbers");
3067
- return kt({
3042
+ if (!Rt(e[0]) || !Rt(e[1])) throw Error("coordinates must contain numbers");
3043
+ return At({
3068
3044
  type: "Point",
3069
3045
  coordinates: e
3070
3046
  }, t, n);
3071
3047
  }
3072
- function jt(e, t, n = {}) {
3048
+ function Mt(e, t, n = {}) {
3073
3049
  for (let t of e) {
3074
3050
  if (t.length < 4) throw Error("Each LinearRing of a Polygon must have 4 or more Positions.");
3075
3051
  if (t[t.length - 1].length !== t[0].length) throw Error("First and last Position are not equivalent.");
3076
3052
  for (let e = 0; e < t[t.length - 1].length; e++) if (t[t.length - 1][e] !== t[0][e]) throw Error("First and last Position are not equivalent.");
3077
3053
  }
3078
- return kt({
3054
+ return At({
3079
3055
  type: "Polygon",
3080
3056
  coordinates: e
3081
3057
  }, t, n);
3082
3058
  }
3083
- function Mt(e, t = "kilometers") {
3084
- let n = Ot[t];
3059
+ function Nt(e, t = "kilometers") {
3060
+ let n = kt[t];
3085
3061
  if (!n) throw Error(t + " units is invalid");
3086
3062
  return e * n;
3087
3063
  }
3088
- function Nt(e, t = "kilometers") {
3089
- let n = Ot[t];
3064
+ function Pt(e, t = "kilometers") {
3065
+ let n = kt[t];
3090
3066
  if (!n) throw Error(t + " units is invalid");
3091
3067
  return e / n;
3092
3068
  }
3093
- function Pt(e) {
3069
+ function Ft(e) {
3094
3070
  return e % (2 * Math.PI) * 180 / Math.PI;
3095
3071
  }
3096
- function Ft(e) {
3072
+ function It(e) {
3097
3073
  return e % 360 * Math.PI / 180;
3098
3074
  }
3099
- function It(e, t = "kilometers", n = "kilometers") {
3075
+ function Lt(e, t = "kilometers", n = "kilometers") {
3100
3076
  if (!(e >= 0)) throw Error("length must be a positive number");
3101
- return Mt(Nt(e, t), n);
3077
+ return Nt(Pt(e, t), n);
3102
3078
  }
3103
- function Lt(e) {
3079
+ function Rt(e) {
3104
3080
  return !isNaN(e) && e !== null && !Array.isArray(e);
3105
3081
  }
3106
- function Rt(e) {
3082
+ function zt(e) {
3107
3083
  return typeof e == "object" && !!e && !Array.isArray(e);
3108
3084
  }
3109
3085
  //#endregion
3110
3086
  //#region node_modules/@turf/meta/dist/esm/index.js
3111
- function zt(e, t, n) {
3087
+ function Bt(e, t, n) {
3112
3088
  if (e !== null) for (var r, i, a, o, s, c, l, u = 0, d = 0, f, p = e.type, m = p === "FeatureCollection", h = p === "Feature", g = m ? e.features.length : 1, _ = 0; _ < g; _++) {
3113
3089
  l = m ? e.features[_].geometry : h ? e.geometry : e, f = l ? l.type === "GeometryCollection" : !1, s = f ? l.geometries.length : 1;
3114
3090
  for (var v = 0; v < s; v++) {
@@ -3154,7 +3130,7 @@ function zt(e, t, n) {
3154
3130
  }
3155
3131
  break;
3156
3132
  case "GeometryCollection":
3157
- for (r = 0; r < o.geometries.length; r++) if (zt(o.geometries[r], t, n) === !1) return !1;
3133
+ for (r = 0; r < o.geometries.length; r++) if (Bt(o.geometries[r], t, n) === !1) return !1;
3158
3134
  break;
3159
3135
  default: throw Error("Unknown Geometry Type");
3160
3136
  }
@@ -3162,13 +3138,13 @@ function zt(e, t, n) {
3162
3138
  }
3163
3139
  }
3164
3140
  }
3165
- function Bt(e) {
3141
+ function Vt(e) {
3166
3142
  var t = [];
3167
- return zt(e, function(e) {
3143
+ return Bt(e, function(e) {
3168
3144
  t.push(e);
3169
3145
  }), t;
3170
3146
  }
3171
- function Vt(e, t) {
3147
+ function Ht(e, t) {
3172
3148
  var n, r, i, a, o, s, c, l, u, d, f = 0, p = e.type === "FeatureCollection", m = e.type === "Feature", h = p ? e.features.length : 1;
3173
3149
  for (n = 0; n < h; n++) {
3174
3150
  for (s = p ? e.features[n].geometry : m ? e.geometry : e, l = p ? e.features[n].properties : m ? e.properties : {}, u = p ? e.features[n].bbox : m ? e.bbox : void 0, d = p ? e.features[n].id : m ? e.id : void 0, c = s ? s.type === "GeometryCollection" : !1, o = c ? s.geometries.length : 1, i = 0; i < o; i++) {
@@ -3194,15 +3170,15 @@ function Vt(e, t) {
3194
3170
  f++;
3195
3171
  }
3196
3172
  }
3197
- function Ht(e, t, n) {
3173
+ function Ut(e, t, n) {
3198
3174
  var r = n;
3199
- return Vt(e, function(e, i, a, o, s) {
3175
+ return Ht(e, function(e, i, a, o, s) {
3200
3176
  r = i === 0 && n === void 0 ? e : t(r, e, i, a, o, s);
3201
3177
  }), r;
3202
3178
  }
3203
3179
  //#endregion
3204
3180
  //#region node_modules/rbush/rbush.min.js
3205
- var Ut = /* @__PURE__ */ y(((e, t) => {
3181
+ var Wt = /* @__PURE__ */ y(((e, t) => {
3206
3182
  (function(n, r) {
3207
3183
  typeof e == "object" && t !== void 0 ? t.exports = r() : typeof define == "function" && define.amd ? define(r) : (n ||= self).RBush = r();
3208
3184
  })(e, function() {
@@ -3419,13 +3395,13 @@ var Ut = /* @__PURE__ */ y(((e, t) => {
3419
3395
  for (var t = e.length - 1, n = void 0; t >= 0; t--) e[t].children.length === 0 ? t > 0 ? (n = e[t - 1].children).splice(n.indexOf(e[t]), 1) : this.clear() : a(e[t], this.toBBox);
3420
3396
  }, r;
3421
3397
  });
3422
- })), Wt = /* @__PURE__ */ b({ default: () => Kt });
3423
- function Gt(e, t) {
3398
+ })), Gt = /* @__PURE__ */ b({ default: () => qt });
3399
+ function Kt(e, t) {
3424
3400
  return e < t ? -1 : e > t ? 1 : 0;
3425
3401
  }
3426
- var Kt, qt = v((() => {
3427
- Kt = class {
3428
- constructor(e = [], t = Gt) {
3402
+ var qt, Jt = v((() => {
3403
+ qt = class {
3404
+ constructor(e = [], t = Kt) {
3429
3405
  if (this.data = e, this.length = this.data.length, this.compare = t, this.length > 0) for (let e = (this.length >> 1) - 1; e >= 0; e--) this._down(e);
3430
3406
  }
3431
3407
  push(e) {
@@ -3458,7 +3434,7 @@ var Kt, qt = v((() => {
3458
3434
  t[e] = i;
3459
3435
  }
3460
3436
  };
3461
- })), Jt = /* @__PURE__ */ y(((e, t) => {
3437
+ })), Yt = /* @__PURE__ */ y(((e, t) => {
3462
3438
  t.exports = function(e, t, n, r) {
3463
3439
  var i = e[0], a = e[1], o = !1;
3464
3440
  n === void 0 && (n = 0), r === void 0 && (r = t.length);
@@ -3468,7 +3444,7 @@ var Kt, qt = v((() => {
3468
3444
  }
3469
3445
  return o;
3470
3446
  };
3471
- })), Yt = /* @__PURE__ */ y(((e, t) => {
3447
+ })), Xt = /* @__PURE__ */ y(((e, t) => {
3472
3448
  t.exports = function(e, t, n, r) {
3473
3449
  var i = e[0], a = e[1], o = !1;
3474
3450
  n === void 0 && (n = 0), r === void 0 && (r = t.length);
@@ -3478,12 +3454,12 @@ var Kt, qt = v((() => {
3478
3454
  }
3479
3455
  return o;
3480
3456
  };
3481
- })), Xt = /* @__PURE__ */ y(((e, t) => {
3482
- var n = Jt(), r = Yt();
3457
+ })), Zt = /* @__PURE__ */ y(((e, t) => {
3458
+ var n = Yt(), r = Xt();
3483
3459
  t.exports = function(e, t, i, a) {
3484
3460
  return t.length > 0 && Array.isArray(t[0]) ? r(e, t, i, a) : n(e, t, i, a);
3485
3461
  }, t.exports.nested = r, t.exports.flat = n;
3486
- })), Zt = /* @__PURE__ */ y(((e, t) => {
3462
+ })), Qt = /* @__PURE__ */ y(((e, t) => {
3487
3463
  (function(n, r) {
3488
3464
  typeof e == "object" && t !== void 0 ? r(e) : typeof define == "function" && define.amd ? define(["exports"], r) : r((n ||= self).predicates = {});
3489
3465
  })(e, function(e) {
@@ -3524,8 +3500,8 @@ var Kt, qt = v((() => {
3524
3500
  return (t - a) * (n - i) - (e - i) * (r - a);
3525
3501
  }, Object.defineProperty(e, "__esModule", { value: !0 });
3526
3502
  });
3527
- })), Qt = /* @__PURE__ */ S((/* @__PURE__ */ y(((e, t) => {
3528
- var n = Ut(), r = (qt(), C(Wt)), i = Xt(), a = Zt().orient2d;
3503
+ })), $t = /* @__PURE__ */ S((/* @__PURE__ */ y(((e, t) => {
3504
+ var n = Wt(), r = (Jt(), C(Gt)), i = Zt(), a = Qt().orient2d;
3529
3505
  r.default && (r = r.default), t.exports = o, t.exports.default = o;
3530
3506
  function o(e, t, r) {
3531
3507
  t = Math.max(0, t === void 0 ? 2 : t), r ||= 0;
@@ -3675,26 +3651,26 @@ var Kt, qt = v((() => {
3675
3651
  return r.pop(), t.pop(), t.concat(r);
3676
3652
  }
3677
3653
  })))(), 1);
3678
- function $t(e, t = {}) {
3654
+ function en(e, t = {}) {
3679
3655
  t.concavity = t.concavity || Infinity;
3680
3656
  let n = [];
3681
- if (zt(e, (e) => {
3657
+ if (Bt(e, (e) => {
3682
3658
  n.push([e[0], e[1]]);
3683
3659
  }), !n.length) return null;
3684
- let r = (0, Qt.default)(n, t.concavity);
3685
- return r.length > 3 ? jt([r]) : null;
3660
+ let r = (0, $t.default)(n, t.concavity);
3661
+ return r.length > 3 ? Mt([r]) : null;
3686
3662
  }
3687
3663
  //#endregion
3688
3664
  //#region node_modules/@turf/centroid/dist/esm/index.js
3689
- function en(e, t = {}) {
3665
+ function tn(e, t = {}) {
3690
3666
  let n = 0, r = 0, i = 0;
3691
- return zt(e, function(e) {
3667
+ return Bt(e, function(e) {
3692
3668
  n += e[0], r += e[1], i++;
3693
- }, !0), At([n / i, r / i], t.properties);
3669
+ }, !0), jt([n / i, r / i], t.properties);
3694
3670
  }
3695
3671
  //#endregion
3696
3672
  //#region node_modules/@turf/invariant/dist/esm/index.js
3697
- function tn(e) {
3673
+ function nn(e) {
3698
3674
  if (!e) throw Error("coord is required");
3699
3675
  if (!Array.isArray(e)) {
3700
3676
  if (e.type === "Feature" && e.geometry !== null && e.geometry.type === "Point") return [...e.geometry.coordinates];
@@ -3703,7 +3679,7 @@ function tn(e) {
3703
3679
  if (Array.isArray(e) && e.length >= 2 && !Array.isArray(e[0]) && !Array.isArray(e[1])) return [...e];
3704
3680
  throw Error("coord must be GeoJSON Point or an Array of numbers");
3705
3681
  }
3706
- function nn(e) {
3682
+ function rn(e) {
3707
3683
  if (Array.isArray(e)) return e;
3708
3684
  if (e.type === "Feature") {
3709
3685
  if (e.geometry !== null) return e.geometry.coordinates;
@@ -3712,23 +3688,23 @@ function nn(e) {
3712
3688
  }
3713
3689
  //#endregion
3714
3690
  //#region node_modules/@turf/rhumb-bearing/dist/esm/index.js
3715
- function rn(e, t, n = {}) {
3691
+ function an(e, t, n = {}) {
3716
3692
  let r;
3717
- return r = n.final ? an(tn(t), tn(e)) : an(tn(e), tn(t)), r > 180 ? -(360 - r) : r;
3693
+ return r = n.final ? on(nn(t), nn(e)) : on(nn(e), nn(t)), r > 180 ? -(360 - r) : r;
3718
3694
  }
3719
- function an(e, t) {
3720
- let n = Ft(e[1]), r = Ft(t[1]), i = Ft(t[0] - e[0]);
3695
+ function on(e, t) {
3696
+ let n = It(e[1]), r = It(t[1]), i = It(t[0] - e[0]);
3721
3697
  i > Math.PI && (i -= 2 * Math.PI), i < -Math.PI && (i += 2 * Math.PI);
3722
3698
  let a = Math.log(Math.tan(r / 2 + Math.PI / 4) / Math.tan(n / 2 + Math.PI / 4));
3723
- return (Pt(Math.atan2(i, a)) + 360) % 360;
3699
+ return (Ft(Math.atan2(i, a)) + 360) % 360;
3724
3700
  }
3725
3701
  //#endregion
3726
3702
  //#region node_modules/@turf/rhumb-distance/dist/esm/index.js
3727
- function on(e, t, n = {}) {
3728
- let r = tn(e), i = tn(t);
3729
- return i[0] += i[0] - r[0] > 180 ? -360 : r[0] - i[0] > 180 ? 360 : 0, It(sn(r, i), "meters", n.units);
3703
+ function sn(e, t, n = {}) {
3704
+ let r = nn(e), i = nn(t);
3705
+ return i[0] += i[0] - r[0] > 180 ? -360 : r[0] - i[0] > 180 ? 360 : 0, Lt(cn(r, i), "meters", n.units);
3730
3706
  }
3731
- function sn(e, t, n) {
3707
+ function cn(e, t, n) {
3732
3708
  n = n === void 0 ? $ : Number(n);
3733
3709
  let r = n, i = e[1] * Math.PI / 180, a = t[1] * Math.PI / 180, o = a - i, s = Math.abs(t[0] - e[0]) * Math.PI / 180;
3734
3710
  s > Math.PI && (s -= 2 * Math.PI);
@@ -3737,37 +3713,37 @@ function sn(e, t, n) {
3737
3713
  }
3738
3714
  //#endregion
3739
3715
  //#region node_modules/@turf/rhumb-destination/dist/esm/index.js
3740
- function cn(e, t, n, r = {}) {
3741
- let i = t < 0, a = It(Math.abs(t), r.units, "meters");
3716
+ function ln(e, t, n, r = {}) {
3717
+ let i = t < 0, a = Lt(Math.abs(t), r.units, "meters");
3742
3718
  i && (a = -Math.abs(a));
3743
- let o = tn(e), s = ln(o, a, n);
3744
- return s[0] += s[0] - o[0] > 180 ? -360 : o[0] - s[0] > 180 ? 360 : 0, At(s, r.properties);
3719
+ let o = nn(e), s = un(o, a, n);
3720
+ return s[0] += s[0] - o[0] > 180 ? -360 : o[0] - s[0] > 180 ? 360 : 0, jt(s, r.properties);
3745
3721
  }
3746
- function ln(e, t, n, r) {
3722
+ function un(e, t, n, r) {
3747
3723
  r = r === void 0 ? $ : Number(r);
3748
- let i = t / r, a = e[0] * Math.PI / 180, o = Ft(e[1]), s = Ft(n), c = i * Math.cos(s), l = o + c;
3724
+ let i = t / r, a = e[0] * Math.PI / 180, o = It(e[1]), s = It(n), c = i * Math.cos(s), l = o + c;
3749
3725
  Math.abs(l) > Math.PI / 2 && (l = l > 0 ? Math.PI - l : -Math.PI - l);
3750
3726
  let u = Math.log(Math.tan(l / 2 + Math.PI / 4) / Math.tan(o / 2 + Math.PI / 4)), d = Math.abs(u) > 1e-11 ? c / u : Math.cos(o);
3751
3727
  return [((a + i * Math.sin(s) / d) * 180 / Math.PI + 540) % 360 - 180, l * 180 / Math.PI];
3752
3728
  }
3753
3729
  //#endregion
3754
3730
  //#region node_modules/@turf/clone/dist/esm/index.js
3755
- function un(e) {
3731
+ function dn(e) {
3756
3732
  if (!e) throw Error("geojson is required");
3757
3733
  switch (e.type) {
3758
- case "Feature": return dn(e);
3759
- case "FeatureCollection": return pn(e);
3734
+ case "Feature": return fn(e);
3735
+ case "FeatureCollection": return mn(e);
3760
3736
  case "Point":
3761
3737
  case "LineString":
3762
3738
  case "Polygon":
3763
3739
  case "MultiPoint":
3764
3740
  case "MultiLineString":
3765
3741
  case "MultiPolygon":
3766
- case "GeometryCollection": return mn(e);
3742
+ case "GeometryCollection": return hn(e);
3767
3743
  default: throw Error("unknown GeoJSON type");
3768
3744
  }
3769
3745
  }
3770
- function dn(e) {
3746
+ function fn(e) {
3771
3747
  let t = { type: "Feature" };
3772
3748
  return Object.keys(e).forEach((n) => {
3773
3749
  switch (n) {
@@ -3776,16 +3752,16 @@ function dn(e) {
3776
3752
  case "geometry": return;
3777
3753
  default: t[n] = e[n];
3778
3754
  }
3779
- }), t.properties = fn(e.properties), e.geometry == null ? t.geometry = null : t.geometry = mn(e.geometry), t;
3755
+ }), t.properties = pn(e.properties), e.geometry == null ? t.geometry = null : t.geometry = hn(e.geometry), t;
3780
3756
  }
3781
- function fn(e) {
3757
+ function pn(e) {
3782
3758
  let t = {};
3783
3759
  return e && Object.keys(e).forEach((n) => {
3784
3760
  let r = e[n];
3785
- typeof r == "object" ? r === null ? t[n] = null : Array.isArray(r) ? t[n] = r.map((e) => e) : t[n] = fn(r) : t[n] = r;
3761
+ typeof r == "object" ? r === null ? t[n] = null : Array.isArray(r) ? t[n] = r.map((e) => e) : t[n] = pn(r) : t[n] = r;
3786
3762
  }), t;
3787
3763
  }
3788
- function pn(e) {
3764
+ function mn(e) {
3789
3765
  let t = { type: "FeatureCollection" };
3790
3766
  return Object.keys(e).forEach((n) => {
3791
3767
  switch (n) {
@@ -3793,44 +3769,44 @@ function pn(e) {
3793
3769
  case "features": return;
3794
3770
  default: t[n] = e[n];
3795
3771
  }
3796
- }), t.features = e.features.map((e) => dn(e)), t;
3772
+ }), t.features = e.features.map((e) => fn(e)), t;
3797
3773
  }
3798
- function mn(e) {
3774
+ function hn(e) {
3799
3775
  let t = { type: e.type };
3800
- return e.bbox && (t.bbox = e.bbox), e.type === "GeometryCollection" ? (t.geometries = e.geometries.map((e) => mn(e)), t) : (t.coordinates = hn(e.coordinates), t);
3776
+ return e.bbox && (t.bbox = e.bbox), e.type === "GeometryCollection" ? (t.geometries = e.geometries.map((e) => hn(e)), t) : (t.coordinates = gn(e.coordinates), t);
3801
3777
  }
3802
- function hn(e) {
3778
+ function gn(e) {
3803
3779
  let t = e;
3804
- return typeof t[0] == "object" ? t.map((e) => hn(e)) : t.slice();
3780
+ return typeof t[0] == "object" ? t.map((e) => gn(e)) : t.slice();
3805
3781
  }
3806
3782
  //#endregion
3807
3783
  //#region node_modules/@turf/transform-rotate/dist/esm/index.js
3808
- function gn(e, t, n) {
3809
- if (n ||= {}, !Rt(n)) throw Error("options is invalid");
3784
+ function _n(e, t, n) {
3785
+ if (n ||= {}, !zt(n)) throw Error("options is invalid");
3810
3786
  let r = n.pivot, i = n.mutate;
3811
3787
  if (!e) throw Error("geojson is required");
3812
3788
  if (t == null || isNaN(t)) throw Error("angle is required");
3813
3789
  if (t === 0) return e;
3814
- let a = r ?? en(e);
3815
- return (i === !1 || i === void 0) && (e = un(e)), zt(e, function(e) {
3816
- let n = rn(a, e) + t, r = nn(cn(a, on(a, e), n));
3790
+ let a = r ?? tn(e);
3791
+ return (i === !1 || i === void 0) && (e = dn(e)), Bt(e, function(e) {
3792
+ let n = an(a, e) + t, r = rn(ln(a, sn(a, e), n));
3817
3793
  e[0] = r[0], e[1] = r[1];
3818
3794
  }), e;
3819
3795
  }
3820
3796
  //#endregion
3821
3797
  //#region node_modules/@turf/bearing/dist/esm/index.js
3822
- function _n(e, t, n = {}) {
3823
- if (n.final === !0) return vn(e, t);
3824
- let r = tn(e), i = tn(t), a = Ft(r[0]), o = Ft(i[0]), s = Ft(r[1]), c = Ft(i[1]), l = Math.sin(o - a) * Math.cos(c), u = Math.cos(s) * Math.sin(c) - Math.sin(s) * Math.cos(c) * Math.cos(o - a);
3825
- return Pt(Math.atan2(l, u));
3798
+ function vn(e, t, n = {}) {
3799
+ if (n.final === !0) return yn(e, t);
3800
+ let r = nn(e), i = nn(t), a = It(r[0]), o = It(i[0]), s = It(r[1]), c = It(i[1]), l = Math.sin(o - a) * Math.cos(c), u = Math.cos(s) * Math.sin(c) - Math.sin(s) * Math.cos(c) * Math.cos(o - a);
3801
+ return Ft(Math.atan2(l, u));
3826
3802
  }
3827
- function vn(e, t) {
3828
- let n = _n(t, e);
3803
+ function yn(e, t) {
3804
+ let n = vn(t, e);
3829
3805
  return n = (n + 180) % 360, n;
3830
3806
  }
3831
3807
  //#endregion
3832
3808
  //#region node_modules/@turf/bbox/dist/esm/index.js
3833
- function yn(e, t = {}) {
3809
+ function bn(e, t = {}) {
3834
3810
  if (e.bbox != null && !0 !== t.recompute) return e.bbox;
3835
3811
  let n = [
3836
3812
  Infinity,
@@ -3838,17 +3814,17 @@ function yn(e, t = {}) {
3838
3814
  -Infinity,
3839
3815
  -Infinity
3840
3816
  ];
3841
- return zt(e, (e) => {
3817
+ return Bt(e, (e) => {
3842
3818
  n[0] > e[0] && (n[0] = e[0]), n[1] > e[1] && (n[1] = e[1]), n[2] < e[0] && (n[2] = e[0]), n[3] < e[1] && (n[3] = e[1]);
3843
3819
  }), n;
3844
3820
  }
3845
3821
  //#endregion
3846
3822
  //#region node_modules/@turf/bbox-polygon/dist/esm/index.js
3847
- function bn(e, t = {}) {
3823
+ function xn(e, t = {}) {
3848
3824
  let n = Number(e[0]), r = Number(e[1]), i = Number(e[2]), a = Number(e[3]);
3849
3825
  if (e.length === 6) throw Error("@turf/bbox-polygon does not support BBox with 6 positions");
3850
3826
  let o = [n, r];
3851
- return jt([[
3827
+ return Mt([[
3852
3828
  o,
3853
3829
  [i, r],
3854
3830
  [i, a],
@@ -3861,20 +3837,20 @@ function bn(e, t = {}) {
3861
3837
  }
3862
3838
  //#endregion
3863
3839
  //#region node_modules/@turf/envelope/dist/esm/index.js
3864
- function xn(e) {
3865
- return bn(yn(e));
3840
+ function Sn(e) {
3841
+ return xn(bn(e));
3866
3842
  }
3867
3843
  //#endregion
3868
3844
  //#region node_modules/@turf/area/dist/esm/index.js
3869
- function Sn(e) {
3870
- return Ht(e, (e, t) => e + Cn(t), 0);
3871
- }
3872
3845
  function Cn(e) {
3846
+ return Ut(e, (e, t) => e + wn(t), 0);
3847
+ }
3848
+ function wn(e) {
3873
3849
  let t = 0, n;
3874
3850
  switch (e.type) {
3875
- case "Polygon": return wn(e.coordinates);
3851
+ case "Polygon": return Tn(e.coordinates);
3876
3852
  case "MultiPolygon":
3877
- for (n = 0; n < e.coordinates.length; n++) t += wn(e.coordinates[n]);
3853
+ for (n = 0; n < e.coordinates.length; n++) t += Tn(e.coordinates[n]);
3878
3854
  return t;
3879
3855
  case "Point":
3880
3856
  case "MultiPoint":
@@ -3883,57 +3859,57 @@ function Cn(e) {
3883
3859
  }
3884
3860
  return 0;
3885
3861
  }
3886
- function wn(e) {
3862
+ function Tn(e) {
3887
3863
  let t = 0;
3888
3864
  if (e && e.length > 0) {
3889
- t += Math.abs(Dn(e[0]));
3890
- for (let n = 1; n < e.length; n++) t -= Math.abs(Dn(e[n]));
3865
+ t += Math.abs(On(e[0]));
3866
+ for (let n = 1; n < e.length; n++) t -= Math.abs(On(e[n]));
3891
3867
  }
3892
3868
  return t;
3893
3869
  }
3894
- var Tn = $ * $ / 2, En = Math.PI / 180;
3895
- function Dn(e) {
3870
+ var En = $ * $ / 2, Dn = Math.PI / 180;
3871
+ function On(e) {
3896
3872
  let t = e.length - 1;
3897
3873
  if (t <= 2) return 0;
3898
3874
  let n = 0, r = 0;
3899
3875
  for (; r < t;) {
3900
- let i = e[r], a = e[r + 1 === t ? 0 : r + 1], o = e[r + 2 >= t ? (r + 2) % t : r + 2], s = i[0] * En, c = a[1] * En, l = o[0] * En;
3876
+ let i = e[r], a = e[r + 1 === t ? 0 : r + 1], o = e[r + 2 >= t ? (r + 2) % t : r + 2], s = i[0] * Dn, c = a[1] * Dn, l = o[0] * Dn;
3901
3877
  n += (l - s) * Math.sin(c), r++;
3902
3878
  }
3903
- return n * Tn;
3879
+ return n * En;
3904
3880
  }
3905
3881
  //#endregion
3906
3882
  //#region node_modules/geojson-minimum-bounding-rectangle/dist/index.js
3907
- function On(e) {
3908
- let t = $t(e);
3883
+ function kn(e) {
3884
+ let t = en(e);
3909
3885
  if (!t) throw Error("Can't calculate smallestSurroundingRectangleByArea for given geometry");
3910
- let n = en(t), r = Bt(t), i = 2 ** 53 - 1, a = null;
3886
+ let n = tn(t), r = Vt(t), i = 2 ** 53 - 1, a = null;
3911
3887
  for (let e = 0; e < r.length - 1; e++) {
3912
- let o = _n(r[e], r[e + 1]), s = xn(gn(t, -1 * o, { pivot: n })), c = Sn(s);
3913
- c < i && (i = c, a = gn(s, o, { pivot: n }));
3888
+ let o = vn(r[e], r[e + 1]), s = Sn(_n(t, -1 * o, { pivot: n })), c = Cn(s);
3889
+ c < i && (i = c, a = _n(s, o, { pivot: n }));
3914
3890
  }
3915
3891
  return a;
3916
3892
  }
3917
3893
  //#endregion
3918
3894
  //#region src/utils/OBB.mjs
3919
- function kn(e, t) {
3895
+ function An(e, t) {
3920
3896
  let n = t[0] - e[0], r = t[1] - e[1];
3921
3897
  return Math.sqrt(n * n + r * r);
3922
3898
  }
3923
- function An(e) {
3899
+ function jn(e) {
3924
3900
  let t = Infinity, n = -Infinity, r = Infinity, i = -Infinity;
3925
3901
  for (let [a, o] of e) a < t && (t = a), a > n && (n = a), o < r && (r = o), o > i && (i = o);
3926
3902
  return [(n + t) * .5, (i + r) * .5];
3927
3903
  }
3928
- var jn = class t extends Et {
3904
+ var Mn = class t extends Dt {
3929
3905
  getBoxMesh() {
3930
- Mn.identity(), Mn.setFromMatrix3(this.rotation), Mn.decompose(In, Nn, new e.Vector3());
3906
+ Nn.identity(), Nn.setFromMatrix3(this.rotation), Nn.decompose(Ln, Pn, new e.Vector3());
3931
3907
  let t = this.halfSize.clone().multiplyScalar(2), n = new e.Mesh(new e.BoxGeometry(t.x, t.y, t.z));
3932
- return n.position.copy(this.center), n.rotation.setFromQuaternion(Nn), n;
3908
+ return n.position.copy(this.center), n.rotation.setFromQuaternion(Pn), n;
3933
3909
  }
3934
3910
  getBoxEdge(t = 16776960) {
3935
3911
  let n = this.getBoxMesh();
3936
- Ln.setFromObject(n);
3912
+ Rn.setFromObject(n);
3937
3913
  let r = new e.EdgesGeometry(n.geometry.clone().applyMatrix4(n.matrixWorld));
3938
3914
  return new e.LineSegments(r, new e.LineBasicMaterial({
3939
3915
  color: t,
@@ -3941,33 +3917,33 @@ var jn = class t extends Et {
3941
3917
  }));
3942
3918
  }
3943
3919
  toJson() {
3944
- return Mn.identity(), Mn.setFromMatrix3(this.rotation), Mn.decompose(In, Nn, new e.Vector3()), {
3920
+ return Nn.identity(), Nn.setFromMatrix3(this.rotation), Nn.decompose(Ln, Pn, new e.Vector3()), {
3945
3921
  size: this.halfSize.toArray(),
3946
3922
  center: this.center.toArray(),
3947
- quaternion: Nn.toArray()
3923
+ quaternion: Pn.toArray()
3948
3924
  };
3949
3925
  }
3950
3926
  static from(n, r, i, a = new t()) {
3951
- if (i instanceof e.Euler) Nn.setFromEuler(i);
3952
- else if (i instanceof e.Quaternion) Nn.copy(i);
3927
+ if (i instanceof e.Euler) Pn.setFromEuler(i);
3928
+ else if (i instanceof e.Quaternion) Pn.copy(i);
3953
3929
  else throw Error("传入的旋转不是欧拉角或者四元数");
3954
- return Mn.compose(r, Nn, Fn), a.center.copy(r), a.halfSize.copy(n.multiplyScalar(.5)), a.rotation.setFromMatrix4(Mn), a;
3930
+ return Nn.compose(r, Pn, In), a.center.copy(r), a.halfSize.copy(n.multiplyScalar(.5)), a.rotation.setFromMatrix4(Nn), a;
3955
3931
  }
3956
3932
  static fromByPath2D(e, n, r, i = new t()) {
3957
- let a = On({
3933
+ let a = kn({
3958
3934
  type: "Polygon",
3959
3935
  coordinates: [e.map((e) => [e.x, e.y])]
3960
3936
  });
3961
3937
  if (!a) throw Error("2d obb 获取失败");
3962
- let o = a.geometry.coordinates[0], s = kn(o[0], o[1]), c = kn(o[1], o[2]), l = Math.atan2(o[1][1] - o[0][1], o[1][0] - o[0][0]);
3963
- In.set(s, c, r), Pn.set(0, 0, l);
3964
- let [u, d] = An(o);
3965
- return n.x = u, n.y = d, this.from(In, n, Pn, i);
3938
+ let o = a.geometry.coordinates[0], s = An(o[0], o[1]), c = An(o[1], o[2]), l = Math.atan2(o[1][1] - o[0][1], o[1][0] - o[0][0]);
3939
+ Ln.set(s, c, r), Fn.set(0, 0, l);
3940
+ let [u, d] = jn(o);
3941
+ return n.x = u, n.y = d, this.from(Ln, n, Fn, i);
3966
3942
  }
3967
- }, Mn = new e.Matrix4(), Nn = new e.Quaternion(), Pn = new e.Euler(), Fn = new e.Vector3(1, 1, 1), In = new e.Vector3(), Ln = new e.Box3();
3943
+ }, Nn = new e.Matrix4(), Pn = new e.Quaternion(), Fn = new e.Euler(), In = new e.Vector3(1, 1, 1), Ln = new e.Vector3(), Rn = new e.Box3();
3968
3944
  //#endregion
3969
3945
  //#region src/pointCloudProcessing/mergeMeaning.mjs
3970
- function Rn(e, t, n = .005, r = .2) {
3946
+ function zn(e, t, n = .005, r = .2) {
3971
3947
  if (!e.length || !t.length) return 0;
3972
3948
  let i = Math.max(n * 3, .05), a = n * n, o = /* @__PURE__ */ new Map(), s = (e, t, n) => `${Math.floor(e / i)},${Math.floor(t / i)},${Math.floor(n / i)}`;
3973
3949
  for (let e of t) {
@@ -3996,26 +3972,26 @@ function Rn(e, t, n = .005, r = .2) {
3996
3972
  }
3997
3973
  return c / e.length;
3998
3974
  }
3999
- function zn(e, t, n = .5) {
3975
+ function Bn(e, t, n = .5) {
4000
3976
  let r = 0, i = 0;
4001
3977
  for (let a of e) if (t.containsPoint(a) && (r++, i = r / e.length, i > n)) break;
4002
3978
  return i;
4003
3979
  }
4004
- function Bn(e, t, n, r) {
3980
+ function Vn(e, t, n, r) {
4005
3981
  if (e.intersectsOBB(t)) return !0;
4006
3982
  {
4007
- let i = Hn(e, r), a = Hn(t, n);
3983
+ let i = Un(e, r), a = Un(t, n);
4008
3984
  if (i || a) return !0;
4009
3985
  }
4010
3986
  return !1;
4011
3987
  }
4012
- function Vn(t, n) {
3988
+ function Hn(t, n) {
4013
3989
  let r = new e.Vector3(), i = new e.Vector3();
4014
3990
  t.getSize(r), n.getSize(i);
4015
3991
  let a = r.x * r.y * r.z, o = i.x * i.y * i.z;
4016
3992
  return a > o ? 1 : a < o ? -1 : 0;
4017
3993
  }
4018
- function Hn(e, t) {
3994
+ function Un(e, t) {
4019
3995
  let n = !0;
4020
3996
  for (let r = 0; r < t.length; r++) if (!e.containsPoint(t[r])) {
4021
3997
  n = !1;
@@ -4023,7 +3999,7 @@ function Hn(e, t) {
4023
3999
  }
4024
4000
  return n;
4025
4001
  }
4026
- function Un(e) {
4002
+ function Wn(e) {
4027
4003
  if (e.length === 0) return {
4028
4004
  x: 0,
4029
4005
  y: 0,
@@ -4041,25 +4017,25 @@ function Un(e) {
4041
4017
  h: r - i
4042
4018
  };
4043
4019
  }
4044
- function Wn(t, n, r, i) {
4020
+ function Gn(t, n, r, i) {
4045
4021
  let a = [];
4046
4022
  for (let n = 0; n < t.length; n++) a.push(new e.Vector3(t[n][0], t[n][1], 0));
4047
4023
  if (a.length == 0) return null;
4048
- let o = jn.fromByPath2D(a, n, r);
4024
+ let o = Mn.fromByPath2D(a, n, r);
4049
4025
  return o.center.z = i, o;
4050
4026
  }
4051
- var Gn = (t) => {
4027
+ var Kn = (t) => {
4052
4028
  if (t.length == 0) return [];
4053
4029
  let n = [], r = /* @__PURE__ */ new Map();
4054
4030
  for (let i = 0; i < t.length; i++) {
4055
- let a = t[i].points.map((e) => [e.x, e.y]), o = Un(t[i].points), s = t[i].obj_id;
4056
- 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
- let c = s.indexOf("_") + 1, l = s.lastIndexOf("_"), u = s.substring(c, l);
4058
- if (u !== "floor") continue;
4059
- let d = [];
4060
- 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
- let f = -99999;
4062
- if (u === "floor") {
4031
+ let a = t[i].points.map((e) => [e.x, e.y]), o = t[i].obj_id;
4032
+ o = o.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").replace(/the floor of the house/g, "floor").replace(/the outdoor floor/g, "floor"), o.split("_").slice(1, 3).join("_").split(".")[0].split("_")[0];
4033
+ let s = o.indexOf("_") + 1, c = o.lastIndexOf("_"), l = o.substring(s, c);
4034
+ if (l === "wall") continue;
4035
+ let u = [];
4036
+ for (let n = 0; n < t[i].points.length; n++) u.push(new e.Vector3(t[i].points[n].x, t[i].points[n].y, t[i].points[n].z));
4037
+ let d = -99999;
4038
+ if (l === "floor") {
4063
4039
  let n = /* @__PURE__ */ new Map();
4064
4040
  for (let e = 0; e < t[i].points.length; e++) {
4065
4041
  let r = t[i].points[e].z;
@@ -4072,40 +4048,40 @@ var Gn = (t) => {
4072
4048
  });
4073
4049
  }
4074
4050
  let r = [...n.entries()].reduce((e, t) => t[1].num > e[1].num ? t : e);
4075
- a = [], a = r[1].points.map((e) => [e.x, e.y]), d = [], d = r[1].points.map((t) => new e.Vector3(t.x, t.y, t.z)), f = r[0];
4051
+ a = [], a = r[1].points.map((e) => [e.x, e.y]), u = [], u = r[1].points.map((t) => new e.Vector3(t.x, t.y, t.z)), d = r[0];
4076
4052
  }
4077
- let p = {
4078
- points: d,
4053
+ let f = Wn(u), p = {
4054
+ points: u,
4079
4055
  path: gt(a),
4080
- h: o.h,
4081
- minz: o.minz,
4082
- maxz: o.maxz,
4056
+ h: f.h,
4057
+ minz: f.minz,
4058
+ maxz: f.maxz,
4083
4059
  center: {
4084
- x: o.x,
4085
- y: o.y,
4086
- z: o.z
4060
+ x: f.x,
4061
+ y: f.y,
4062
+ z: f.z
4087
4063
  },
4088
4064
  obj_id: t[i].obj_id,
4089
- type: u,
4065
+ type: l,
4090
4066
  averagePz: t[i].averagePz,
4091
4067
  obb: null,
4092
4068
  isDel: !1,
4093
- obj_id: s,
4069
+ obj_id: o,
4094
4070
  positionArr: [t[i].position]
4095
4071
  };
4096
- if (p.obb = Wn(p.path, p.center, p.h, (p.maxz + p.minz) / 2), p.obb == null) continue;
4072
+ if (p.obb = Gn(p.path, p.center, p.h, (p.maxz + p.minz) / 2), p.obb == null) continue;
4097
4073
  let m = -1;
4098
- for (let e = 0; e < n.length; e++) if (n[e].type == u) {
4074
+ for (let e = 0; e < n.length; e++) if (n[e].type == l) {
4099
4075
  m = e;
4100
4076
  break;
4101
4077
  }
4102
4078
  if (m == -1 ? n.push({
4103
- type: u,
4079
+ type: l,
4104
4080
  array: [p]
4105
- }) : n[m].array.push(p), u == "floor" && f != -99999) if (r.has(f)) {
4106
- let e = r.get(f);
4107
- e.num += p.points.length, e.datas.push(p), r.set(f, e);
4108
- } else r.set(f, {
4081
+ }) : n[m].array.push(p), l == "floor" && d != -99999) if (r.has(d)) {
4082
+ let e = r.get(d);
4083
+ e.num += p.points.length, e.datas.push(p), r.set(d, e);
4084
+ } else r.set(d, {
4109
4085
  num: p.points.length,
4110
4086
  datas: [p]
4111
4087
  });
@@ -4131,12 +4107,12 @@ var Gn = (t) => {
4131
4107
  };
4132
4108
  for (let i = e + 1; i < t.length; i++) if (!(t[i].obb == null || r.includes(i)) && n.obb.intersectsOBB(t[i].obb)) {
4133
4109
  r.push(i), n.points.push(...t[i].points), n.path = gt(n.points.map((e) => [e.x, e.y]));
4134
- let a = Un(n.points);
4110
+ let a = Wn(n.points);
4135
4111
  n.h = a.h, n.minz = a.minz, n.maxz = a.maxz, n.center = {
4136
4112
  x: a.x,
4137
4113
  y: a.y,
4138
4114
  z: a.z
4139
- }, n.obb = Wn(n.path, n.center, n.h, (n.maxz + n.minz) / 2), n.positionArr.push(...t[i].positionArr), i = e;
4115
+ }, n.obb = Gn(n.path, n.center, n.h, (n.maxz + n.minz) / 2), n.positionArr.push(...t[i].positionArr), i = e;
4140
4116
  }
4141
4117
  n.path.length > t[e].path.length && (r.push(e), i.push(n));
4142
4118
  }
@@ -4173,54 +4149,54 @@ var Gn = (t) => {
4173
4149
  if (l[e].isDel) continue;
4174
4150
  let n = l[e].obb, u = l[e].minz;
4175
4151
  if (l[e].maxz, o.intersectsOBB(n)) {
4176
- zn(l[e].points, o);
4177
- let d = zn(i[a].points, n), f = Vn(o, n);
4152
+ Bn(l[e].points, o);
4153
+ let d = Bn(i[a].points, n), f = Hn(o, n);
4178
4154
  if (d >= .3 && f == -1) {
4179
4155
  i[a].isDel = !0;
4180
4156
  break;
4181
4157
  }
4182
4158
  if (r !== "wall" && r !== "floor" && r !== "roof") {
4183
4159
  if (r === "window") {
4184
- if (t === "balcony railing" && Hn(o, l[e].points)) {
4160
+ if (t === "balcony railing" && Un(o, l[e].points)) {
4185
4161
  l[e].isDel = !0;
4186
4162
  continue;
4187
4163
  }
4188
- if (t === "balcony railing" && Hn(n, i[a].points)) {
4164
+ if (t === "balcony railing" && Un(n, i[a].points)) {
4189
4165
  i[a].isDel = !0;
4190
4166
  break;
4191
4167
  }
4192
- if (t === "balcony railing" && Bn(o, n, i[a].points, l[e].points) && (Math.abs(s - u) < .1 || Math.abs(u - c) > .3)) {
4168
+ if (t === "balcony railing" && Vn(o, n, i[a].points, l[e].points) && (Math.abs(s - u) < .1 || Math.abs(u - c) > .3)) {
4193
4169
  l[e].isDel = !0;
4194
4170
  continue;
4195
4171
  }
4196
4172
  } else if (r === "balcony railing") {
4197
- if (t === "window" && Hn(o, l[e].points)) {
4173
+ if (t === "window" && Un(o, l[e].points)) {
4198
4174
  l[e].isDel = !0;
4199
4175
  continue;
4200
4176
  }
4201
- if (t === "window" && Hn(n, i[a].points)) {
4177
+ if (t === "window" && Un(n, i[a].points)) {
4202
4178
  i[a].isDel = !0;
4203
4179
  break;
4204
4180
  }
4205
- if (t === "window" && Bn(o, n, i[a].points, l[e].points) && (Math.abs(s - u) < .1 || Math.abs(s - c) > .3)) {
4181
+ if (t === "window" && Vn(o, n, i[a].points, l[e].points) && (Math.abs(s - u) < .1 || Math.abs(s - c) > .3)) {
4206
4182
  i[a].isDel = !0;
4207
4183
  break;
4208
4184
  }
4209
4185
  }
4210
4186
  let d = !1, f = [], p = [], m = i[a].points, h = l[e].points;
4211
- if (m.length > h.length ? (d = !0, f = m, p = h) : (f = h, p = m), Rn(p, f, .03, .5) > .5) if (d) l[e].isDel = !0;
4187
+ if (m.length > h.length ? (d = !0, f = m, p = h) : (f = h, p = m), zn(p, f, .03, .5) > .5) if (d) l[e].isDel = !0;
4212
4188
  else {
4213
4189
  i[a].isDel = !0;
4214
4190
  break;
4215
4191
  }
4216
- else if (Bn(o, n)) {
4217
- let s = Vn(o, n);
4192
+ else if (Vn(o, n)) {
4193
+ let s = Hn(o, n);
4218
4194
  if (s === 1 || s === 0) {
4219
4195
  if (t === "switch") continue;
4220
- zn(p, o) >= .5 && (l[e].isDel = !0);
4196
+ Bn(p, o) >= .5 && (l[e].isDel = !0);
4221
4197
  } else {
4222
4198
  if (r === "switch") continue;
4223
- if (zn(p, n) >= .5) {
4199
+ if (Bn(p, n) >= .5) {
4224
4200
  i[a].isDel = !0;
4225
4201
  break;
4226
4202
  }
@@ -4249,11 +4225,29 @@ var Gn = (t) => {
4249
4225
  let n = new e.Vector3();
4250
4226
  i[t].obb.getSize(n), (n.x < .1 || n.y < .1) && (i[t].isDel = !0);
4251
4227
  }
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));
4228
+ 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)), r === "floor" && i[t].points.length < 500 && (i[t].isDel = !0);
4253
4229
  }
4254
4230
  }
4255
4231
  for (let e = 0; e < n.length; e++) n[e].array = n[e].array.filter((e) => !e.isDel);
4256
- return n;
4232
+ let i = [];
4233
+ for (let t = 0; t < n.length; t++) {
4234
+ let r = n[t].array;
4235
+ for (let t = 0; t < r.length; t++) i.push({
4236
+ obbBox: r[t].obb,
4237
+ box: new e.Box3().setFromPoints(r[t].points),
4238
+ category: r[t].type,
4239
+ center: {
4240
+ x: r[t].center.x,
4241
+ y: r[t].center.y,
4242
+ z: (r[t].minz + r[t].maxz) / 2
4243
+ },
4244
+ name: r[t].obj_id,
4245
+ obj_id: r[t].obj_id,
4246
+ pcdPoints: r[t].points,
4247
+ positionArr: r[t].positionArr
4248
+ });
4249
+ }
4250
+ return i;
4257
4251
  };
4258
4252
  //#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 };
4253
+ export { z as classifySegments, ge as getAllGeometry, Oe as getBeamLine, Ae as getColLine, ke as getMainBeamLine, Kn as getMergeMeaning, I as getParallelism, re as getPointCloudMinMax, te as getPointCoverageOnQuad, j as isParallel, L as perpendicularInfo, ae as removeNoisePoints, O as segmentsIntersect2D, _e as updateStEdPoint, De as usegetBeamLine };