From 342cb245749668094ee90ff60d23f7921bb17d15 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 20 Apr 2015 08:38:30 +0000 Subject: [PATCH] EgtGeomKernel 1.6d3 : - aggiunte translate e rotate a BBox3d. --- BBox3d.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++ EgtGeomKernel.rc | Bin 11710 -> 11710 bytes 2 files changed, 48 insertions(+) diff --git a/BBox3d.cpp b/BBox3d.cpp index 655e40d..1b5c869 100644 --- a/BBox3d.cpp +++ b/BBox3d.cpp @@ -187,6 +187,54 @@ BBox3d::GetRadius( double& dRad) const return true ; } +//---------------------------------------------------------------------------- +void +BBox3d::Translate( const Vector3d& vtMove) +{ + if ( ! IsValid()) + return ; + // non essendoci cambio di orientamento, traslo semplicemente i punti + m_ptMin = m_ptMin + vtMove ; + m_ptMax = m_ptMax + vtMove ; +} + +//---------------------------------------------------------------------------- +bool +BBox3d::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) +{ + double dAngRad = dAngDeg * DEGTORAD ; + return Rotate( ptAx, vtAx, cos( dAngRad), sin( dAngRad)) ; +} + +//---------------------------------------------------------------------------- +bool +BBox3d::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) +{ + if ( ! IsValid()) + return false ; + // ruoto il minimo + Point3d ptMinRot = m_ptMin ; + if ( ! ptMinRot.Rotate( ptAx, vtAx, dCosAng, dSinAng)) + return false ; + // ruoto i vettori dal Min al Max diretti come gli assi locali + Vector3d vtXRot( m_ptMax.x - m_ptMin.x, 0, 0) ; + vtXRot.Rotate( vtAx, dCosAng, dSinAng) ; + Vector3d vtYRot( 0, m_ptMax.y - m_ptMin.y, 0) ; + vtYRot.Rotate( vtAx, dCosAng, dSinAng) ; + Vector3d vtZRot( 0, 0, m_ptMax.z - m_ptMin.z) ; + vtZRot.Rotate( vtAx, dCosAng, dSinAng) ; + // calcolo il box trasformato + Set( ptMinRot) ; + Add( ptMinRot + vtXRot) ; + Add( ptMinRot + vtYRot) ; + Add( ptMinRot + vtZRot) ; + Add( ptMinRot + vtXRot + vtYRot) ; + Add( ptMinRot + vtYRot + vtZRot) ; + Add( ptMinRot + vtZRot + vtXRot) ; + Add( ptMinRot + vtXRot + vtYRot + vtZRot) ; + return true ; +} + //---------------------------------------------------------------------------- bool BBox3d::ToGlob( const Frame3d& frRef) diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 6564e65b57c0cf097d8cc4a875b241bb9509f177..67ce21c8389112fa9222b19b540b52e583977c40 100644 GIT binary patch delta 94 zcmdlNy)SyhFE&Qw&A-_cnHh~ID{|{@_Trkr0u;H;XNwSVW8B;$>;>dw2zN+>g;Df- LFmBFL4&ed-W11TR delta 94 zcmdlNy)SyhFE&P_&A-_cnHh~HD{|{@_Trkr0u;H;XNwSVW8B;$>;>dw2zN+>g;Df- LFmBFL4&ed-Vf-5U