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