rm-graphical-computing-node 1.0.70 → 1.0.72

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 +112 -116
  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,9 +5656,10 @@ var getColLine = async (lines, runDataList, collectDataPath, pointCloudCluster =
5665
5656
  threeEdgeRect: []
5666
5657
  };
5667
5658
  let isFindColIndexs = /* @__PURE__ */ new Set();
5668
- let minColLineLength = 0.1;
5659
+ let minColLineLength = 0.01;
5660
+ let threeMinColLineLength = 0.15;
5669
5661
  let maxColLineLength = 2;
5670
- let minArea = 0.15;
5662
+ let minArea = 0.1;
5671
5663
  let maxArea = 2.5;
5672
5664
  let minPerpendicularAngle = 80;
5673
5665
  let maxPerpendicularAngle = 95;
@@ -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]
@@ -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
  }
@@ -12147,8 +12143,8 @@ function pointToSegmentDist(cx, cy, ax, ay, bx, by) {
12147
12143
  const t = (wx * vx + wy * vy) / len2;
12148
12144
  const projX = ax + t * vx;
12149
12145
  const projY = ay + t * vy;
12150
- const dist3 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
12151
- return { dist: dist3, t };
12146
+ const dist2 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
12147
+ return { dist: dist2, t };
12152
12148
  }
12153
12149
  function pointInQuad(px, py, quad) {
12154
12150
  let sign = 0;
@@ -12293,8 +12289,8 @@ function scoreDistanceVariance(wall, checkPoints) {
12293
12289
  const ds = [];
12294
12290
  const { start, end } = wall;
12295
12291
  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);
12292
+ const { dist: dist2 } = pointToSegmentDist(pt.x, pt.y, start.x, start.y, end.x, end.y);
12293
+ ds.push(dist2);
12298
12294
  }
12299
12295
  const mean = ds.reduce((s, v2) => s + v2, 0) / ds.length;
12300
12296
  const variance = ds.reduce((s, v2) => s + (v2 - mean) ** 2, 0) / ds.length;
@@ -12407,8 +12403,8 @@ function mergeIntervals(group, gref, dirX, dirY, gapTol) {
12407
12403
  const last = merged[merged.length - 1];
12408
12404
  if (l <= last.r + gapTol) {
12409
12405
  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) {
12406
+ const dist2 = Math.hypot(last.endPt.x - startPt.x, last.endPt.y - startPt.y);
12407
+ if (overlapLen >= overlapForceMergeLen || dist2 <= endPointDistTol) {
12412
12408
  if (l < last.l) {
12413
12409
  last.l = l;
12414
12410
  last.startPt = startPt;
@@ -12624,10 +12620,10 @@ function collectCandidates(candidateSegments, winLong, winDirX, winDirY, checkPo
12624
12620
  let validPoint = false;
12625
12621
  let minDist = Infinity;
12626
12622
  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) {
12623
+ const { dist: dist2, t } = pointToSegmentDist(pt.x, pt.y, start.x, start.y, end.x, end.y);
12624
+ if (t >= -attempt.margin && t <= 1 + attempt.margin && dist2 <= attempt.maxDist) {
12629
12625
  validPoint = true;
12630
- minDist = Math.min(minDist, dist3);
12626
+ minDist = Math.min(minDist, dist2);
12631
12627
  }
12632
12628
  }
12633
12629
  if (!validPoint) {
@@ -13264,8 +13260,8 @@ function pointToSegmentDist2(cx, cy, ax, ay, bx, by) {
13264
13260
  const t = (wx * vx + wy * vy) / len2;
13265
13261
  const projX = ax + t * vx;
13266
13262
  const projY = ay + t * vy;
13267
- const dist3 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
13268
- return { dist: dist3, t };
13263
+ const dist2 = Math.sqrt((cx - projX) ** 2 + (cy - projY) ** 2);
13264
+ return { dist: dist2, t };
13269
13265
  }
13270
13266
  function pointInQuad2(px, py, quad) {
13271
13267
  let sign = 0;
@@ -13333,9 +13329,9 @@ function extractVerticalEdges(corners) {
13333
13329
  if (usedTop.has(i)) continue;
13334
13330
  const dx = topPts[i].x - bp.x;
13335
13331
  const dy = topPts[i].y - bp.y;
13336
- const dist3 = Math.sqrt(dx * dx + dy * dy);
13337
- if (dist3 < bestDist) {
13338
- bestDist = dist3;
13332
+ const dist2 = Math.sqrt(dx * dx + dy * dy);
13333
+ if (dist2 < bestDist) {
13334
+ bestDist = dist2;
13339
13335
  bestIdx = i;
13340
13336
  }
13341
13337
  }
@@ -13723,8 +13719,8 @@ function scoreDistanceVariance2(wall, checkPoints) {
13723
13719
  const ds = [];
13724
13720
  const { start, end } = wall;
13725
13721
  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);
13722
+ const { dist: dist2 } = pointToSegmentDist2(pt.x, pt.y, start.x, start.y, end.x, end.y);
13723
+ ds.push(dist2);
13728
13724
  }
13729
13725
  const mean = ds.reduce((s, v2) => s + v2, 0) / ds.length;
13730
13726
  const variance = ds.reduce((s, v2) => s + (v2 - mean) ** 2, 0) / ds.length;
@@ -13837,8 +13833,8 @@ function mergeIntervals2(group, gref, dirX, dirY, gapTol) {
13837
13833
  const last = merged[merged.length - 1];
13838
13834
  if (l <= last.r + gapTol) {
13839
13835
  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) {
13836
+ const dist2 = Math.hypot(last.endPt.x - startPt.x, last.endPt.y - startPt.y);
13837
+ if (overlapLen >= overlapForceMergeLen || dist2 <= endPointDistTol) {
13842
13838
  if (l < last.l) {
13843
13839
  last.l = l;
13844
13840
  last.startPt = startPt;
@@ -14064,10 +14060,10 @@ function collectCandidates2(candidateSegments, doorLong, doorDirX, doorDirY, che
14064
14060
  let validPoint = false;
14065
14061
  let minDist = Infinity;
14066
14062
  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) {
14063
+ const { dist: dist2, t } = pointToSegmentDist2(pt.x, pt.y, start.x, start.y, end.x, end.y);
14064
+ if (t >= -attempt.margin && t <= 1 + attempt.margin && dist2 <= attempt.maxDist) {
14069
14065
  validPoint = true;
14070
- if (dist3 < minDist) minDist = dist3;
14066
+ if (dist2 < minDist) minDist = dist2;
14071
14067
  }
14072
14068
  }
14073
14069
  if (!validPoint) {
@@ -14409,8 +14405,8 @@ function findDoorWalls(doorObjs, wallSegments, options, preMerged) {
14409
14405
  for (const seg of candidateSegments) {
14410
14406
  const dx = seg.start.x + (seg.end.x - seg.start.x) / 2 - centerX;
14411
14407
  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;
14408
+ const dist2 = Math.sqrt(dx * dx + dy * dy);
14409
+ if (dist2 > 2) continue;
14414
14410
  const segDx = seg.end.x - seg.start.x;
14415
14411
  const segDy = seg.end.y - seg.start.y;
14416
14412
  const segLen = Math.sqrt(segDx * segDx + segDy * segDy);
@@ -16024,8 +16020,8 @@ function fitCircle(pts) {
16024
16020
  const r = Math.sqrt(Math.abs((sx2 + sz2 - 2 * cx * sx - 2 * cz * sz) / n + cx * cx + cz * cz));
16025
16021
  let sumSq = 0;
16026
16022
  for (const p of pts) {
16027
- const dist3 = Math.hypot(p.x - cx, p.z - cz);
16028
- const diff = dist3 - r;
16023
+ const dist2 = Math.hypot(p.x - cx, p.z - cz);
16024
+ const diff = dist2 - r;
16029
16025
  sumSq += diff * diff;
16030
16026
  }
16031
16027
  const rmsResidual = Math.sqrt(sumSq / n);
@@ -16456,8 +16452,8 @@ function findWallCorners(lineSegs) {
16456
16452
  for (const e1 of endpoints1) {
16457
16453
  for (const e2 of endpoints2) {
16458
16454
  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) {
16455
+ const dist2 = Math.sqrt(dx * dx + dz * dz);
16456
+ if (dist2 < CORNER_DIST) {
16461
16457
  corners.push({ x: (e1.x + e2.x) / 2, z: (e1.z + e2.z) / 2 });
16462
16458
  }
16463
16459
  }
@@ -16985,9 +16981,9 @@ function processFromPointCloud(points3D, rawLines, pcConfig) {
16985
16981
  let bestDist = Infinity, bestJ = -1;
16986
16982
  for (let k = 0; k < pts.length; k++) {
16987
16983
  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;
16984
+ const dist2 = dx * dx + dz * dz;
16985
+ if (dist2 < bestDist) {
16986
+ bestDist = dist2;
16991
16987
  bestJ = k;
16992
16988
  }
16993
16989
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rm-graphical-computing-node",
3
- "version": "1.0.70",
3
+ "version": "1.0.72",
4
4
  "description": "墙体/梁线/点云语义计算库(依赖 Python 与 three.js)",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",