/* * ===================================================================================== * * Filename: hyper_rectangle.h * * Description: * * Version: 1.0 * Created: 02/11/2007 05:42:53 PM EST * Revision: none * Compiler: gcc * * Author: Nikolaos Vasiloglou (NV), nvasil@ieee.org * Company: Georgia Tech Fastlab-ESP Lab * * ===================================================================================== */ #ifndef HYPER_RECTANGLE_H_ #define HYPER_RECTANGLE_H_ #include #include #include #include "base/basic_types.h" #include "computations_counter.h" template class HyperRectangle { public: friend class HyperRectangleTest; struct PivotData { PivotData(){ } int32 dimension_; typename ALLOCATOR::template ArrayPtr min_; typename ALLOCATOR::template ArrayPtr max_; int32 pivot_dimension_; PRECISION pivot_value_; }; HyperRectangle(PivotData &pivot_data); ~HyperRectangle() {}; static void *operator new(size_t size); static void operator delete(void *p); HyperRectangle &operator=(HyperRectangle &); template bool IsWithin(POINTTYPE point, int32 dimension, PRECISION range, ComputationsCounter &comp); PRECISION IsWithin(HyperRectangle &hr, int32 dimension, PRECISION range, ComputationsCounter &comp); template bool CrossesBoundaries(POINTTYPE point, int32 dimension, PRECISION range, ComputationsCounter &comp); template static PRECISION Distance(POINTTYPE1 point1, POINTTYPE2 point2, int32 dimension); static PRECISION Distance(HyperRectangle &hr1, HyperRectangle &hr2, int32 dimension, ComputationsCounter &comp); static PRECISION Distance(HyperRectangle &hr1, HyperRectangle &hr2, PRECISION threshold_distance, int32 dimension, ComputationsCounter &comp); template pair, typename ALLOCATOR::template Ptr > ClosestChild(typename ALLOCATOR::template Ptr left, typename ALLOCATOR::template Ptr right, POINTTYPE point, int32 dimension, ComputationsCounter &comp); string Print(int32 dimension); private: typename ALLOCATOR::template ArrayPtr min_; typename ALLOCATOR::template ArrayPtr max_; int32 pivot_dimension_; PRECISION pivot_value_; }; #include "hyper_rectangle_impl.h" #endif // HYPER_RECTANGLE_