/** Compute the bounding box of a boundary discretization. */ Box<SHAPE_DIMENSION> compute_bounding_box() const { ublas::fixed_vector<float_t, SHAPE_DIMENSION> lower_corner, upper_corner, point; if(n_points() == 0) return Box<SHAPE_DIMENSION>(); lower_corner = (*this)(0); upper_corner = (*this)(0); for(size_t i = 1; i < n_points(); ++i) { point = (*this)(i); for(size_t j = 0; j < SHAPE_DIMENSION; ++j) { if(point(j) < lower_corner(j)) lower_corner(j) = point(j); if(point(j) > upper_corner(j)) upper_corner(j) = point(j); } } return Box<SHAPE_DIMENSION>(lower_corner, upper_corner); }
typename Box<Dimensions>::const_iterator Box<Dimensions>::end() const { Position end = lower_corner(); end[Dimensions-1] = upper( sides[Dimensions-1] ) + 1 * camera::pixel; return const_iterator( *this, end ); }
typename Box<Dimensions>::const_iterator Box<Dimensions>::begin() const { if ( volume().value() == 0 ) return end(); else return const_iterator( *this, lower_corner() ); }