EgtGeomKernel 1.6i5 :
- migliorie e ampliamenti di BBox3d - correzioni a ToGlob/ToLoc/LocToLoc di SurfFlatRegion.
This commit is contained in:
+54
-2
@@ -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 ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user