@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.
- package/dist/viewer-visualize.js +27 -2
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +27 -2
- package/dist/viewer-visualize.module.js.map +1 -1
- package/package.json +5 -5
- package/src/Viewer/Draggers/Actions/OrbitAction.ts +48 -2
|
@@ -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,
|
|
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]);
|