//--------------------------------------------------------- TSG_Intersection CSG_Rect::Intersects(const CSG_Rect &Rect) const { if( m_rect.xMax < Rect.Get_XMin() || Rect.Get_XMax() < m_rect.xMin || m_rect.yMax < Rect.Get_YMin() || Rect.Get_YMax() < m_rect.yMin ) { return( INTERSECTION_None ); } if( is_Equal(Rect) ) { return( INTERSECTION_Identical ); } if( Contains(Rect.Get_XMin(), Rect.Get_YMin()) && Contains(Rect.Get_XMax(), Rect.Get_YMax()) ) { return( INTERSECTION_Contains ); } if( Rect.Contains(Get_XMin(), Get_YMin()) && Rect.Contains(Get_XMax(), Get_YMax()) ) { return( INTERSECTION_Contained ); } return( INTERSECTION_Overlaps ); }
bool CSG_Rect::is_Equal(const CSG_Rect &Rect) const { return( is_Equal(Rect.Get_XMin(), Rect.Get_YMin(), Rect.Get_XMax(), Rect.Get_YMax()) ); }
bool CSG_Rect::operator != (const CSG_Rect &Rect) const { return( !is_Equal(Rect) ); }
bool CSG_Rect::is_Equal(const CSG_Rect &Rect, double epsilon) const { return( is_Equal(Rect.Get_XMin(), Rect.Get_YMin(), Rect.Get_XMax(), Rect.Get_YMax(), epsilon) ); }
//--------------------------------------------------------- bool CSG_Vector::operator == (const CSG_Vector &Vector) const { return( is_Equal(Vector) ); }
//--------------------------------------------------------- bool CSG_Matrix::operator == (const CSG_Matrix &Matrix) const { return( is_Equal(Matrix) ); }