00001 00027 #ifndef BOX3D_H_ 00028 #define BOX3D_H_ 00029 #include"Point3.h" 00030 #include<limits> 00031 using namespace std; 00032 class Box3d { 00033 protected: 00034 Point3 min; 00035 Point3 max; 00036 bool initialized; 00037 00038 public: 00039 Box3d():min(std::numeric_limits<float>::max()), max(-1*std::numeric_limits<double>::max()){ 00040 initialized= false; 00041 } 00042 void setBox(Point3 & pt){ 00043 initialized=true; 00044 min.set(pt); 00045 max.set(pt); 00046 } 00047 void addPoint(Point3& pt){ 00048 initialized=true; 00049 min.setIfMin(pt); 00050 max.setIfMax(pt); 00051 } 00052 void addBox(Box3d & b){ 00053 initialized=true; 00054 min.setIfMin(b.min); 00055 max.setIfMax(b.max); 00056 } 00057 const Point3 & getMin()const{ 00058 return min; 00059 } 00060 const Point3 & getMax()const { 00061 return max; 00062 } 00063 bool isInitialized()const { 00064 return initialized; 00065 } 00066 bool equals(const Box3d & other)const{ 00067 return min.equals(other.min) && max.equals(other.max); 00068 } 00069 }; 00070 00071 #endif /* BOX3D_H_ */