diff --git a/SceneCamera.cpp b/SceneCamera.cpp index 74b0597..a94662a 100644 --- a/SceneCamera.cpp +++ b/SceneCamera.cpp @@ -538,6 +538,7 @@ Scene::ZoomOnPoint( const Point3d& ptWin, double dCoeff) // modifico opportunamente il centro di vista Point3d ptOldCen = m_ptCenter ; Point3d ptNewCen = ptWorld + ( m_ptCenter - ptWorld) * dCoeff ; + ptNewCen += ( ptWorld - ptNewCen) * m_vtDirCamera * m_vtDirCamera ; SetCenter( ptNewCen) ; m_bDistOk = true ; @@ -550,7 +551,7 @@ Scene::ZoomOnPoint( const Point3d& ptWin, double dCoeff) dCoeff = dMinDist / m_dDistCamera ; Point3d ptNewCenter = ptWorld + ( ptOldCen - ptWorld) * dCoeff ; SetCenter( ptNewCenter) ; - } + } } else { // nel caso standard verifico se il nuovo fov supera il valore massimo @@ -558,9 +559,9 @@ Scene::ZoomOnPoint( const Point3d& ptWin, double dCoeff) // adatto il coefficiente di zoom e ricalcolo il centro dCoeff = PERSPECTIVE_TAN_MAX_FOV * m_dDistCamera / m_dHalfHeight ; Point3d ptNewCenter = ptWorld + ( ptOldCen - ptWorld) * dCoeff ; - SetCenter( ptNewCenter) ; + SetCenter( ptNewCenter) ; } - } + } } return ZoomChange( dCoeff) ;