@inweb/viewer-visualize 26.9.9 → 26.10.0

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.
@@ -1443,7 +1443,17 @@ class OrbitAction {
1443
1443
  const pPosition = this.toPoint(viewParams.position);
1444
1444
  const direct = pTarget.sub(pPosition);
1445
1445
  const vDirect = direct.asVector();
1446
+ if (vDirect.length() < 1e-10) {
1447
+ const defaultSide = this.toVector(this._m_module.Vector3d.kXAxis);
1448
+ this.deleteAll([direct, pUpV, pTarget, pPosition, vDirect]);
1449
+ return defaultSide;
1450
+ }
1446
1451
  const vCross = pUpV.crossProduct(vDirect);
1452
+ if (vCross.length() < 1e-10) {
1453
+ const defaultSide = this.toVector(this._m_module.Vector3d.kXAxis);
1454
+ this.deleteAll([direct, pUpV, pTarget, pPosition, vDirect, vCross]);
1455
+ return defaultSide;
1456
+ }
1447
1457
  const sideVector = vCross.normalize();
1448
1458
  this.deleteAll([direct, pUpV, pTarget, pPosition, vDirect, vCross]);
1449
1459
  return sideVector;
@@ -1466,13 +1476,20 @@ class OrbitAction {
1466
1476
  {
1467
1477
  const pPoint = this.toPoint(viewParams.position);
1468
1478
  const pTarget = this.toPoint(viewParams.target);
1469
- const pCenter = this.toPoint(this.m_viewCenter);
1470
1479
  const pUp = pTarget.sub(pPoint);
1471
1480
  const vUp = pUp.asVector();
1481
+ if (vUp.length() < 1e-10) {
1482
+ this.deleteAll([pPoint, pTarget, pUp, vUp]);
1483
+ return;
1484
+ }
1472
1485
  const crossProduct = vUp.crossProduct(sideVector);
1486
+ if (crossProduct.length() < 1e-10) {
1487
+ this.deleteAll([pPoint, pTarget, pUp, vUp, crossProduct]);
1488
+ return;
1489
+ }
1473
1490
  const crossProductNormal = crossProduct.normalize();
1474
1491
  viewParams.upVector = crossProductNormal.toArray();
1475
- this.deleteAll([pPoint, pTarget, pCenter, pUp, vUp, crossProduct, crossProductNormal]);
1492
+ this.deleteAll([pPoint, pTarget, pUp, vUp, crossProduct, crossProductNormal]);
1476
1493
  }
1477
1494
  }
1478
1495
  calculateYOrbit(viewParams, delta, sideVector) {
@@ -1499,7 +1516,15 @@ class OrbitAction {
1499
1516
  const side = sideVector.rotateBy(delta, zAxis);
1500
1517
  const pUp = pTarget.sub(pPoint);
1501
1518
  const vUp = pUp.asVector();
1519
+ if (vUp.length() < 1e-10) {
1520
+ this.deleteAll([zAxis, pTarget, pPoint, side, pUp, vUp]);
1521
+ return;
1522
+ }
1502
1523
  const cross = vUp.crossProduct(side);
1524
+ if (cross.length() < 1e-10) {
1525
+ this.deleteAll([zAxis, pTarget, pPoint, side, pUp, vUp, cross]);
1526
+ return;
1527
+ }
1503
1528
  const crossNormal = cross.normalize();
1504
1529
  viewParams.upVector = crossNormal.toArray();
1505
1530
  this.deleteAll([zAxis, pTarget, pPoint, side, pUp, vUp, cross, crossNormal]);