00001 #include "rsdl_bounding_box.h" 00002 00003 #include <vcl_cassert.h> 00004 #include <vcl_ostream.h> 00005 00006 rsdl_bounding_box::rsdl_bounding_box( const rsdl_point& min_point, 00007 const rsdl_point& max_point ) 00008 : min_point_(min_point), max_point_(max_point) 00009 { 00010 unsigned int Nc = min_point_.num_cartesian(); 00011 unsigned int Na = min_point_.num_angular(); 00012 00013 assert( max_point_.num_cartesian() == Nc ); 00014 assert( max_point_.num_angular() == Na ); 00015 00016 for ( unsigned int i=0; i<Nc; ++i ) 00017 if ( min_point_.cartesian(i) > max_point_.cartesian(i) ) { 00018 double temp = min_point_.cartesian(i); 00019 min_point_.cartesian(i) = max_point_.cartesian(i); 00020 max_point_.cartesian(i) = temp; 00021 } 00022 } 00023 00024 00025 rsdl_bounding_box::rsdl_bounding_box( const rsdl_bounding_box& old ) 00026 : min_point_(old.min_point_), max_point_(old.max_point_) 00027 { 00028 } 00029 00030 00031 rsdl_bounding_box & 00032 rsdl_bounding_box::operator= ( const rsdl_bounding_box& old ) 00033 { 00034 min_point_ = old.min_point_; 00035 max_point_ = old.max_point_; 00036 return *this; 00037 } 00038 00039 00040 vcl_ostream& operator<< ( vcl_ostream& ostr, const rsdl_bounding_box& box ) 00041 { 00042 unsigned int Nc = box.num_cartesian(); 00043 unsigned int Na = box.num_angular(); 00044 00045 unsigned int i; 00046 for ( i=0; i<Nc; ++i ) 00047 ostr << "Cartesian " << i << ": [" << box.min_cartesian(i) << "," << box.max_cartesian(i) << "]\n"; 00048 for ( i=0; i<Na; ++i ) 00049 ostr << "Angular " << i << ": [" << box.min_angular(i) << "," << box.max_angular(i) << "]\n"; 00050 return ostr; 00051 } 00052 00053
1.4.4