www.pudn.com > cad3d.zip > Range.h
#ifndef __Range_h__ #define __Range_h__ #include "3DMath/MathDefs.h" templateclass CRange { protected: T m_min; T m_max; public: CRange(const T& rMin = T(), const T& rMax = T()) : m_min(rMin), m_max(rMax) {}; T GetMin() const { return m_min; } T GetMax() const { return m_max; } void SetMin(const T& rMin) { m_min = rMin; } void SetMax(const T& rMax) { m_max = rMax; } bool IsEmpty() const { return m_min > m_max; } bool IsPoint() const { return Equal(m_min, m_max); } CRange Intersect(const CRange & rOther) const { T minimal = max(m_min, rOther.m_min); T maximal = min(m_max, rOther.m_max); return CRange(minimal, maximal); } bool IsIn(const T& rValue) const { return ( IsLe(m_min,rValue) && IsLe(rValue,m_max) ); } bool IsSubRange(const CRange & rRange) const { return IsLe(m_min,rRange.m_min) && IsLe(rRange.m_max,m_max); } bool IsLimit(math_real dVal) const { return Equal(dVal, m_min) || Equal(dVal, m_max); } }; typedef CRange CDoubleRange; class CEmptyDoubleRange : public CRange { public: CEmptyDoubleRange() : CRange (1,0) {}; }; class CPointSetPos { public: typedef enum { OUTSIDE, INSIDE, BOUNDARY } PosEnum; PosEnum m_ePos; }; class CLineLineInter { public: typedef enum { NO, ONE_POINT, RANGE } InterEnum; InterEnum m_eInter; C3DPoint m_interPoint1; C3DPoint m_interPoint2; }; #endif//__Range_h__