inlib  1.2.0
Public Member Functions
inlib::box3f Class Reference

List of all members.

Public Member Functions

 box3f ()
virtual ~box3f ()
 box3f (const box3f &a_from)
box3foperator= (const box3f &a_from)
bool center (vec3f &a_center) const
bool set_bounds (const vec3f &a_mn, const vec3f &a_mx)
bool set_bounds (float a_mn_x, float a_mn_y, float a_mn_z, float a_mx_x, float a_mx_y, float a_mx_z)
void make_empty ()
bool get_size (float &a_dx, float &a_dy, float &a_dz) const
bool is_empty () const
const vec3fmn () const
const vec3fmx () const
void extend_by (const vec3f &a_point)
void extend_by (float a_x, float a_y, float a_z)
void dump (std::ostream &a_out)

Detailed Description

Definition at line 15 of file box3f.


Constructor & Destructor Documentation

inlib::box3f::box3f ( ) [inline]

Definition at line 17 of file box3f.

         {
    make_empty();
  }
virtual inlib::box3f::~box3f ( ) [inline, virtual]

Definition at line 20 of file box3f.

{}
inlib::box3f::box3f ( const box3f a_from) [inline]

Definition at line 22 of file box3f.

  :m_min(a_from.m_min)
  ,m_max(a_from.m_max)
  {}

Member Function Documentation

bool inlib::box3f::center ( vec3f a_center) const [inline]

Definition at line 32 of file box3f.

                                     {
    if(is_empty()) {
      a_center.set_value(0,0,0); //??
      return false;
    }
    a_center.set_value((m_max[0] + m_min[0]) * 0.5f,
                       (m_max[1] + m_min[1]) * 0.5f,
                       (m_max[2] + m_min[2]) * 0.5f);
    return true;
  }
void inlib::box3f::dump ( std::ostream &  a_out) [inline]

Definition at line 113 of file box3f.

                               {
    float dx,dy,dz;
    if(!get_size(dx,dy,dz)) {
      a_out << "box is empty." << std::endl;
    } else {
      a_out << " size " << dx << " " << dy << " " << dz << std::endl;
    }
    a_out << " min " << m_min[0] << " " << m_min[1] << " " << m_min[2] << std::endl;
    a_out << " max " << m_max[0] << " " << m_max[1] << " " << m_max[2] << std::endl;
    vec3f c;
    center(c);
    a_out << " center " << c[0] << " " << c[1] << " " << c[2] << std::endl;
  }
void inlib::box3f::extend_by ( const vec3f a_point) [inline]

Definition at line 82 of file box3f.

                                       {
    // Extend the boundaries of the box by the given point, i.e. make the
    // point fit inside the box if it isn't already so.
    if(is_empty()) {
      set_bounds(a_point,a_point);
    } else {
      m_min.set_value(inlib::mn<float>(a_point[0],m_min[0]),
                      inlib::mn<float>(a_point[1],m_min[1]),
                      inlib::mn<float>(a_point[2],m_min[2]));
      m_max.set_value(inlib::mx<float>(a_point[0],m_max[0]),
                      inlib::mx<float>(a_point[1],m_max[1]),
                      inlib::mx<float>(a_point[2],m_max[2]));
    }
  }
void inlib::box3f::extend_by ( float  a_x,
float  a_y,
float  a_z 
) [inline]

Definition at line 97 of file box3f.

                                                {
    // Extend the boundaries of the box by the given point, i.e. make the
    // point fit inside the box if it isn't already so.
    if(is_empty()) {
      set_bounds(a_x,a_y,a_z,a_x,a_y,a_z);
    } else {
      m_min.set_value(inlib::mn<float>(a_x,m_min[0]),
                      inlib::mn<float>(a_y,m_min[1]),
                      inlib::mn<float>(a_z,m_min[2]));
      m_max.set_value(inlib::mx<float>(a_x,m_max[0]),
                      inlib::mx<float>(a_y,m_max[1]),
                      inlib::mx<float>(a_z,m_max[2]));
    }
  }
bool inlib::box3f::get_size ( float &  a_dx,
float &  a_dy,
float &  a_dz 
) const [inline]

Definition at line 64 of file box3f.

                                                           {
    if(is_empty()) {
      a_dx = 0;
      a_dy = 0;
      a_dz = 0;
      return false;
    }
    a_dx = m_max[0] - m_min[0];
    a_dy = m_max[1] - m_min[1];
    a_dz = m_max[2] - m_min[2];
    return true;
  }
bool inlib::box3f::is_empty ( ) const [inline]

Definition at line 76 of file box3f.

                        {
    return m_max[0] < m_min[0];
  }
void inlib::box3f::make_empty ( ) [inline]

Definition at line 60 of file box3f.

                   {
    m_min.set_value(FLT_MAX, FLT_MAX, FLT_MAX);
    m_max.set_value(-FLT_MAX, -FLT_MAX, -FLT_MAX);
  }
const vec3f& inlib::box3f::mn ( ) const [inline]

Definition at line 79 of file box3f.

{return m_min;}
const vec3f& inlib::box3f::mx ( ) const [inline]

Definition at line 80 of file box3f.

{return m_max;}
box3f& inlib::box3f::operator= ( const box3f a_from) [inline]

Definition at line 26 of file box3f.

                                       {
    m_min = a_from.m_min;
    m_max = a_from.m_max;
    return *this;
  }
bool inlib::box3f::set_bounds ( const vec3f a_mn,
const vec3f a_mx 
) [inline]

Definition at line 43 of file box3f.

                                                      {
    if( a_mn[0]>a_mx[0] || 
        a_mn[1]>a_mx[1] || 
        a_mn[2]>a_mx[2]) return false;
    m_min = a_mn;
    m_max = a_mx;
    return true;
  }
bool inlib::box3f::set_bounds ( float  a_mn_x,
float  a_mn_y,
float  a_mn_z,
float  a_mx_x,
float  a_mx_y,
float  a_mx_z 
) [inline]

Definition at line 51 of file box3f.

                                                                {
    if( a_mn_x>a_mx_x || 
        a_mn_y>a_mx_y || 
        a_mn_z>a_mx_z ) return false;
    m_min.set_value(a_mn_x,a_mn_y,a_mn_z);
    m_max.set_value(a_mx_x,a_mx_y,a_mx_z);
    return true;
  }

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines