00001 00009 #ifndef _Q_INTERVAL_HH_ 00010 #define _Q_INTERVAL_HH_ 00011 00012 #include "QCuore.hh" 00013 00014 Q_BEGIN_NAMESPACE 00015 00016 class QInterval { 00017 public: 00019 QInterval(const double min, const double max); 00020 00022 virtual ~QInterval(); 00023 00025 bool operator<(const QInterval& interval) const 00026 {return ( (GetMin() < interval.GetMin()) 00027 || 00028 (!(interval.GetMin() < GetMin()) 00029 && GetMax() < interval.GetMax()) );} 00030 00032 bool Contains(const double value) const 00033 {return (GetMin() <= value && value <= GetMax());} 00034 00036 bool Contains(const QInterval& interval) const 00037 {return (GetMin() <= interval.GetMin() 00038 && interval.GetMax() <= GetMax());} 00039 00041 double GetMax() const {return fMax;} 00042 00044 double GetMin() const {return fMin;} 00045 00047 bool Intersects(const QInterval& interval) const 00048 {return (Contains(interval.GetMin()) || Contains(interval.GetMax()) 00049 || interval.Contains(*this));} 00050 00052 double Length() const {return (GetMax() - GetMin());} 00053 00055 void SetMax(const double max) {fMax = max;} 00056 00058 void SetMin(const double min) {fMin = min;} 00059 00060 protected: 00062 double fMax; 00063 00065 double fMin; 00066 }; 00067 00068 Q_END_NAMESPACE 00069 00070 #endif