rm-graphical-computing-node 1.0.71 → 1.0.73

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.
Files changed (2) hide show
  1. package/dist/index.mjs +218 -202
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -774,11 +774,11 @@ var require_concaveman = __commonJS({
774
774
  while (node) {
775
775
  for (var i = 0; i < node.children.length; i++) {
776
776
  var child = node.children[i];
777
- var dist3 = node.leaf ? sqSegDist(child, b, c) : sqSegBoxDist(b, c, child);
778
- if (dist3 > maxDist) continue;
777
+ var dist2 = node.leaf ? sqSegDist(child, b, c) : sqSegBoxDist(b, c, child);
778
+ if (dist2 > maxDist) continue;
779
779
  queue.push({
780
780
  node: child,
781
- dist: dist3
781
+ dist: dist2
782
782
  });
783
783
  }
784
784
  while (queue.length && !queue.peek().node.children) {
@@ -3087,8 +3087,8 @@ var removeNoisePoints = (lines, lineReader, lineEditor) => {
3087
3087
  let ptCenter = line2.checkResults[g].allCenterPoints[h];
3088
3088
  ptCenter = new THREE3.Vector3(ptCenter.x, ptCenter.y, ptCenter.z);
3089
3089
  let ptClose = line3.closestPointToPoint(ptCenter, true, ptTarget);
3090
- let dist3 = ptCenter.distanceTo(ptClose);
3091
- if (Math.abs(dist3 - halfLen) < 0.01) {
3090
+ let dist2 = ptCenter.distanceTo(ptClose);
3091
+ if (Math.abs(dist2 - halfLen) < 0.01) {
3092
3092
  tmpNum++;
3093
3093
  if (!removePtsIndexMap.has(g)) {
3094
3094
  removePtsIndexMap.set(g, {
@@ -3234,9 +3234,9 @@ var getFarthestPoints = (points) => {
3234
3234
  let result = [];
3235
3235
  for (let i = 0; i < points.length; i++) {
3236
3236
  for (let j = i + 1; j < points.length; j++) {
3237
- const dist3 = points[i].distanceTo(points[j]);
3238
- if (dist3 > maxDist) {
3239
- maxDist = dist3;
3237
+ const dist2 = points[i].distanceTo(points[j]);
3238
+ if (dist2 > maxDist) {
3239
+ maxDist = dist2;
3240
3240
  result = [points[i], points[j]];
3241
3241
  }
3242
3242
  }
@@ -3482,10 +3482,10 @@ var voxelDownsample2DForContour = (points, cellSize) => {
3482
3482
  if (y > cell.maxY[1]) cell.maxY = p;
3483
3483
  const dx = x - cell.cx;
3484
3484
  const dy = y - cell.cy;
3485
- const dist22 = dx * dx + dy * dy;
3486
- if (dist22 < cell.centerDist2) {
3485
+ const dist2 = dx * dx + dy * dy;
3486
+ if (dist2 < cell.centerDist2) {
3487
3487
  cell.center = p;
3488
- cell.centerDist2 = dist22;
3488
+ cell.centerDist2 = dist2;
3489
3489
  }
3490
3490
  }
3491
3491
  const seen = /* @__PURE__ */ new Set();
@@ -3942,13 +3942,13 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
3942
3942
  let newDoorSt = new THREE5.Vector3(lines[u4].start.x, lines[u4].start.y, 0);
3943
3943
  let newDoorEd = new THREE5.Vector3(lines[u4].end.x, lines[u4].end.y, 0);
3944
3944
  let dist1 = door.doorStartPt.distanceTo(door.doorEndPt);
3945
- let dist22 = newDoorSt.distanceTo(newDoorEd);
3945
+ let dist2 = newDoorSt.distanceTo(newDoorEd);
3946
3946
  let res = getParallelism(door.doorStartPt, door.doorEndPt, newDoorSt, newDoorEd);
3947
- if (Math.abs(dist22 - dist1) < 0.5 && res && res.angleDeg < 10) {
3947
+ if (Math.abs(dist2 - dist1) < 0.5 && res && res.angleDeg < 10) {
3948
3948
  door.doorStartPt = new THREE5.Vector3(lines[u4].start.x, lines[u4].start.y, 0);
3949
3949
  door.doorEndPt = new THREE5.Vector3(lines[u4].end.x, lines[u4].end.y, 0);
3950
3950
  break;
3951
- } else if (Math.abs(dist22 - dist1) > 1.3 && res && res.angleDeg < 10) {
3951
+ } else if (Math.abs(dist2 - dist1) > 1.3 && res && res.angleDeg < 10) {
3952
3952
  let restmp = classifySegments(door.doorStartPt, door.doorEndPt, newDoorSt, newDoorEd, { parallelAngleMax: THREE5.MathUtils.degToRad(15) });
3953
3953
  let dist11 = door.doorStartPt.distanceTo(newDoorSt);
3954
3954
  let dist12 = door.doorStartPt.distanceTo(newDoorEd);
@@ -3963,8 +3963,8 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
3963
3963
  let resTmp1 = lineTmp33.closestPointToPoint(door.doorStartPt, true, new THREE5.Vector3());
3964
3964
  let resTmp2 = lineTmp33.closestPointToPoint(door.doorEndPt, true, new THREE5.Vector3());
3965
3965
  let dist15 = resTmp1.distanceTo(door.doorStartPt);
3966
- let dist23 = resTmp2.distanceTo(door.doorEndPt);
3967
- if (dist15 < 0.1 || dist23 < 0.1) {
3966
+ let dist22 = resTmp2.distanceTo(door.doorEndPt);
3967
+ if (dist15 < 0.1 || dist22 < 0.1) {
3968
3968
  door.inWall = true;
3969
3969
  break;
3970
3970
  }
@@ -4392,14 +4392,14 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
4392
4392
  let line3 = new THREE5.Line3(new THREE5.Vector3(line2.start.x, line2.start.y, 0), new THREE5.Vector3(line2.end.x, line2.end.y, 0));
4393
4393
  let targeVec = new THREE5.Vector3();
4394
4394
  let ptClose = line3.closestPointToPoint(ptCenter, true, targeVec);
4395
- let dist3 = ptCenter.distanceTo(ptClose);
4396
- if (dist3 < 0.15) {
4395
+ let dist2 = ptCenter.distanceTo(ptClose);
4396
+ if (dist2 < 0.15) {
4397
4397
  let dist1 = beamSt.distanceTo(doorSt);
4398
4398
  let dist22 = beamEd.distanceTo(doorSt);
4399
4399
  if (dist1 > 0.25 && dist22 > 0.25) {
4400
- let dist32 = beamSt.distanceTo(doorEd);
4400
+ let dist3 = beamSt.distanceTo(doorEd);
4401
4401
  let dist4 = beamEd.distanceTo(doorEd);
4402
- if (dist32 > 0.2 && dist4 > 0.2) {
4402
+ if (dist3 > 0.2 && dist4 > 0.2) {
4403
4403
  continue;
4404
4404
  }
4405
4405
  }
@@ -4434,10 +4434,10 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
4434
4434
  if (Math.abs(distTmp1 - result.overlap) < 0.25 || Math.abs(distTmp2 - result.overlap) < 0.25) {
4435
4435
  if (distTmp2 > distTmp1 && Math.abs(distTmp2 - result.overlap) > 1) {
4436
4436
  let dist1 = beamSt.distanceTo(doorSt);
4437
- let dist22 = beamSt.distanceTo(doorEd);
4437
+ let dist2 = beamSt.distanceTo(doorEd);
4438
4438
  let dist3 = beamEd.distanceTo(doorSt);
4439
4439
  let dist4 = beamEd.distanceTo(doorEd);
4440
- let dist5 = dist1 < dist22 ? dist1 : dist22;
4440
+ let dist5 = dist1 < dist2 ? dist1 : dist2;
4441
4441
  let dist6 = dist3 < dist4 ? dist3 : dist4;
4442
4442
  let beamVec = new THREE5.Vector3().subVectors(beamSt, beamEd).normalize();
4443
4443
  let addDoorLen = distTmp2 - result.overlap;
@@ -4783,13 +4783,13 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
4783
4783
  }
4784
4784
  let targetVector = new THREE5.Vector3();
4785
4785
  let ptClose = line3.closestPointToPoint(ptCenter, true, targetVector);
4786
- let dist3 = ptClose.distanceTo(ptCenter);
4786
+ let dist2 = ptClose.distanceTo(ptCenter);
4787
4787
  let vec2 = new THREE5.Vector3().subVectors(ptCenter, ptClose).normalize();
4788
4788
  let vecNegate = vec2.clone().negate();
4789
- let ptCenterOther = ptCenter.clone().addScaledVector(vecNegate, dist3 + 0.1);
4789
+ let ptCenterOther = ptCenter.clone().addScaledVector(vecNegate, dist2 + 0.1);
4790
4790
  let isInsert = segmentsIntersect2D(line3.start, line3.end, ptCenter, ptCenterOther);
4791
4791
  let isTrue = !isDoor && !tmpDoorBeamData.isDoor && (length1 > length22 * 2.5 || length22 > length1 * 2.5);
4792
- if (dist3 < 0.4 && isInsert != null && !isTrue) {
4792
+ if (dist2 < 0.5 && isInsert != null && !isTrue) {
4793
4793
  let isSameLine = false;
4794
4794
  for (let v2 = 0; v2 < line2.doorAndBeamData.length; v2++) {
4795
4795
  if (line2.doorAndBeamData[v2].id == tmpDoorBeamData.id) {
@@ -4836,28 +4836,28 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
4836
4836
  vec2 = vec2.negate();
4837
4837
  }
4838
4838
  if (length1 > minDoorLength2 && !tmpDoorBeamData.isPullOutDoor) {
4839
- tmpDoorBeamData.beamStart = beamTmpSt.clone().addScaledVector(vecNegate, dist3);
4840
- tmpDoorBeamData.beamEnd = beamTmpEd.clone().addScaledVector(vecNegate, dist3);
4841
- tmpDoorBeamData.doorStart = doorTmpSt.clone().addScaledVector(vecNegate, dist3);
4842
- tmpDoorBeamData.doorEnd = doorTmpEd.clone().addScaledVector(vecNegate, dist3);
4839
+ tmpDoorBeamData.beamStart = beamTmpSt.clone().addScaledVector(vecNegate, dist2);
4840
+ tmpDoorBeamData.beamEnd = beamTmpEd.clone().addScaledVector(vecNegate, dist2);
4841
+ tmpDoorBeamData.doorStart = doorTmpSt.clone().addScaledVector(vecNegate, dist2);
4842
+ tmpDoorBeamData.doorEnd = doorTmpEd.clone().addScaledVector(vecNegate, dist2);
4843
4843
  tmpDoorBeamData.doorHeight = doorAndBeamDataObj.doorHeight;
4844
4844
  tmpDoorBeamData.beamStart.z = tmpDoorBeamData.beamEnd.z = tmpDoorBeamData.doorStart.z + tmpDoorBeamData.doorHeight;
4845
4845
  tmpDoorBeamData.doorOpenEndPoint = doorAndBeamDataObj.doorOpenEndPoint.clone();
4846
4846
  tmpDoorBeamData.doorOpenVector = doorAndBeamDataObj.doorOpenVector.clone();
4847
4847
  } else if (!isPullOutDoor || isPullOutDoor && tmpDoorBeamData.isPullOutDoor && hasCommon) {
4848
- doorAndBeamDataObj.beamStart = tmpDoorBeamData.beamStart.clone().addScaledVector(vec2, dist3);
4849
- doorAndBeamDataObj.beamEnd = tmpDoorBeamData.beamEnd.clone().addScaledVector(vec2, dist3);
4850
- doorAndBeamDataObj.doorStart = tmpDoorBeamData.doorStart.clone().addScaledVector(vec2, dist3);
4851
- doorAndBeamDataObj.doorEnd = tmpDoorBeamData.doorEnd.clone().addScaledVector(vec2, dist3);
4848
+ doorAndBeamDataObj.beamStart = tmpDoorBeamData.beamStart.clone().addScaledVector(vec2, dist2);
4849
+ doorAndBeamDataObj.beamEnd = tmpDoorBeamData.beamEnd.clone().addScaledVector(vec2, dist2);
4850
+ doorAndBeamDataObj.doorStart = tmpDoorBeamData.doorStart.clone().addScaledVector(vec2, dist2);
4851
+ doorAndBeamDataObj.doorEnd = tmpDoorBeamData.doorEnd.clone().addScaledVector(vec2, dist2);
4852
4852
  doorAndBeamDataObj.doorHeight = tmpDoorBeamData.doorHeight;
4853
4853
  doorAndBeamDataObj.beamStart.z = doorAndBeamDataObj.beamEnd.z = doorAndBeamDataObj.doorStart.z + doorAndBeamDataObj.doorHeight;
4854
4854
  doorAndBeamDataObj.doorOpenEndPoint = tmpDoorBeamData.doorOpenEndPoint.clone();
4855
4855
  doorAndBeamDataObj.doorOpenVector = tmpDoorBeamData.doorOpenVector.clone();
4856
4856
  } else {
4857
- tmpDoorBeamData.beamStart = beamTmpSt.clone().addScaledVector(vecNegate, dist3);
4858
- tmpDoorBeamData.beamEnd = beamTmpEd.clone().addScaledVector(vecNegate, dist3);
4859
- tmpDoorBeamData.doorStart = doorTmpSt.clone().addScaledVector(vecNegate, dist3);
4860
- tmpDoorBeamData.doorEnd = doorTmpEd.clone().addScaledVector(vecNegate, dist3);
4857
+ tmpDoorBeamData.beamStart = beamTmpSt.clone().addScaledVector(vecNegate, dist2);
4858
+ tmpDoorBeamData.beamEnd = beamTmpEd.clone().addScaledVector(vecNegate, dist2);
4859
+ tmpDoorBeamData.doorStart = doorTmpSt.clone().addScaledVector(vecNegate, dist2);
4860
+ tmpDoorBeamData.doorEnd = doorTmpEd.clone().addScaledVector(vecNegate, dist2);
4861
4861
  tmpDoorBeamData.doorHeight = doorAndBeamDataObj.doorHeight;
4862
4862
  tmpDoorBeamData.beamStart.z = tmpDoorBeamData.beamEnd.z = tmpDoorBeamData.doorStart.z + tmpDoorBeamData.doorHeight;
4863
4863
  tmpDoorBeamData.doorOpenEndPoint = doorAndBeamDataObj.doorOpenEndPoint.clone();
@@ -4869,28 +4869,28 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
4869
4869
  vec2 = vec2.negate();
4870
4870
  }
4871
4871
  if (length22 > minDoorLength2 && !isPullOutDoor) {
4872
- doorAndBeamDataObj.beamStart = tmpDoorBeamData.beamStart.clone().addScaledVector(vecNegate, dist3);
4873
- doorAndBeamDataObj.beamEnd = tmpDoorBeamData.beamEnd.clone().addScaledVector(vecNegate, dist3);
4874
- doorAndBeamDataObj.doorStart = tmpDoorBeamData.doorStart.clone().addScaledVector(vecNegate, dist3);
4875
- doorAndBeamDataObj.doorEnd = tmpDoorBeamData.doorEnd.clone().addScaledVector(vecNegate, dist3);
4872
+ doorAndBeamDataObj.beamStart = tmpDoorBeamData.beamStart.clone().addScaledVector(vecNegate, dist2);
4873
+ doorAndBeamDataObj.beamEnd = tmpDoorBeamData.beamEnd.clone().addScaledVector(vecNegate, dist2);
4874
+ doorAndBeamDataObj.doorStart = tmpDoorBeamData.doorStart.clone().addScaledVector(vecNegate, dist2);
4875
+ doorAndBeamDataObj.doorEnd = tmpDoorBeamData.doorEnd.clone().addScaledVector(vecNegate, dist2);
4876
4876
  doorAndBeamDataObj.doorHeight = tmpDoorBeamData.doorHeight;
4877
4877
  doorAndBeamDataObj.beamStart.z = doorAndBeamDataObj.beamEnd.z = doorAndBeamDataObj.doorStart.z + doorAndBeamDataObj.doorHeight;
4878
4878
  doorAndBeamDataObj.doorOpenEndPoint = tmpDoorBeamData.doorOpenEndPoint.clone();
4879
4879
  doorAndBeamDataObj.doorOpenVector = tmpDoorBeamData.doorOpenVector.clone();
4880
4880
  } else if (!tmpDoorBeamData.isPullOutDoor || isPullOutDoor && tmpDoorBeamData.isPullOutDoor && hasCommon) {
4881
- tmpDoorBeamData.beamStart = beamTmpSt.clone().addScaledVector(vec2, dist3);
4882
- tmpDoorBeamData.beamEnd = beamTmpEd.clone().addScaledVector(vec2, dist3);
4883
- tmpDoorBeamData.doorStart = doorTmpSt.clone().addScaledVector(vec2, dist3);
4884
- tmpDoorBeamData.doorEnd = doorTmpEd.clone().addScaledVector(vec2, dist3);
4881
+ tmpDoorBeamData.beamStart = beamTmpSt.clone().addScaledVector(vec2, dist2);
4882
+ tmpDoorBeamData.beamEnd = beamTmpEd.clone().addScaledVector(vec2, dist2);
4883
+ tmpDoorBeamData.doorStart = doorTmpSt.clone().addScaledVector(vec2, dist2);
4884
+ tmpDoorBeamData.doorEnd = doorTmpEd.clone().addScaledVector(vec2, dist2);
4885
4885
  tmpDoorBeamData.doorHeight = doorAndBeamDataObj.doorHeight;
4886
4886
  tmpDoorBeamData.beamStart.z = tmpDoorBeamData.beamEnd.z = tmpDoorBeamData.doorStart.z + tmpDoorBeamData.doorHeight;
4887
4887
  tmpDoorBeamData.doorOpenEndPoint = doorAndBeamDataObj.doorOpenEndPoint.clone();
4888
4888
  tmpDoorBeamData.doorOpenVector = doorAndBeamDataObj.doorOpenVector.clone();
4889
4889
  } else {
4890
- doorAndBeamDataObj.beamStart = tmpDoorBeamData.beamStart.clone().addScaledVector(vecNegate, dist3);
4891
- doorAndBeamDataObj.beamEnd = tmpDoorBeamData.beamEnd.clone().addScaledVector(vecNegate, dist3);
4892
- doorAndBeamDataObj.doorStart = tmpDoorBeamData.doorStart.clone().addScaledVector(vecNegate, dist3);
4893
- doorAndBeamDataObj.doorEnd = tmpDoorBeamData.doorEnd.clone().addScaledVector(vecNegate, dist3);
4890
+ doorAndBeamDataObj.beamStart = tmpDoorBeamData.beamStart.clone().addScaledVector(vecNegate, dist2);
4891
+ doorAndBeamDataObj.beamEnd = tmpDoorBeamData.beamEnd.clone().addScaledVector(vecNegate, dist2);
4892
+ doorAndBeamDataObj.doorStart = tmpDoorBeamData.doorStart.clone().addScaledVector(vecNegate, dist2);
4893
+ doorAndBeamDataObj.doorEnd = tmpDoorBeamData.doorEnd.clone().addScaledVector(vecNegate, dist2);
4894
4894
  doorAndBeamDataObj.doorHeight = tmpDoorBeamData.doorHeight;
4895
4895
  doorAndBeamDataObj.beamStart.z = doorAndBeamDataObj.beamEnd.z = doorAndBeamDataObj.doorStart.z + doorAndBeamDataObj.doorHeight;
4896
4896
  doorAndBeamDataObj.doorOpenEndPoint = tmpDoorBeamData.doorOpenEndPoint.clone();
@@ -5069,19 +5069,19 @@ var getBeamLine = async (lines, runDataList, pcdData, lineReader, lineEditor, on
5069
5069
  let ptClose1 = line3.closestPointToPoint(beamStOther, true, target);
5070
5070
  let ptClose2 = line3.closestPointToPoint(beamEdOther, true, target);
5071
5071
  let dist1 = ptClose1.distanceTo(beamStOther);
5072
- let dist23 = ptClose2.distanceTo(beamEdOther);
5072
+ let dist2 = ptClose2.distanceTo(beamEdOther);
5073
5073
  let doorStartPt, doorEndPt;
5074
- if (dist1 > dist23 && dist23 > minDoorLength) {
5074
+ if (dist1 > dist2 && dist2 > minDoorLength) {
5075
5075
  doorStartPt = beamEdOther;
5076
5076
  doorEndPt = ptClose2;
5077
- } else if (dist1 < dist23 && dist1 > minDoorLength) {
5077
+ } else if (dist1 < dist2 && dist1 > minDoorLength) {
5078
5078
  doorStartPt = beamStOther;
5079
5079
  doorEndPt = ptClose1;
5080
5080
  } else
5081
5081
  continue;
5082
5082
  dist1 = nearDoorPt.distanceTo(beamStOther);
5083
- dist23 = nearDoorPt.distanceTo(beamEdOther);
5084
- if (dist1 > maxDoorLength && dist23 > maxDoorLength)
5083
+ dist2 = nearDoorPt.distanceTo(beamEdOther);
5084
+ if (dist1 > maxDoorLength && dist2 > maxDoorLength)
5085
5085
  continue;
5086
5086
  let isPP2 = getParallelism(doorStartPt, doorEndPt, beamStOther, beamEdOther);
5087
5087
  let isPPP = getParallelism(doorStartPt, doorEndPt, doorStExtended, doorEdExtended);
@@ -5409,7 +5409,6 @@ var findClosedRegionUuidGroups = (inputSegments, options = {}) => {
5409
5409
  for (const seg of segments) {
5410
5410
  const a2 = project(seg.start);
5411
5411
  const b2 = project(seg.end);
5412
- if (dist2(a2, b2) < EPS * EPS) continue;
5413
5412
  const va = getVertexId(a2);
5414
5413
  const vb = getVertexId(b2);
5415
5414
  if (va === vb) continue;
@@ -5572,9 +5571,6 @@ function splitSegmentsAtIntersections(inputSegments, project, EPS = 1e-6) {
5572
5571
  for (let k = 0; k < uniquePoints.length - 1; k++) {
5573
5572
  const p1 = uniquePoints[k].point;
5574
5573
  const p2 = uniquePoints[k + 1].point;
5575
- const p12 = project(p1);
5576
- const p22 = project(p2);
5577
- if (dist2(p12, p22) < EPS * EPS) continue;
5578
5574
  result.push({
5579
5575
  start: p1,
5580
5576
  end: p2,
@@ -5620,11 +5616,6 @@ function segmentIntersection(p1, p2, q1, q2, EPS = 1e-6) {
5620
5616
  function cross2(a, b) {
5621
5617
  return a.x * b.y - a.y * b.x;
5622
5618
  }
5623
- function dist2(a, b) {
5624
- const dx = a.x - b.x;
5625
- const dy = a.y - b.y;
5626
- return dx * dx + dy * dy;
5627
- }
5628
5619
  function signedArea(points) {
5629
5620
  let area2 = 0;
5630
5621
  for (let i = 0; i < points.length; i++) {
@@ -5665,7 +5656,8 @@ var getColLine = async (lines, runDataList, collectDataPath, pointCloudCluster =
5665
5656
  threeEdgeRect: []
5666
5657
  };
5667
5658
  let isFindColIndexs = /* @__PURE__ */ new Set();
5668
- let minColLineLength = 0.05;
5659
+ let minColLineLength = 0.01;
5660
+ let threeMinColLineLength = 0.15;
5669
5661
  let maxColLineLength = 2;
5670
5662
  let minArea = 0.1;
5671
5663
  let maxArea = 2.5;
@@ -5814,7 +5806,7 @@ var getColLine = async (lines, runDataList, collectDataPath, pointCloudCluster =
5814
5806
  let isEq6 = ptIsEqual(startPt4, endPt1);
5815
5807
  let isEq7 = ptIsEqual(endPt4, startPt1);
5816
5808
  let isEq8 = ptIsEqual(endPt4, endPt1);
5817
- if (isEq5 || isEq6 || isEq7 || isEq8) {
5809
+ if ((isEq5 || isEq6 || isEq7 || isEq8) && length1 < length2 * 3 && length2 < length1 * 3) {
5818
5810
  isRect = true;
5819
5811
  } else {
5820
5812
  for (let m = l + 1; m < result[i].lineIndexes.length; m++) {
@@ -5850,8 +5842,10 @@ var getColLine = async (lines, runDataList, collectDataPath, pointCloudCluster =
5850
5842
  isEq7 = ptIsEqual(endPt4, startPt1);
5851
5843
  isEq8 = ptIsEqual(endPt4, endPt1);
5852
5844
  if (isEq5 || isEq6 || isEq7 || isEq8) {
5853
- isRect = true;
5854
- break;
5845
+ if (length1 < length2 * 3 && length2 < length1 * 3) {
5846
+ isRect = true;
5847
+ break;
5848
+ }
5855
5849
  }
5856
5850
  }
5857
5851
  }
@@ -5872,7 +5866,7 @@ var getColLine = async (lines, runDataList, collectDataPath, pointCloudCluster =
5872
5866
  }
5873
5867
  for (let i = 0; i < lines.length; i++) {
5874
5868
  let length1 = lines[i].length;
5875
- if (isFindColIndexs.has(lines[i].uuid) || length1 < minColLineLength || length1 > maxColLineLength)
5869
+ if (isFindColIndexs.has(lines[i].uuid) || length1 < threeMinColLineLength || length1 > maxColLineLength)
5876
5870
  continue;
5877
5871
  let colIndexs = {
5878
5872
  uuids: [],
@@ -5911,7 +5905,7 @@ var getColLine = async (lines, runDataList, collectDataPath, pointCloudCluster =
5911
5905
  let vec2 = vec1.clone().negate();
5912
5906
  for (let j = 0; j < lines.length; j++) {
5913
5907
  let length2 = lines[j].length;
5914
- if (j == i || isFindColIndexs.has(j) || length2 < minColLineLength || length2 > maxColLineLength)
5908
+ if (j == i || isFindColIndexs.has(j) || length2 < threeMinColLineLength || length2 > maxColLineLength)
5915
5909
  continue;
5916
5910
  let startPt2 = new THREE6.Vector3(lines[j].start.x, lines[j].start.y, lines[j].start.z);
5917
5911
  let endPt2 = new THREE6.Vector3(lines[j].end.x, lines[j].end.y, lines[j].end.z);
@@ -5932,7 +5926,7 @@ var getColLine = async (lines, runDataList, collectDataPath, pointCloudCluster =
5932
5926
  }
5933
5927
  for (let k = 0; k < lines.length; k++) {
5934
5928
  let length3 = lines[k].length;
5935
- if (k == i || k == j || isFindColIndexs.has(k) || length3 < minColLineLength || length3 > maxColLineLength)
5929
+ if (k == i || k == j || isFindColIndexs.has(k) || length3 < threeMinColLineLength || length3 > maxColLineLength)
5936
5930
  continue;
5937
5931
  let startPt3 = new THREE6.Vector3(lines[k].start.x, lines[k].start.y, lines[k].start.z);
5938
5932
  let endPt3 = new THREE6.Vector3(lines[k].end.x, lines[k].end.y, lines[k].end.z);
@@ -8081,8 +8075,8 @@ function calculateRhumbDistance(origin, destination, radius) {
8081
8075
  const delta = Math.sqrt(
8082
8076
  DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda
8083
8077
  );
8084
- const dist3 = delta * R;
8085
- return dist3;
8078
+ const dist2 = delta * R;
8079
+ return dist2;
8086
8080
  }
8087
8081
 
8088
8082
  // node_modules/@turf/rhumb-destination/dist/esm/index.js
@@ -10113,7 +10107,7 @@ var getStaircase = (allProjectionResults, scene) => {
10113
10107
  let isP = perpendicularInfo(ptBottom3i, ptBottom1i, ptBottom3j, ptBottom1j);
10114
10108
  if (isP && isP.angle > 75) {
10115
10109
  let dist1 = ptBottom1j.distanceTo(ptTop1i);
10116
- let dist22 = ptBottom1j.distanceTo(ptTop2i);
10110
+ let dist2 = ptBottom1j.distanceTo(ptTop2i);
10117
10111
  let dist3 = ptBottom2j.distanceTo(ptTop1i);
10118
10112
  let dist4 = ptBottom2j.distanceTo(ptTop2i);
10119
10113
  let retcBotton1j = ptTop1i.clone();
@@ -10125,8 +10119,8 @@ var getStaircase = (allProjectionResults, scene) => {
10125
10119
  let newTop1j = retcBotton1j.clone().addScaledVector(vecMove, stairDatas[j].stairLength);
10126
10120
  let newTop2j = rectBotton2j.clone().addScaledVector(vecMove, stairDatas[j].stairLength);
10127
10121
  let nearDist = dist1;
10128
- if (nearDist > dist22 || nearDist > dist4) {
10129
- nearDist = dist22;
10122
+ if (nearDist > dist2 || nearDist > dist4) {
10123
+ nearDist = dist2;
10130
10124
  retcBotton1j = ptTop2i.clone();
10131
10125
  rectBotton2j = retcBotton1j.clone().addScaledVector(vecStepWidthi, stairDatas[j].staitWidth);
10132
10126
  vecMove = new THREE8.Vector3().subVectors(ptTop1i, ptTop2i).normalize();
@@ -10354,12 +10348,12 @@ function getStaircaseFloor(stairDatas, finalFloorMap) {
10354
10348
  for (let f = 0; f < floorPoints.length; f++) {
10355
10349
  let tmpFloorPoint = new THREE8.Vector3(floorPoints[f].x, floorPoints[f].y, ptTmpTmpBottom1i.z);
10356
10350
  let ptTmpClose = tmpTmpLine.closestPointToPoint(tmpFloorPoint, false, new THREE8.Vector3());
10357
- let dist3 = ptTmpClose.distanceTo(tmpFloorPoint);
10351
+ let dist2 = ptTmpClose.distanceTo(tmpFloorPoint);
10358
10352
  let ptTmpClose2 = tmpTmpLine2.closestPointToPoint(tmpFloorPoint, false, new THREE8.Vector3());
10359
10353
  let tmpVec = new THREE8.Vector3().subVectors(tmpFloorPoint, ptTmpClose2).normalize();
10360
10354
  const isP = isParallel(tmpVec, stairDatas[i].vecStepWidth.clone().negate(), 0.1);
10361
- if (dist3 < maxDist && isP.sameDirection) {
10362
- maxDist = dist3;
10355
+ if (dist2 < maxDist && isP.sameDirection) {
10356
+ maxDist = dist2;
10363
10357
  moveDist = tmpFloorPoint.distanceTo(ptTmpClose2);
10364
10358
  nearPt = tmpFloorPoint.clone();
10365
10359
  nearPtZ = floorPoints[f].z;
@@ -10383,10 +10377,10 @@ function getStaircaseFloor(stairDatas, finalFloorMap) {
10383
10377
  let ptTmpClose = tmpTmpLine.closestPointToPoint(tmpFloorPoint, false, new THREE8.Vector3());
10384
10378
  let ptTmpClose2 = tmpTmpLine2.closestPointToPoint(tmpFloorPoint, false, new THREE8.Vector3());
10385
10379
  let tmpVec = new THREE8.Vector3().subVectors(tmpFloorPoint, ptTmpClose2).normalize();
10386
- let dist3 = ptTmpClose.distanceTo(tmpFloorPoint);
10380
+ let dist2 = ptTmpClose.distanceTo(tmpFloorPoint);
10387
10381
  const isP = isParallel(tmpVec, stairDatas[i].vecStepWidth);
10388
- if (dist3 < maxDist && isP.sameDirection) {
10389
- maxDist = dist3;
10382
+ if (dist2 < maxDist && isP.sameDirection) {
10383
+ maxDist = dist2;
10390
10384
  moveDist = tmpFloorPoint.distanceTo(ptTmpClose2);
10391
10385
  nearPt = tmpFloorPoint;
10392
10386
  nearPtZ = floorPoints[f].z;
@@ -11150,6 +11144,8 @@ var getFlatFloorData = (lines, runDataList, pointCloudCluster = null) => {
11150
11144
  avaregPzs.push(1e4);
11151
11145
  }
11152
11146
  }
11147
+ if (maxContourIndex == -1)
11148
+ return null;
11153
11149
  return {
11154
11150
  contour: floorDatas[maxContourIndex].contour,
11155
11151
  averagePz: avaregPzs[maxContourIndex]
@@ -11474,7 +11470,7 @@ var getWindowData = (lines, pcdData, lineReader) => {
11474
11470
  for (let i = 0; i < pcdData.length; i++) {
11475
11471
  const window = pcdData[i];
11476
11472
  window.isFindWindow = false;
11477
- if (window.category == "window") {
11473
+ if (window.category == "window" && !window.isBayWindowObj) {
11478
11474
  let boxPoints = [];
11479
11475
  window.coordinatesByArea.coordinates.forEach((p) => {
11480
11476
  boxPoints.push(new THREE10.Vector3(p.x, p.y, p.z));
@@ -11658,14 +11654,14 @@ var getWindowData = (lines, pcdData, lineReader) => {
11658
11654
  let line3 = new THREE10.Line3(new THREE10.Vector3(line2.start.x, line2.start.y, 0), new THREE10.Vector3(line2.end.x, line2.end.y, 0));
11659
11655
  let targeVec = new THREE10.Vector3();
11660
11656
  let ptClose = line3.closestPointToPoint(ptCenter, true, targeVec);
11661
- let dist3 = ptCenter.distanceTo(ptClose);
11662
- if (dist3 < 0.15) {
11657
+ let dist2 = ptCenter.distanceTo(ptClose);
11658
+ if (dist2 < 0.15) {
11663
11659
  let dist1 = beamSt.distanceTo(doorSt);
11664
11660
  let dist22 = beamEd.distanceTo(doorSt);
11665
11661
  if (dist1 > 0.25 && dist22 > 0.25) {
11666
- let dist32 = beamSt.distanceTo(doorEd);
11662
+ let dist3 = beamSt.distanceTo(doorEd);
11667
11663
  let dist4 = beamEd.distanceTo(doorEd);
11668
- if (dist32 > 0.2 && dist4 > 0.2) {
11664
+ if (dist3 > 0.2 && dist4 > 0.2) {
11669
11665
  continue;
11670
11666
  }
11671
11667
  }
@@ -11845,104 +11841,124 @@ var getWindowData = (lines, pcdData, lineReader) => {
11845
11841
  let afterDoorLen = doorTmpEd.distanceTo(doorTmpSt);
11846
11842
  if (afterDoorLen < 0.4 && !isWindow || afterDoorLen < 0.3 && isWindow)
11847
11843
  continue;
11848
- const windowLine = new THREE10.Line3(doorTmpSt, doorTmpEd);
11849
11844
  const windowPcd = windowDatas[findDoorDataIndex];
11850
11845
  const windowPcdSt = windowPcd.windowStartPt.clone();
11851
11846
  const windowPcdEd = windowPcd.windowEndPt.clone();
11852
- const windowLen = windowPcdSt.distanceTo(windowPcdEd);
11853
- let rectPts = windowPcd.rectPts.map((p) => new THREE10.Vector3(p.x, p.y, p.z));
11854
- rectPts = setPointsSameZ(rectPts, doorTmpSt.z);
11855
- let ptClose = new THREE10.Vector3();
11856
- let vec2 = new THREE10.Vector3();
11857
- if (rectPts.length == 5)
11858
- rectPts.splice(4, 1);
11859
- let shortLinePt1 = rectPts[0];
11860
- let shortLinePt2 = rectPts[1];
11861
- let shortLinePt3 = rectPts[2];
11862
- let shortLinePt4 = rectPts[3];
11863
- if (rectPts[0].distanceTo(rectPts[1]) > rectPts[1].distanceTo(rectPts[2])) {
11864
- shortLinePt1 = rectPts[1];
11865
- shortLinePt2 = rectPts[2];
11866
- shortLinePt3 = rectPts[3];
11867
- shortLinePt4 = rectPts[0];
11847
+ const windowPcdLen = windowPcdSt.distanceTo(windowPcdEd);
11848
+ const windowPcdHeight = Math.abs(windowPcd.maxZ - windowPcd.minZ);
11849
+ let windowHeight = beamTmpSt.z - doorTmpSt.z;
11850
+ const windowLen = doorTmpSt.distanceTo(doorTmpEd);
11851
+ let changeWindowSize = false;
11852
+ let windowSizeThreshold = 0.5;
11853
+ if ((Math.abs(windowPcdLen - windowLen) < windowSizeThreshold || windowPcdLen > windowLen) && (Math.abs(windowPcdHeight - windowHeight) < windowSizeThreshold || windowPcdHeight > windowHeight)) {
11854
+ changeWindowSize = true;
11855
+ } else {
11856
+ let checkResultsNum = region.points.length / 4;
11857
+ let gridWidth = region.gridWidth;
11858
+ let gridHeight = region.gridHeight;
11859
+ let lenNum = Math.floor(windowLen / gridWidth);
11860
+ let heightNum = Math.floor(windowHeight / gridHeight);
11861
+ let totalCheckResultsNum = lenNum * heightNum;
11862
+ let checkResultsPercentage = checkResultsNum / totalCheckResultsNum;
11863
+ if (checkResultsPercentage < 0.8)
11864
+ changeWindowSize = true;
11868
11865
  }
11869
- let addShortLen = 0.2;
11870
- let vecShort1 = new THREE10.Vector3().subVectors(shortLinePt2, shortLinePt1).normalize();
11871
- let vecShort2 = new THREE10.Vector3().subVectors(shortLinePt4, shortLinePt3).normalize();
11872
- shortLinePt1 = shortLinePt1.addScaledVector(vecShort1, -addShortLen);
11873
- shortLinePt2 = shortLinePt2.addScaledVector(vecShort1, addShortLen);
11874
- shortLinePt3 = shortLinePt3.addScaledVector(vecShort2, -addShortLen);
11875
- shortLinePt4 = shortLinePt4.addScaledVector(vecShort2, addShortLen);
11876
- let tmpVec = new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize();
11877
- let tmpDoorTmpSt = doorTmpSt.clone().addScaledVector(tmpVec, -addShortLen);
11878
- let tmpDoorTmpEd = doorTmpEd.clone().addScaledVector(tmpVec, addShortLen);
11879
- let intersect1 = segmentsIntersect2D(shortLinePt1, shortLinePt2, tmpDoorTmpSt, tmpDoorTmpEd);
11880
- let intersect2 = segmentsIntersect2D(shortLinePt3, shortLinePt4, tmpDoorTmpSt, tmpDoorTmpEd);
11881
- let distIntersect1 = 99999;
11882
- let distIntersect2 = 99999;
11883
- let near1St = false;
11884
- let near2St = false;
11885
- if (intersect1 != null) {
11886
- let dist55 = intersect1.point.distanceTo(doorTmpSt);
11887
- let dist66 = intersect1.point.distanceTo(doorTmpEd);
11888
- if (dist55 < 0.1 || dist66 < 0.1) {
11889
- if (dist55 < dist66) {
11890
- near1St = true;
11891
- distIntersect1 = dist55;
11892
- } else
11893
- distIntersect1 = dist66;
11866
+ if (changeWindowSize) {
11867
+ const windowLine = new THREE10.Line3(doorTmpSt, doorTmpEd);
11868
+ let rectPts = windowPcd.rectPts.map((p) => new THREE10.Vector3(p.x, p.y, p.z));
11869
+ rectPts = setPointsSameZ(rectPts, doorTmpSt.z);
11870
+ let ptClose = new THREE10.Vector3();
11871
+ let vec2 = new THREE10.Vector3();
11872
+ if (rectPts.length == 5)
11873
+ rectPts.splice(4, 1);
11874
+ let shortLinePt1 = rectPts[0];
11875
+ let shortLinePt2 = rectPts[1];
11876
+ let shortLinePt3 = rectPts[2];
11877
+ let shortLinePt4 = rectPts[3];
11878
+ if (rectPts[0].distanceTo(rectPts[1]) > rectPts[1].distanceTo(rectPts[2])) {
11879
+ shortLinePt1 = rectPts[1];
11880
+ shortLinePt2 = rectPts[2];
11881
+ shortLinePt3 = rectPts[3];
11882
+ shortLinePt4 = rectPts[0];
11894
11883
  }
11895
- }
11896
- if (intersect2 != null) {
11897
- let dist55 = intersect2.point.distanceTo(doorTmpSt);
11898
- let dist66 = intersect2.point.distanceTo(doorTmpEd);
11899
- if (dist55 < 0.1 || dist66 < 0.1) {
11900
- if (dist55 < dist66) {
11901
- near2St = true;
11902
- distIntersect2 = dist55;
11903
- } else
11904
- distIntersect2 = dist66;
11884
+ let addShortLen = 0.2;
11885
+ let vecShort1 = new THREE10.Vector3().subVectors(shortLinePt2, shortLinePt1).normalize();
11886
+ let vecShort2 = new THREE10.Vector3().subVectors(shortLinePt4, shortLinePt3).normalize();
11887
+ shortLinePt1 = shortLinePt1.addScaledVector(vecShort1, -addShortLen);
11888
+ shortLinePt2 = shortLinePt2.addScaledVector(vecShort1, addShortLen);
11889
+ shortLinePt3 = shortLinePt3.addScaledVector(vecShort2, -addShortLen);
11890
+ shortLinePt4 = shortLinePt4.addScaledVector(vecShort2, addShortLen);
11891
+ let tmpVec = new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize();
11892
+ let tmpDoorTmpSt = doorTmpSt.clone().addScaledVector(tmpVec, -addShortLen);
11893
+ let tmpDoorTmpEd = doorTmpEd.clone().addScaledVector(tmpVec, addShortLen);
11894
+ let intersect1 = segmentsIntersect2D(shortLinePt1, shortLinePt2, tmpDoorTmpSt, tmpDoorTmpEd);
11895
+ let intersect2 = segmentsIntersect2D(shortLinePt3, shortLinePt4, tmpDoorTmpSt, tmpDoorTmpEd);
11896
+ let distIntersect1 = 99999;
11897
+ let distIntersect2 = 99999;
11898
+ let near1St = false;
11899
+ let near2St = false;
11900
+ if (intersect1 != null) {
11901
+ let dist55 = intersect1.point.distanceTo(doorTmpSt);
11902
+ let dist66 = intersect1.point.distanceTo(doorTmpEd);
11903
+ if (dist55 < 0.1 || dist66 < 0.1) {
11904
+ if (dist55 < dist66) {
11905
+ near1St = true;
11906
+ distIntersect1 = dist55;
11907
+ } else
11908
+ distIntersect1 = dist66;
11909
+ }
11905
11910
  }
11906
- }
11907
- if (distIntersect1 == 99999 && distIntersect2 == 99999) {
11908
- windowPcdSt.z = windowPcdEd.z = doorTmpSt.z;
11909
- let dist11 = doorTmpSt.distanceTo(windowPcdSt);
11910
- let dist22 = doorTmpSt.distanceTo(windowPcdEd);
11911
- let dist33 = doorTmpEd.distanceTo(windowPcdSt);
11912
- let dist44 = doorTmpEd.distanceTo(windowPcdEd);
11913
- let minDist = Math.min(dist11, dist22, dist33, dist44);
11914
- let wZ = doorTmpSt.z;
11915
- if (dist11 == minDist) {
11916
- ptClose = windowLine.closestPointToPoint(windowPcdSt, false, new THREE10.Vector3());
11917
- vec2 = new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize();
11918
- } else if (dist22 == minDist) {
11919
- ptClose = windowLine.closestPointToPoint(windowPcdEd, false, new THREE10.Vector3());
11920
- vec2 = new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize();
11921
- } else if (dist33 == minDist) {
11922
- ptClose = windowLine.closestPointToPoint(windowPcdSt, false, new THREE10.Vector3());
11923
- vec2 = new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11924
- } else if (dist44 == minDist) {
11925
- ptClose = windowLine.closestPointToPoint(windowPcdEd, false, new THREE10.Vector3());
11926
- vec2 = new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11911
+ if (intersect2 != null) {
11912
+ let dist55 = intersect2.point.distanceTo(doorTmpSt);
11913
+ let dist66 = intersect2.point.distanceTo(doorTmpEd);
11914
+ if (dist55 < 0.1 || dist66 < 0.1) {
11915
+ if (dist55 < dist66) {
11916
+ near2St = true;
11917
+ distIntersect2 = dist55;
11918
+ } else
11919
+ distIntersect2 = dist66;
11920
+ }
11927
11921
  }
11928
- } else {
11929
- if (distIntersect1 < distIntersect2) {
11930
- ptClose = intersect1.point.clone();
11931
- vec2 = near1St ? new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize() : new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11922
+ if (distIntersect1 == 99999 && distIntersect2 == 99999) {
11923
+ windowPcdSt.z = windowPcdEd.z = doorTmpSt.z;
11924
+ let dist11 = doorTmpSt.distanceTo(windowPcdSt);
11925
+ let dist22 = doorTmpSt.distanceTo(windowPcdEd);
11926
+ let dist33 = doorTmpEd.distanceTo(windowPcdSt);
11927
+ let dist44 = doorTmpEd.distanceTo(windowPcdEd);
11928
+ let minDist = Math.min(dist11, dist22, dist33, dist44);
11929
+ let wZ = doorTmpSt.z;
11930
+ if (dist11 == minDist) {
11931
+ ptClose = windowLine.closestPointToPoint(windowPcdSt, false, new THREE10.Vector3());
11932
+ vec2 = new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize();
11933
+ } else if (dist22 == minDist) {
11934
+ ptClose = windowLine.closestPointToPoint(windowPcdEd, false, new THREE10.Vector3());
11935
+ vec2 = new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize();
11936
+ } else if (dist33 == minDist) {
11937
+ ptClose = windowLine.closestPointToPoint(windowPcdSt, false, new THREE10.Vector3());
11938
+ vec2 = new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11939
+ } else if (dist44 == minDist) {
11940
+ ptClose = windowLine.closestPointToPoint(windowPcdEd, false, new THREE10.Vector3());
11941
+ vec2 = new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11942
+ }
11932
11943
  } else {
11933
- ptClose = intersect2.point.clone();
11934
- vec2 = near2St ? new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize() : new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11944
+ if (distIntersect1 < distIntersect2) {
11945
+ ptClose = intersect1.point.clone();
11946
+ vec2 = near1St ? new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize() : new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11947
+ } else {
11948
+ ptClose = intersect2.point.clone();
11949
+ vec2 = near2St ? new THREE10.Vector3().subVectors(doorTmpEd, doorTmpSt).normalize() : new THREE10.Vector3().subVectors(doorTmpSt, doorTmpEd).normalize();
11950
+ }
11935
11951
  }
11952
+ doorTmpSt = ptClose.clone();
11953
+ doorTmpEd = doorTmpSt.clone().addScaledVector(vec2, windowPcdLen);
11954
+ doorTmpSt.z = doorTmpEd.z = windowPcd.minZ;
11955
+ beamTmpSt = doorTmpSt.clone();
11956
+ beamTmpEd = doorTmpEd.clone();
11957
+ beamTmpSt.z = beamTmpEd.z = windowPcd.maxZ;
11936
11958
  }
11937
- doorTmpSt = ptClose.clone();
11938
- doorTmpEd = doorTmpSt.clone().addScaledVector(vec2, windowLen);
11939
- doorTmpSt.z = doorTmpEd.z = windowPcd.minZ;
11940
- beamTmpSt = doorTmpSt.clone();
11941
- beamTmpEd = doorTmpEd.clone();
11942
- beamTmpSt.z = beamTmpEd.z = windowPcd.maxZ;
11943
11959
  let doorType = "";
11944
11960
  let groundClearance = doorTmpSt.z - line2.start.z > 1e-4 ? doorTmpSt.z - line2.start.z : 0;
11945
- let windowHeight = beamTmpSt.z - doorTmpSt.z;
11961
+ windowHeight = beamTmpSt.z - doorTmpSt.z;
11946
11962
  let doorAndBeamDataObj = {
11947
11963
  id,
11948
11964
  windowTopSt: new THREE10.Vector3(doorTmpSt.x, doorTmpSt.y, doorTmpSt.z + windowHeight),
@@ -12147,8 +12163,8 @@ function pointToSegmentDist(cx, cy, ax, ay, bx, by) {
12147
12163
  const t = (wx * vx + wy * vy) / len2;
12148
12164
  const projX = ax + t * vx;
12149
12165
  const projY = ay + t * vy;
12150
- const dist3 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
12151
- return { dist: dist3, t };
12166
+ const dist2 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
12167
+ return { dist: dist2, t };
12152
12168
  }
12153
12169
  function pointInQuad(px, py, quad) {
12154
12170
  let sign = 0;
@@ -12293,8 +12309,8 @@ function scoreDistanceVariance(wall, checkPoints) {
12293
12309
  const ds = [];
12294
12310
  const { start, end } = wall;
12295
12311
  for (const pt of checkPoints) {
12296
- const { dist: dist3 } = pointToSegmentDist(pt.x, pt.y, start.x, start.y, end.x, end.y);
12297
- ds.push(dist3);
12312
+ const { dist: dist2 } = pointToSegmentDist(pt.x, pt.y, start.x, start.y, end.x, end.y);
12313
+ ds.push(dist2);
12298
12314
  }
12299
12315
  const mean = ds.reduce((s, v2) => s + v2, 0) / ds.length;
12300
12316
  const variance = ds.reduce((s, v2) => s + (v2 - mean) ** 2, 0) / ds.length;
@@ -12407,8 +12423,8 @@ function mergeIntervals(group, gref, dirX, dirY, gapTol) {
12407
12423
  const last = merged[merged.length - 1];
12408
12424
  if (l <= last.r + gapTol) {
12409
12425
  const overlapLen = Math.min(last.r, r) - Math.max(last.l, l);
12410
- const dist3 = Math.hypot(last.endPt.x - startPt.x, last.endPt.y - startPt.y);
12411
- if (overlapLen >= overlapForceMergeLen || dist3 <= endPointDistTol) {
12426
+ const dist2 = Math.hypot(last.endPt.x - startPt.x, last.endPt.y - startPt.y);
12427
+ if (overlapLen >= overlapForceMergeLen || dist2 <= endPointDistTol) {
12412
12428
  if (l < last.l) {
12413
12429
  last.l = l;
12414
12430
  last.startPt = startPt;
@@ -12624,10 +12640,10 @@ function collectCandidates(candidateSegments, winLong, winDirX, winDirY, checkPo
12624
12640
  let validPoint = false;
12625
12641
  let minDist = Infinity;
12626
12642
  for (const pt of checkPoints) {
12627
- const { dist: dist3, t } = pointToSegmentDist(pt.x, pt.y, start.x, start.y, end.x, end.y);
12628
- if (t >= -attempt.margin && t <= 1 + attempt.margin && dist3 <= attempt.maxDist) {
12643
+ const { dist: dist2, t } = pointToSegmentDist(pt.x, pt.y, start.x, start.y, end.x, end.y);
12644
+ if (t >= -attempt.margin && t <= 1 + attempt.margin && dist2 <= attempt.maxDist) {
12629
12645
  validPoint = true;
12630
- minDist = Math.min(minDist, dist3);
12646
+ minDist = Math.min(minDist, dist2);
12631
12647
  }
12632
12648
  }
12633
12649
  if (!validPoint) {
@@ -13264,8 +13280,8 @@ function pointToSegmentDist2(cx, cy, ax, ay, bx, by) {
13264
13280
  const t = (wx * vx + wy * vy) / len2;
13265
13281
  const projX = ax + t * vx;
13266
13282
  const projY = ay + t * vy;
13267
- const dist3 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
13268
- return { dist: dist3, t };
13283
+ const dist2 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
13284
+ return { dist: dist2, t };
13269
13285
  }
13270
13286
  function pointInQuad2(px, py, quad) {
13271
13287
  let sign = 0;
@@ -13333,9 +13349,9 @@ function extractVerticalEdges(corners) {
13333
13349
  if (usedTop.has(i)) continue;
13334
13350
  const dx = topPts[i].x - bp.x;
13335
13351
  const dy = topPts[i].y - bp.y;
13336
- const dist3 = Math.sqrt(dx * dx + dy * dy);
13337
- if (dist3 < bestDist) {
13338
- bestDist = dist3;
13352
+ const dist2 = Math.sqrt(dx * dx + dy * dy);
13353
+ if (dist2 < bestDist) {
13354
+ bestDist = dist2;
13339
13355
  bestIdx = i;
13340
13356
  }
13341
13357
  }
@@ -13723,8 +13739,8 @@ function scoreDistanceVariance2(wall, checkPoints) {
13723
13739
  const ds = [];
13724
13740
  const { start, end } = wall;
13725
13741
  for (const pt of checkPoints) {
13726
- const { dist: dist3 } = pointToSegmentDist2(pt.x, pt.y, start.x, start.y, end.x, end.y);
13727
- ds.push(dist3);
13742
+ const { dist: dist2 } = pointToSegmentDist2(pt.x, pt.y, start.x, start.y, end.x, end.y);
13743
+ ds.push(dist2);
13728
13744
  }
13729
13745
  const mean = ds.reduce((s, v2) => s + v2, 0) / ds.length;
13730
13746
  const variance = ds.reduce((s, v2) => s + (v2 - mean) ** 2, 0) / ds.length;
@@ -13837,8 +13853,8 @@ function mergeIntervals2(group, gref, dirX, dirY, gapTol) {
13837
13853
  const last = merged[merged.length - 1];
13838
13854
  if (l <= last.r + gapTol) {
13839
13855
  const overlapLen = Math.min(last.r, r) - Math.max(last.l, l);
13840
- const dist3 = Math.hypot(last.endPt.x - startPt.x, last.endPt.y - startPt.y);
13841
- if (overlapLen >= overlapForceMergeLen || dist3 <= endPointDistTol) {
13856
+ const dist2 = Math.hypot(last.endPt.x - startPt.x, last.endPt.y - startPt.y);
13857
+ if (overlapLen >= overlapForceMergeLen || dist2 <= endPointDistTol) {
13842
13858
  if (l < last.l) {
13843
13859
  last.l = l;
13844
13860
  last.startPt = startPt;
@@ -14064,10 +14080,10 @@ function collectCandidates2(candidateSegments, doorLong, doorDirX, doorDirY, che
14064
14080
  let validPoint = false;
14065
14081
  let minDist = Infinity;
14066
14082
  for (const pt of checkPoints) {
14067
- const { dist: dist3, t } = pointToSegmentDist2(pt.x, pt.y, start.x, start.y, end.x, end.y);
14068
- if (t >= -attempt.margin && t <= 1 + attempt.margin && dist3 <= attempt.maxDist) {
14083
+ const { dist: dist2, t } = pointToSegmentDist2(pt.x, pt.y, start.x, start.y, end.x, end.y);
14084
+ if (t >= -attempt.margin && t <= 1 + attempt.margin && dist2 <= attempt.maxDist) {
14069
14085
  validPoint = true;
14070
- if (dist3 < minDist) minDist = dist3;
14086
+ if (dist2 < minDist) minDist = dist2;
14071
14087
  }
14072
14088
  }
14073
14089
  if (!validPoint) {
@@ -14409,8 +14425,8 @@ function findDoorWalls(doorObjs, wallSegments, options, preMerged) {
14409
14425
  for (const seg of candidateSegments) {
14410
14426
  const dx = seg.start.x + (seg.end.x - seg.start.x) / 2 - centerX;
14411
14427
  const dy = seg.start.y + (seg.end.y - seg.start.y) / 2 - centerY;
14412
- const dist3 = Math.sqrt(dx * dx + dy * dy);
14413
- if (dist3 > 2) continue;
14428
+ const dist2 = Math.sqrt(dx * dx + dy * dy);
14429
+ if (dist2 > 2) continue;
14414
14430
  const segDx = seg.end.x - seg.start.x;
14415
14431
  const segDy = seg.end.y - seg.start.y;
14416
14432
  const segLen = Math.sqrt(segDx * segDx + segDy * segDy);
@@ -16024,8 +16040,8 @@ function fitCircle(pts) {
16024
16040
  const r = Math.sqrt(Math.abs((sx2 + sz2 - 2 * cx * sx - 2 * cz * sz) / n + cx * cx + cz * cz));
16025
16041
  let sumSq = 0;
16026
16042
  for (const p of pts) {
16027
- const dist3 = Math.hypot(p.x - cx, p.z - cz);
16028
- const diff = dist3 - r;
16043
+ const dist2 = Math.hypot(p.x - cx, p.z - cz);
16044
+ const diff = dist2 - r;
16029
16045
  sumSq += diff * diff;
16030
16046
  }
16031
16047
  const rmsResidual = Math.sqrt(sumSq / n);
@@ -16456,8 +16472,8 @@ function findWallCorners(lineSegs) {
16456
16472
  for (const e1 of endpoints1) {
16457
16473
  for (const e2 of endpoints2) {
16458
16474
  const dx = e1.x - e2.x, dz = e1.z - e2.z;
16459
- const dist3 = Math.sqrt(dx * dx + dz * dz);
16460
- if (dist3 < CORNER_DIST) {
16475
+ const dist2 = Math.sqrt(dx * dx + dz * dz);
16476
+ if (dist2 < CORNER_DIST) {
16461
16477
  corners.push({ x: (e1.x + e2.x) / 2, z: (e1.z + e2.z) / 2 });
16462
16478
  }
16463
16479
  }
@@ -16985,9 +17001,9 @@ function processFromPointCloud(points3D, rawLines, pcConfig) {
16985
17001
  let bestDist = Infinity, bestJ = -1;
16986
17002
  for (let k = 0; k < pts.length; k++) {
16987
17003
  const dx = pts[k].x - corner.x, dz = pts[k].z - corner.z;
16988
- const dist3 = dx * dx + dz * dz;
16989
- if (dist3 < bestDist) {
16990
- bestDist = dist3;
17004
+ const dist2 = dx * dx + dz * dz;
17005
+ if (dist2 < bestDist) {
17006
+ bestDist = dist2;
16991
17007
  bestJ = k;
16992
17008
  }
16993
17009
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rm-graphical-computing-node",
3
- "version": "1.0.71",
3
+ "version": "1.0.73",
4
4
  "description": "墙体/梁线/点云语义计算库(依赖 Python 与 three.js)",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",