EgtGeomKernel 1.6i5 :

- migliorie e ampliamenti di BBox3d
- correzioni a ToGlob/ToLoc/LocToLoc di SurfFlatRegion.
This commit is contained in:
Dario Sassi
2015-09-10 21:44:04 +00:00
parent d851fe15ab
commit 78ec13da8c
3 changed files with 63 additions and 2 deletions
+54 -2
View File
@@ -58,6 +58,44 @@ BBox3d::IsValid( void) const
m_ptMin.z < ( m_ptMax.z + EPS_SMALL)) ;
}
//----------------------------------------------------------------------------
bool
BBox3d::IsSmall( void) const
{
return ( ! IsValid() ||
m_ptMax.x - m_ptMin.x < EPS_SMALL ||
m_ptMax.y - m_ptMin.y < EPS_SMALL ||
m_ptMax.z - m_ptMin.z < EPS_SMALL) ;
}
//----------------------------------------------------------------------------
bool
BBox3d::IsSmallXY( void) const
{
return ( ! IsValid() ||
m_ptMax.x - m_ptMin.x < EPS_SMALL ||
m_ptMax.y - m_ptMin.y < EPS_SMALL) ;
}
//----------------------------------------------------------------------------
bool
BBox3d::IsEpsilon( double dToler) const
{
return ( ! IsValid() ||
m_ptMax.x - m_ptMin.x < dToler ||
m_ptMax.y - m_ptMin.y < dToler ||
m_ptMax.z - m_ptMin.z < dToler) ;
}
//----------------------------------------------------------------------------
bool
BBox3d::IsEpsilonXY( double dToler) const
{
return ( ! IsValid() ||
m_ptMax.x - m_ptMin.x < dToler ||
m_ptMax.y - m_ptMin.y < dToler) ;
}
//----------------------------------------------------------------------------
void
BBox3d::Add( const Point3d& ptP)
@@ -349,6 +387,20 @@ BBox3d::EnclosesXY( const Point3d& ptP) const
ptP.y > m_ptMin.y - EPS_SMALL && ptP.y < m_ptMax.y + EPS_SMALL) ;
}
//----------------------------------------------------------------------------
bool
BBox3d::Encloses( const BBox3d& b3Box) const
{
return ( Encloses( b3Box.GetMin()) && Encloses( b3Box.GetMax())) ;
}
//----------------------------------------------------------------------------
bool
BBox3d::EnclosesXY( const BBox3d& b3Box) const
{
return ( EnclosesXY( b3Box.GetMin()) && EnclosesXY( b3Box.GetMax())) ;
}
//----------------------------------------------------------------------------
bool
BBox3d::Overlaps( const BBox3d& b3B) const
@@ -410,10 +462,10 @@ BBox3d::FindIntersectionXY( const BBox3d& b3B, BBox3d& b3Int) const
// calcolo il box intersezione
b3Int.m_ptMin.x = (( m_ptMin.x >= b3B.m_ptMin.x) ? m_ptMin.x : b3B.m_ptMin.x) ;
b3Int.m_ptMin.y = (( m_ptMin.y >= b3B.m_ptMin.y) ? m_ptMin.y : b3B.m_ptMin.y) ;
b3Int.m_ptMin.z = (( m_ptMin.z >= b3B.m_ptMin.z) ? m_ptMin.z : b3B.m_ptMin.z) ;
b3Int.m_ptMin.z = 0.5 * ( m_ptMin.z + b3B.m_ptMin.z) ;
b3Int.m_ptMax.x = (( m_ptMax.x <= b3B.m_ptMax.x) ? m_ptMax.x : b3B.m_ptMax.x) ;
b3Int.m_ptMax.y = (( m_ptMax.y <= b3B.m_ptMax.y) ? m_ptMax.y : b3B.m_ptMax.y) ;
b3Int.m_ptMax.z = (( m_ptMax.z <= b3B.m_ptMax.z) ? m_ptMax.z : b3B.m_ptMax.z) ;
b3Int.m_ptMax.z = 0.5 * ( m_ptMax.z + b3B.m_ptMax.z) ;
return true ;
}