From df3d7e706799a3208620c7fc8052a94884b28fe7 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 10 Feb 2018 10:24:24 +0000 Subject: [PATCH] EgtGraphics 1.9b1 : - aggiunto metodo ZoomObject. --- EgtGraphics.rc | Bin 11604 -> 11604 bytes Scene.h | 1 + SceneCamera.cpp | 20 ++++++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/EgtGraphics.rc b/EgtGraphics.rc index 1560048e6d9d28a6b3e23cd96761450a2ee7c498..32f96b1efa03d1df1cfb5d048df615f2c331ceb2 100644 GIT binary patch delta 127 zcmcZ-btP)UH#Sxy1|0^&%?J7RGfm>rnVhGn!kollIQgKo?&d#|K8%~&xXqa1YP6Z* Xk}^UKEZD^VNH!tFahS=c?8XHE!k8ts delta 127 zcmcZ-btP)UH#Sy71|0^I%?J7RGfm>rnVhGn!koxpGWnpi?&d#|K8%~&xXqa1YP6Z* Xk}^UKEZD^VNH!tFahS=c?8XHE#(X8k diff --git a/Scene.h b/Scene.h index fbb8602..34ec7d6 100644 --- a/Scene.h +++ b/Scene.h @@ -97,6 +97,7 @@ class Scene : public IEGrScene bool PanCamera( const Point3d& ptWinOld, const Point3d& ptWinNew) override ; bool RotateCamera( const Point3d& ptWinOld, const Point3d& ptWinNew) override ; bool ZoomAll( void) override ; + bool ZoomObject( int nId) override ; bool ZoomRadius( double dRadius) override ; bool ZoomChange( double dCoeff) override ; bool ZoomOnPoint( const Point3d& ptWin, double dCoeff) override ; diff --git a/SceneCamera.cpp b/SceneCamera.cpp index bf26a33..90bd36c 100644 --- a/SceneCamera.cpp +++ b/SceneCamera.cpp @@ -301,6 +301,26 @@ Scene::ZoomAll( void) return true ; } +//---------------------------------------------------------------------------- +bool +Scene::ZoomObject( int nId) +{ + // determino l'ingombro dell'oggetto in globale + BBox3d b3Obj ; + if ( m_pGeomDB == nullptr || ! m_pGeomDB->GetGlobalBBox( nId, b3Obj)) + return false ; + + // recupero centro e diametro vista + Point3d ptCent ; + double dDiam ; + if ( ! b3Obj.GetCenter( ptCent) || ! b3Obj.GetDiameter( dDiam)) + return false ; + + // imposto il centro e le dimensioni di vista + m_ptCenter = ptCent ; + return AdjustDimView( dDiam / 2, dDiam / 2) ; +} + //---------------------------------------------------------------------------- bool Scene::ZoomRadius( double dRadius)