示例#1
0
 /** 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);
 }
示例#2
0
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 ); 
}
示例#3
0
typename Box<Dimensions>::const_iterator Box<Dimensions>::begin() const { 
    if ( volume().value() == 0 ) 
        return end();
    else
        return const_iterator( *this, lower_corner() ); 
}