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.cjs +1 -1
- package/dist/index.js +418 -424
- package/package.json +1 -1
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 =
|
|
424
|
-
return z ?
|
|
425
|
-
type:
|
|
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
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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 } =
|
|
563
|
+
let { newOriginalPoints: x } = ie(p, m, i.originalPoints);
|
|
564
564
|
i.originalPoints = x;
|
|
565
565
|
}
|
|
566
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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),
|
|
581
|
+
e.remove(t), ue(t);
|
|
582
582
|
});
|
|
583
|
-
},
|
|
584
|
-
function
|
|
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),
|
|
587
|
+
e.remove(t), ue(t);
|
|
588
588
|
}
|
|
589
|
-
e.geometry && e.geometry.dispose(), e.material && (Array.isArray(e.material) ? e.material.forEach((e) =>
|
|
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
|
|
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
|
-
|
|
599
|
-
|
|
600
|
-
|
|
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 (
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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 (
|
|
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
|
|
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:
|
|
1565
|
-
if (!
|
|
1566
|
-
|
|
1567
|
-
let
|
|
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
|
-
|
|
1576
|
+
E.closestPointToPoint(e, !0, k).distanceTo(e) < o.gridHeight + .01 && D.push(e);
|
|
1570
1577
|
});
|
|
1571
|
-
let
|
|
1578
|
+
let A = [], M = [];
|
|
1572
1579
|
for (;;) {
|
|
1573
1580
|
let e = [];
|
|
1574
|
-
for (let t = 0; t <
|
|
1575
|
-
for (let t = 0; t <
|
|
1576
|
-
for (let n = 0; n < e.length; n++) if (
|
|
1577
|
-
e.push(
|
|
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
|
-
|
|
1589
|
+
A.push(e);
|
|
1583
1590
|
}
|
|
1584
|
-
let
|
|
1585
|
-
for (let t = 0; 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 =
|
|
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,
|
|
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
|
-
|
|
1594
|
-
let
|
|
1595
|
-
if (
|
|
1596
|
-
let
|
|
1597
|
-
if (
|
|
1598
|
-
let
|
|
1599
|
-
if (Math.abs(
|
|
1600
|
-
if (
|
|
1601
|
-
let n =
|
|
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 } =
|
|
1610
|
+
let { newOriginalPoints: r } = ie(M, P, a.originalPoints), o = [], s = [];
|
|
1604
1611
|
if (r.forEach((e) => {
|
|
1605
|
-
e.z >=
|
|
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),
|
|
1611
|
-
if (
|
|
1612
|
-
if (
|
|
1613
|
-
let e =
|
|
1614
|
-
if (
|
|
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 (
|
|
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 (
|
|
1629
|
-
let t = new e.Vector3(
|
|
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 -
|
|
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
|
-
}
|
|
1658
|
-
|
|
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 >=
|
|
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),
|
|
1666
|
-
if (
|
|
1667
|
-
if (
|
|
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 (
|
|
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 (
|
|
1681
|
-
let t = new e.Vector3(
|
|
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 -
|
|
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
|
-
|
|
1682
|
+
b = A.distanceTo(k);
|
|
1711
1683
|
}
|
|
1712
|
-
if (
|
|
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(
|
|
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(
|
|
1725
|
-
if (Math.abs(
|
|
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
|
-
|
|
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 ? (
|
|
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(),
|
|
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
|
-
|
|
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 (!
|
|
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(
|
|
1754
|
-
(f < p || m < p || h < p || g < p || d) && (r[s[t].index].isFindBeam = !0,
|
|
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
|
-
(
|
|
1728
|
+
(T || t || Math.abs(x - _) > .1 && x > _ / 2 && b > .3) && (w = !0);
|
|
1757
1729
|
}
|
|
1758
1730
|
}
|
|
1759
|
-
if (
|
|
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,
|
|
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
|
-
|
|
1741
|
+
B != -1 && (r[s[B].index].isFindBeam = !1, s[B].isFind = !1);
|
|
1770
1742
|
continue;
|
|
1771
1743
|
}
|
|
1772
1744
|
d.push({
|
|
1773
|
-
start:
|
|
1774
|
-
end:
|
|
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(
|
|
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 -
|
|
1784
|
-
let i = u.closestPointToPoint(r, !0, d), a = new e.Vector3().subVectors(i,
|
|
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 } =
|
|
1789
|
-
for (let e of a) e.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,
|
|
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(
|
|
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(
|
|
1768
|
+
let e = c.distanceTo(P);
|
|
1797
1769
|
e < i && (i = e, s = c);
|
|
1798
1770
|
}
|
|
1799
1771
|
});
|
|
1800
1772
|
}
|
|
1801
|
-
if (o.equals(
|
|
1802
|
-
let { newOnLinePoints: e } =
|
|
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
|
-
|
|
1779
|
+
k.z += f, A.z += f, x += f;
|
|
1808
1780
|
}
|
|
1809
1781
|
}
|
|
1810
|
-
let p =
|
|
1811
|
-
if (p < .4 && !
|
|
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:
|
|
1816
|
-
beamEnd:
|
|
1817
|
-
beamHeight: a.rooftopPz -
|
|
1818
|
-
doorStart:
|
|
1819
|
-
doorEnd:
|
|
1820
|
-
doorHeight:
|
|
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:
|
|
1824
|
-
isDoor:
|
|
1825
|
-
isPullOutDoor:
|
|
1826
|
-
pcbDoorIndexs:
|
|
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(
|
|
1803
|
+
let i = I(k.clone(), A.clone(), r.beamStart.clone(), r.beamEnd.clone());
|
|
1832
1804
|
if (i && i.isParallel) {
|
|
1833
|
-
let t =
|
|
1834
|
-
|
|
1835
|
-
let
|
|
1836
|
-
|
|
1837
|
-
let
|
|
1838
|
-
if (
|
|
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
|
|
1843
|
-
t <
|
|
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
|
|
1820
|
+
let w = !1;
|
|
1849
1821
|
if (!g) {
|
|
1850
|
-
let a = new e.Line3(
|
|
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),
|
|
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 >
|
|
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(),
|
|
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 && (
|
|
1835
|
+
t.distanceTo(i[e]) < .15 && (u.push(i[e]), d.push(t.clone()));
|
|
1864
1836
|
}
|
|
1865
|
-
for (let e = 0; e <
|
|
1866
|
-
if (
|
|
1867
|
-
let
|
|
1868
|
-
if (
|
|
1869
|
-
let e =
|
|
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
|
-
|
|
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 && (
|
|
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
|
|
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
|
-
}),
|
|
1862
|
+
}), N = !0) : f[e][0].id == y && (f[e].push({
|
|
1887
1863
|
id: c,
|
|
1888
|
-
beamStart:
|
|
1889
|
-
beamEnd:
|
|
1890
|
-
}),
|
|
1891
|
-
|
|
1864
|
+
beamStart: k,
|
|
1865
|
+
beamEnd: A
|
|
1866
|
+
}), N = !0), N)); e++);
|
|
1867
|
+
N || f.push([{
|
|
1892
1868
|
id: c,
|
|
1893
|
-
beamStart:
|
|
1894
|
-
beamEnd:
|
|
1869
|
+
beamStart: k,
|
|
1870
|
+
beamEnd: A
|
|
1895
1871
|
}]);
|
|
1896
|
-
let
|
|
1897
|
-
if (
|
|
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++,
|
|
1886
|
+
}), c++, E && b < 2) break;
|
|
1911
1887
|
}
|
|
1912
1888
|
}
|
|
1913
1889
|
}
|
|
1914
|
-
let
|
|
1915
|
-
a.completePointAreaPercentage =
|
|
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
|
|
1924
|
-
let
|
|
1925
|
-
|
|
1926
|
-
let
|
|
1927
|
-
if (
|
|
1928
|
-
let
|
|
1929
|
-
if (Math.abs(s -
|
|
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 } =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 _ =
|
|
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 =
|
|
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 =
|
|
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
|
-
},
|
|
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
|
|
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 *
|
|
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 =
|
|
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 =
|
|
2255
|
-
let j = Me(4, Le, 4,
|
|
2256
|
-
b = T * u, f =
|
|
2257
|
-
let M = Me(j, Re, 4,
|
|
2258
|
-
return b = s * u, f =
|
|
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 *
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
2941
|
+
}, Y = [
|
|
2966
2942
|
[],
|
|
2967
2943
|
[],
|
|
2968
2944
|
[]
|
|
2969
|
-
],
|
|
2945
|
+
], X = [
|
|
2970
2946
|
[],
|
|
2971
2947
|
[],
|
|
2972
2948
|
[]
|
|
2973
|
-
],
|
|
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
|
-
|
|
2992
|
-
let r = i.clamp(
|
|
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(
|
|
2970
|
+
let a = i.clamp(Q.dot(vt), -n.y, n.y);
|
|
2995
2971
|
t.add(vt.multiplyScalar(a));
|
|
2996
|
-
let o = i.clamp(
|
|
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
|
|
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(
|
|
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
|
-
|
|
3010
|
-
for (let e = 0; e < 3; e++) for (let t = 0; t < 3; t++)
|
|
3011
|
-
|
|
3012
|
-
for (let e = 0; e < 3; e++) for (let n = 0; n < 3; n++)
|
|
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 =
|
|
3015
|
-
for (let e = 0; e < 3; e++) if (n =
|
|
3016
|
-
return n =
|
|
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),
|
|
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,
|
|
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 =
|
|
3037
|
-
e.determinant() < 0 && (n = -n),
|
|
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
|
|
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
|
-
},
|
|
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
|
|
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
|
|
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 (!
|
|
3067
|
-
return
|
|
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
|
|
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
|
|
3054
|
+
return At({
|
|
3079
3055
|
type: "Polygon",
|
|
3080
3056
|
coordinates: e
|
|
3081
3057
|
}, t, n);
|
|
3082
3058
|
}
|
|
3083
|
-
function
|
|
3084
|
-
let n =
|
|
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
|
|
3089
|
-
let n =
|
|
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
|
|
3069
|
+
function Ft(e) {
|
|
3094
3070
|
return e % (2 * Math.PI) * 180 / Math.PI;
|
|
3095
3071
|
}
|
|
3096
|
-
function
|
|
3072
|
+
function It(e) {
|
|
3097
3073
|
return e % 360 * Math.PI / 180;
|
|
3098
3074
|
}
|
|
3099
|
-
function
|
|
3075
|
+
function Lt(e, t = "kilometers", n = "kilometers") {
|
|
3100
3076
|
if (!(e >= 0)) throw Error("length must be a positive number");
|
|
3101
|
-
return
|
|
3077
|
+
return Nt(Pt(e, t), n);
|
|
3102
3078
|
}
|
|
3103
|
-
function
|
|
3079
|
+
function Rt(e) {
|
|
3104
3080
|
return !isNaN(e) && e !== null && !Array.isArray(e);
|
|
3105
3081
|
}
|
|
3106
|
-
function
|
|
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
|
|
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 (
|
|
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
|
|
3141
|
+
function Vt(e) {
|
|
3166
3142
|
var t = [];
|
|
3167
|
-
return
|
|
3143
|
+
return Bt(e, function(e) {
|
|
3168
3144
|
t.push(e);
|
|
3169
3145
|
}), t;
|
|
3170
3146
|
}
|
|
3171
|
-
function
|
|
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
|
|
3173
|
+
function Ut(e, t, n) {
|
|
3198
3174
|
var r = n;
|
|
3199
|
-
return
|
|
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
|
|
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
|
-
})),
|
|
3423
|
-
function
|
|
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
|
|
3427
|
-
|
|
3428
|
-
constructor(e = [], t =
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
3482
|
-
var n =
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
3528
|
-
var n =
|
|
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
|
|
3654
|
+
function en(e, t = {}) {
|
|
3679
3655
|
t.concavity = t.concavity || Infinity;
|
|
3680
3656
|
let n = [];
|
|
3681
|
-
if (
|
|
3657
|
+
if (Bt(e, (e) => {
|
|
3682
3658
|
n.push([e[0], e[1]]);
|
|
3683
3659
|
}), !n.length) return null;
|
|
3684
|
-
let r = (0,
|
|
3685
|
-
return r.length > 3 ?
|
|
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
|
|
3665
|
+
function tn(e, t = {}) {
|
|
3690
3666
|
let n = 0, r = 0, i = 0;
|
|
3691
|
-
return
|
|
3667
|
+
return Bt(e, function(e) {
|
|
3692
3668
|
n += e[0], r += e[1], i++;
|
|
3693
|
-
}, !0),
|
|
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
|
|
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
|
|
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
|
|
3691
|
+
function an(e, t, n = {}) {
|
|
3716
3692
|
let r;
|
|
3717
|
-
return r = n.final ?
|
|
3693
|
+
return r = n.final ? on(nn(t), nn(e)) : on(nn(e), nn(t)), r > 180 ? -(360 - r) : r;
|
|
3718
3694
|
}
|
|
3719
|
-
function
|
|
3720
|
-
let n =
|
|
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 (
|
|
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
|
|
3728
|
-
let r =
|
|
3729
|
-
return i[0] += i[0] - r[0] > 180 ? -360 : r[0] - i[0] > 180 ? 360 : 0,
|
|
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
|
|
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
|
|
3741
|
-
let i = t < 0, a =
|
|
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 =
|
|
3744
|
-
return s[0] += s[0] - o[0] > 180 ? -360 : o[0] - s[0] > 180 ? 360 : 0,
|
|
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
|
|
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 =
|
|
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
|
|
3731
|
+
function dn(e) {
|
|
3756
3732
|
if (!e) throw Error("geojson is required");
|
|
3757
3733
|
switch (e.type) {
|
|
3758
|
-
case "Feature": return
|
|
3759
|
-
case "FeatureCollection": return
|
|
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
|
|
3742
|
+
case "GeometryCollection": return hn(e);
|
|
3767
3743
|
default: throw Error("unknown GeoJSON type");
|
|
3768
3744
|
}
|
|
3769
3745
|
}
|
|
3770
|
-
function
|
|
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 =
|
|
3755
|
+
}), t.properties = pn(e.properties), e.geometry == null ? t.geometry = null : t.geometry = hn(e.geometry), t;
|
|
3780
3756
|
}
|
|
3781
|
-
function
|
|
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] =
|
|
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
|
|
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) =>
|
|
3772
|
+
}), t.features = e.features.map((e) => fn(e)), t;
|
|
3797
3773
|
}
|
|
3798
|
-
function
|
|
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) =>
|
|
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
|
|
3778
|
+
function gn(e) {
|
|
3803
3779
|
let t = e;
|
|
3804
|
-
return typeof t[0] == "object" ? t.map((e) =>
|
|
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
|
|
3809
|
-
if (n ||= {}, !
|
|
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 ??
|
|
3815
|
-
return (i === !1 || i === void 0) && (e =
|
|
3816
|
-
let 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
|
|
3823
|
-
if (n.final === !0) return
|
|
3824
|
-
let r =
|
|
3825
|
-
return
|
|
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
|
|
3828
|
-
let n =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
3865
|
-
return bn(
|
|
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
|
|
3851
|
+
case "Polygon": return Tn(e.coordinates);
|
|
3876
3852
|
case "MultiPolygon":
|
|
3877
|
-
for (n = 0; n < e.coordinates.length; n++) t +=
|
|
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
|
|
3862
|
+
function Tn(e) {
|
|
3887
3863
|
let t = 0;
|
|
3888
3864
|
if (e && e.length > 0) {
|
|
3889
|
-
t += Math.abs(
|
|
3890
|
-
for (let n = 1; n < e.length; n++) t -= Math.abs(
|
|
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
|
|
3895
|
-
function
|
|
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] *
|
|
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 *
|
|
3879
|
+
return n * En;
|
|
3904
3880
|
}
|
|
3905
3881
|
//#endregion
|
|
3906
3882
|
//#region node_modules/geojson-minimum-bounding-rectangle/dist/index.js
|
|
3907
|
-
function
|
|
3908
|
-
let t =
|
|
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 =
|
|
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 =
|
|
3913
|
-
c < i && (i = c, a =
|
|
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
|
|
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
|
|
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
|
|
3904
|
+
var Mn = class t extends Dt {
|
|
3929
3905
|
getBoxMesh() {
|
|
3930
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
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:
|
|
3923
|
+
quaternion: Pn.toArray()
|
|
3948
3924
|
};
|
|
3949
3925
|
}
|
|
3950
3926
|
static from(n, r, i, a = new t()) {
|
|
3951
|
-
if (i instanceof e.Euler)
|
|
3952
|
-
else if (i instanceof e.Quaternion)
|
|
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
|
|
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 =
|
|
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 =
|
|
3963
|
-
|
|
3964
|
-
let [u, d] =
|
|
3965
|
-
return n.x = u, n.y = d, this.from(
|
|
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
|
-
},
|
|
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
|
|
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
|
|
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
|
|
3980
|
+
function Vn(e, t, n, r) {
|
|
4005
3981
|
if (e.intersectsOBB(t)) return !0;
|
|
4006
3982
|
{
|
|
4007
|
-
let i =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
4024
|
+
let o = Mn.fromByPath2D(a, n, r);
|
|
4049
4025
|
return o.center.z = i, o;
|
|
4050
4026
|
}
|
|
4051
|
-
var
|
|
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 =
|
|
4056
|
-
|
|
4057
|
-
let
|
|
4058
|
-
if (
|
|
4059
|
-
let
|
|
4060
|
-
for (let n = 0; n < t[i].points.length; n++)
|
|
4061
|
-
let
|
|
4062
|
-
if (
|
|
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]),
|
|
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:
|
|
4053
|
+
let f = Wn(u), p = {
|
|
4054
|
+
points: u,
|
|
4079
4055
|
path: gt(a),
|
|
4080
|
-
h:
|
|
4081
|
-
minz:
|
|
4082
|
-
maxz:
|
|
4056
|
+
h: f.h,
|
|
4057
|
+
minz: f.minz,
|
|
4058
|
+
maxz: f.maxz,
|
|
4083
4059
|
center: {
|
|
4084
|
-
x:
|
|
4085
|
-
y:
|
|
4086
|
-
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:
|
|
4065
|
+
type: l,
|
|
4090
4066
|
averagePz: t[i].averagePz,
|
|
4091
4067
|
obb: null,
|
|
4092
4068
|
isDel: !1,
|
|
4093
|
-
obj_id:
|
|
4069
|
+
obj_id: o,
|
|
4094
4070
|
positionArr: [t[i].position]
|
|
4095
4071
|
};
|
|
4096
|
-
if (p.obb =
|
|
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 ==
|
|
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:
|
|
4079
|
+
type: l,
|
|
4104
4080
|
array: [p]
|
|
4105
|
-
}) : n[m].array.push(p),
|
|
4106
|
-
let e = r.get(
|
|
4107
|
-
e.num += p.points.length, e.datas.push(p), r.set(
|
|
4108
|
-
} else r.set(
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
4177
|
-
let d =
|
|
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" &&
|
|
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" &&
|
|
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" &&
|
|
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" &&
|
|
4173
|
+
if (t === "window" && Un(o, l[e].points)) {
|
|
4198
4174
|
l[e].isDel = !0;
|
|
4199
4175
|
continue;
|
|
4200
4176
|
}
|
|
4201
|
-
if (t === "window" &&
|
|
4177
|
+
if (t === "window" && Un(n, i[a].points)) {
|
|
4202
4178
|
i[a].isDel = !0;
|
|
4203
4179
|
break;
|
|
4204
4180
|
}
|
|
4205
|
-
if (t === "window" &&
|
|
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),
|
|
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 (
|
|
4217
|
-
let s =
|
|
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
|
-
|
|
4196
|
+
Bn(p, o) >= .5 && (l[e].isDel = !0);
|
|
4221
4197
|
} else {
|
|
4222
4198
|
if (r === "switch") continue;
|
|
4223
|
-
if (
|
|
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
|
-
|
|
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,
|
|
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 };
|