From 0318d44994efa83e47e08bc764b2638f542f6f96 Mon Sep 17 00:00:00 2001 From: DarioS Date: Sun, 14 May 2023 11:54:02 +0200 Subject: [PATCH] Include : - aggiornamento prototipi - a BBox3d aggiunto metodo Overlaps per box con orientamento diverso. --- EGkBBox3d.h | 48 +++++++++++++++++++++++++++----- EGkCDeConvexTorusClosedSurfTm.h | 2 +- EGkFrame3d.h | 49 +++++++++++++++++++++++++++------ 3 files changed, 83 insertions(+), 16 deletions(-) diff --git a/EGkBBox3d.h b/EGkBBox3d.h index 48ddfaf..00b6630 100644 --- a/EGkBBox3d.h +++ b/EGkBBox3d.h @@ -1,14 +1,14 @@ //---------------------------------------------------------------------------- -// EgalTech 2013-2022 +// EgalTech 2013-2023 //---------------------------------------------------------------------------- -// File : EGkBBox3d.h Data : 17.08.22 Versione : 2.4h1 +// File : EGkBBox3d.h Data : 12.05.23 Versione : 2.5e3 // Contenuto : Dichiarazione della classe axis aligned bounding box BBox3d. // // // // Modifiche : 14.01.13 DS Creazione modulo. // 17.08.22 DS Aggiunte GetDimX, GetDimY, GetDimZ. -// +// 12.05.23 DS Aggiunta Overlaps con Box su riferimento. // //---------------------------------------------------------------------------- @@ -90,10 +90,11 @@ class EGK_EXPORT BBox3d bool EnclosesXY( const Point3d& ptP) const ; bool Encloses( const BBox3d& b3Box) const ; bool EnclosesXY( const BBox3d& b3Box) const ; - bool Overlaps( const BBox3d& b3B) const ; - bool OverlapsXY( const BBox3d& b3B) const ; - bool FindIntersection( const BBox3d& b3B, BBox3d& b3Int) const ; - bool FindIntersectionXY( const BBox3d& b3B, BBox3d& b3Int) const ; + bool Overlaps( const BBox3d& b3Box) const ; + bool OverlapsXY( const BBox3d& b3Box) const ; + bool Overlaps( const Frame3d& frBox, const BBox3d& b3Box) const ; + bool FindIntersection( const BBox3d& b3Box, BBox3d& b3Int) const ; + bool FindIntersectionXY( const BBox3d& b3Box, BBox3d& b3Int) const ; double SqDistFromPoint( const Point3d& ptP) const ; double SqDistFromPointXY( const Point3d& ptP) const ; double DistFromPoint( const Point3d& ptP) const @@ -126,3 +127,36 @@ class EGK_EXPORT BBox3d Point3d m_ptMin ; Point3d m_ptMax ; } ; + +//---------------------------------------------------------------------------- +//! Restituisce una copia in locale del box passato +//---------------------------------------------------------------------------- +inline const BBox3d +GetToLoc( const BBox3d& b3Box, const Frame3d& frRef) +{ + BBox3d b3New = b3Box ; + b3New.ToLoc( frRef) ; + return b3New ; +} + +//---------------------------------------------------------------------------- +//! Restituisce una copia in globale del box passato +//---------------------------------------------------------------------------- +inline const BBox3d +GetToGlob( const BBox3d& b3Box, const Frame3d& frRef) +{ + BBox3d b3New = b3Box ; + b3New.ToGlob( frRef) ; + return b3New ; +} + +//---------------------------------------------------------------------------- +//! Restituisce una copia dal primo al secondo riferimento del box passato +//---------------------------------------------------------------------------- +inline const BBox3d +GetLocToLoc( const BBox3d& b3Box, const Frame3d& frOri, const Frame3d& frDest) +{ + BBox3d b3New = b3Box ; + b3New.LocToLoc( frOri, frDest) ; + return b3New ; +} diff --git a/EGkCDeConvexTorusClosedSurfTm.h b/EGkCDeConvexTorusClosedSurfTm.h index f414a50..8d35834 100644 --- a/EGkCDeConvexTorusClosedSurfTm.h +++ b/EGkCDeConvexTorusClosedSurfTm.h @@ -28,5 +28,5 @@ // Raggio principale R1, raggio secondario R2. // Il toro è posto nel piano XY del suo riferimento, centrato sull'origine. // La funzione restituisce true in caso di collisione. -EGK_EXPORT bool CDeConvexTorusClosedSurfTm( const Frame3d& frTorusFrame, double dRad1, double dRad2, +EGK_EXPORT bool CDeConvexTorusClosedSurfTm( const Frame3d& frTorus, double dRad1, double dRad2, double dSafeDist, const ISurfTriMesh& tmSurf) ; diff --git a/EGkFrame3d.h b/EGkFrame3d.h index 2502099..6c35eb0 100644 --- a/EGkFrame3d.h +++ b/EGkFrame3d.h @@ -98,22 +98,55 @@ const Frame3d GLOB_FRM ; // Prodotto di due frame (porta il primo dal secondo nel globale) //---------------------------------------------------------------------------- inline const Frame3d -operator*( const Frame3d& frRef1, const Frame3d& frRef2) +operator*( const Frame3d& frRef, const Frame3d& frOri) { - Frame3d frRefR = frRef1 ; - frRefR.ToGlob( frRef2) ; - return frRefR ; + Frame3d frNew = frRef ; + frNew.ToGlob( frOri) ; + return frNew ; } //---------------------------------------------------------------------------- // Divisione di due frame (porta il primo dal globale nel secondo) //---------------------------------------------------------------------------- inline const Frame3d -operator/( const Frame3d& frRef1, const Frame3d& frRef2) +operator/( const Frame3d& frRef, const Frame3d& frDest) { - Frame3d frRefR = frRef1 ; - frRefR.ToLoc( frRef2) ; - return frRefR ; + Frame3d frNew = frRef ; + frNew.ToLoc( frDest) ; + return frNew ; +} + +//---------------------------------------------------------------------------- +//! Restituisce una copia in locale del frame passato +//---------------------------------------------------------------------------- +inline const Frame3d +GetToLoc ( const Frame3d& frRef, const Frame3d& frDest) +{ + Frame3d frNew = frRef ; + frNew.ToLoc( frDest) ; + return frNew ; +} + +//---------------------------------------------------------------------------- +//! Restituisce una copia in globale del frame passato +//---------------------------------------------------------------------------- +inline const Frame3d +GetToGlob( const Frame3d& frRef, const Frame3d& frOri) +{ + Frame3d frNew = frRef ; + frNew.ToGlob( frOri) ; + return frNew ; +} + +//---------------------------------------------------------------------------- +//! Restituisce una copia dal primo al secondo riferimento del frame passato +//---------------------------------------------------------------------------- +inline const Frame3d +GetLocToLoc( const Frame3d& frRef, const Frame3d& frOri, const Frame3d& frDest) +{ + Frame3d frNew = frRef ; + frNew.LocToLoc( frOri, frDest) ; + return frNew ; } //----------------------------------------------------------------------------