diff --git a/EgtGraphics.rc b/EgtGraphics.rc index d6ec2cc..4db74ec 100644 Binary files a/EgtGraphics.rc and b/EgtGraphics.rc differ diff --git a/SceneCamera.cpp b/SceneCamera.cpp index 87c784e..21032ca 100644 --- a/SceneCamera.cpp +++ b/SceneCamera.cpp @@ -14,9 +14,11 @@ //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "Scene.h" -#include "/EgtDev/Include/EgtILogger.h" -#include "/EgtDev/Include/EGnStringUtils.h" #include "/EgtDev/Include/EGkFrame3d.h" +#include "/EgtDev/Include/EGnStringUtils.h" +#include "/EgtDev/Include/EgtNumUtils.h" +#include "/EgtDev/Include/EgtILogger.h" + using namespace std ; @@ -538,6 +540,13 @@ Scene::ZoomOnPoint( const Point3d& ptWin, double dCoeff) if ( ! UnProject( ptView, ptWorld)) return false ; + // verifico che il punto sia nelle dimensioni del mondo geometrico + if ( ! m_b3ExtWorld.Encloses( ptWorld)) { + ptWorld.x = Clamp( ptWorld.x, m_b3ExtWorld.GetMin().x, m_b3ExtWorld.GetMax().x) ; + ptWorld.y = Clamp( ptWorld.y, m_b3ExtWorld.GetMin().y, m_b3ExtWorld.GetMax().y) ; + ptWorld.z = Clamp( ptWorld.z, m_b3ExtWorld.GetMin().z, m_b3ExtWorld.GetMax().z) ; + } + // modifico opportunamente il centro di vista Point3d ptOldCen = m_ptCenter ; Point3d ptNewCen = ptWorld + ( m_ptCenter - ptWorld) * dCoeff ;