shape_doc 0.1
cell3d< C, V > Class Template Reference

#include <cell3d.hpp>

Inheritance diagram for cell3d< C, V >:
bounding_box< C, V > Shape cell3d_algebraic_curve< C, V > cell3d_list< C, V > cell3d_surface_algebraic< C, V >

List of all members.

Public Types

Public Member Functions

Public Attributes

Protected Attributes


Detailed Description

template<class C, class V = default_env>
class mmx::shape::cell3d< C, V >

Definition at line 41 of file cell3d.hpp.


Member Typedef Documentation

typedef cell<C,V> Cell
typedef cell3d<C,V> CellBase

Reimplemented in cell3d_surface_algebraic< C, V >.

Definition at line 49 of file cell3d.hpp.

Reimplemented in cell3d_surface_algebraic< C, V >.

Definition at line 47 of file cell3d.hpp.

Reimplemented in cell3d_algebraic_curve< C, V >, and cell3d_surface_algebraic< C, V >.

Definition at line 46 of file cell3d.hpp.

typedef topology<C,REF_OF(V)> Topology
typedef tpl3d<C,V> Topology3d

Reimplemented in cell3d_algebraic_curve< C, V >, and cell3d_surface_algebraic< C, V >.

Definition at line 45 of file cell3d.hpp.


Constructor & Destructor Documentation

cell3d ( void  ) [inline]

Definition at line 53 of file cell3d.hpp.

{};
cell3d ( const BoundingBox bx) [inline]

Definition at line 54 of file cell3d.hpp.

: BoundingBox(bx) {} ;
virtual ~cell3d ( void  ) [inline, virtual]

Definition at line 55 of file cell3d.hpp.

{};

Member Function Documentation

BoundingBox boundingBox ( ) const [inline]

Definition at line 74 of file cell3d.hpp.

{ return (BoundingBox)*this; }
virtual Point center ( void  ) const [inline, virtual]
void connect0 ( cell3d< C, V > *  a,
cell3d< C, V > *  b 
) [inline]

Definition at line 170 of file cell3d.hpp.

References mmx::shape::check_overlap(), and SELF.

{
    int i;
    bool flag;

    //copy horizontally
    b->e_neighbors= this->e_neighbors ;
    foreach(SELF* cl,b->e_neighbors) {
      i= cl->w_neighbors.search(this);
      cl->w_neighbors[i]= b;
    }

    a->w_neighbors= this->w_neighbors ;
    foreach(SELF* cl,a->w_neighbors) {
      i= cl->e_neighbors.search(this);
      cl->e_neighbors[i]= a;
    }

    //update vertically
    foreach(SELF* cl,this->s_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,0) //)
           && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
        {
          //assert( cl->ymax()== a->ymin() );
          a->s_neighbors<< cl;
          i= cl->n_neighbors.search(this);
          cl->n_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,0) //)
           && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
        {
          //assert( cl->ymax()== b->ymin() );
          b->s_neighbors<< cl;
          if (!flag)
            {
              i= cl->n_neighbors.search(this);
              cl->n_neighbors[i]= b;
            }
          else
            cl->n_neighbors << b;
        }
    }
    foreach(SELF* cl,this->n_neighbors) {
        flag=false;
        if ( check_overlap(cl,a,0) //)
             && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) ) 
        {
            a->n_neighbors<< cl;
            i= cl->s_neighbors.search(this);
            cl->s_neighbors[i]= a;
            flag=true;
        }
        if ( check_overlap(cl,b,0) //)
             && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
        {
            b->n_neighbors<< cl;
            if (!flag)
            {
              i= cl->s_neighbors.search(this);
              cl->s_neighbors[i]= b;
            }
            else
              cl->s_neighbors << b;
        }
    } 

    //update depth
    foreach(SELF* cl,this->f_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,0) //)
           && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
        {
          //assert( cl->ymax()== a->ymin() );
          a->f_neighbors<< cl;
          i= cl->b_neighbors.search(this);
          cl->b_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,0) //)
           && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
        {
          //assert( cl->ymax()== b->ymin() );
          b->f_neighbors<< cl;
          if (!flag)
            {
              i= cl->b_neighbors.search(this);
              cl->b_neighbors[i]= b;
            }
          else
            cl->b_neighbors << b;
        }
    }
    foreach(SELF* cl,this->b_neighbors) {
        flag=false;
        if ( check_overlap(cl,a,0) //)
           && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) ) 
        {
            a->b_neighbors<< cl;
            i= cl->f_neighbors.search(this);
            cl->f_neighbors[i]= a;
            flag=true;
        }
        if ( check_overlap(cl,b,0) //)
           && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
        {
            b->b_neighbors<< cl;
            if (!flag)
            {
              i= cl->f_neighbors.search(this);
              cl->f_neighbors[i]= b;
            }
            else
              cl->f_neighbors << b;
        }
    }
}
void connect1 ( cell3d< C, V > *  a,
cell3d< C, V > *  b 
) [inline]

Definition at line 290 of file cell3d.hpp.

References mmx::shape::check_overlap(), and SELF.

{
    int i;
    bool flag;

    //copy vertically
    a->s_neighbors= this->s_neighbors ;
    foreach(SELF* cl,a->s_neighbors) {
      i= cl->n_neighbors.search(this);
      cl->n_neighbors[i]= a;
    }
    b->n_neighbors= this->n_neighbors ;
    foreach(SELF* cl,b->n_neighbors) {
      i= cl->s_neighbors.search(this);
      cl->s_neighbors[i]= b;
    }
    
    //update horizontally
    foreach(SELF* cl,this->w_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,1) //) 
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
        {
          //assert( cl->xmax()== a->xmin() );
          a->w_neighbors<< cl;
          i= cl->e_neighbors.search(this);
          cl->e_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,1) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
        {
          //assert( cl->xmax()== b->xmin() );
          b->w_neighbors<< cl;
          if (!flag)
            {
              i= cl->e_neighbors.search(this);
              cl->e_neighbors[i]= b;
            }
          else
            cl->e_neighbors << b;
        }
    }
    foreach(SELF* cl,this->e_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,1) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) )  
        {
          a->e_neighbors<< cl;
          i= cl->w_neighbors.search(this);
          cl->w_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,1) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
        {
          b->e_neighbors<< cl;
          if (!flag)
            {
              i= cl->w_neighbors.search(this);
              cl->w_neighbors[i]= b;
            }
          else
            cl->w_neighbors << b;
        }
    }


    //update depth
    foreach(SELF* cl,this->f_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,1) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) )  
        {
          //assert( cl->xmax()== a->xmin() );
          a->f_neighbors<< cl;
          i= cl->b_neighbors.search(this);
          cl->b_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,1) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
        {
          //assert( cl->xmax()== b->xmin() );
          b->f_neighbors<< cl;
          if (!flag)
            {
              i= cl->b_neighbors.search(this);
              cl->b_neighbors[i]= b;
            }
          else
            cl->b_neighbors << b;
        }
    }
    foreach(SELF* cl,this->b_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,1) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) )  
        {
          a->b_neighbors<< cl;
          i= cl->f_neighbors.search(this);
          cl->f_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,1) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
        {
          b->b_neighbors<< cl;
          if (!flag)
            {
              i= cl->f_neighbors.search(this);
              cl->f_neighbors[i]= b;
            }
          else
            cl->f_neighbors << b;
        }
    }
}
void connect2 ( cell3d< C, V > *  a,
cell3d< C, V > *  b 
) [inline]

Definition at line 411 of file cell3d.hpp.

References mmx::shape::check_overlap(), and SELF.

{
    int i;
    bool flag;

    //copy vertically
    a->f_neighbors= this->f_neighbors ;
    foreach(SELF* cl,a->f_neighbors) {
      i= cl->b_neighbors.search(this);
      cl->b_neighbors[i]= a;
    }
    b->b_neighbors= this->b_neighbors ;
    foreach(SELF* cl,b->b_neighbors) {
      i= cl->f_neighbors.search(this);
      cl->f_neighbors[i]= b;
    }
    
    //update horizontally
    foreach(SELF* cl,this->w_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,2) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
        {
          //assert( cl->xmax()== a->xmin() );
          a->w_neighbors<< cl;
          i= cl->e_neighbors.search(this);
          cl->e_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,2) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
        {
          //assert( cl->xmax()== b->xmin() );
          b->w_neighbors<< cl;
          if (!flag)
            {
              i= cl->e_neighbors.search(this);
              cl->e_neighbors[i]= b;
            }
          else
            cl->e_neighbors << b;
        }
    }
    foreach(SELF* cl,this->e_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,2) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )   
        {
          a->e_neighbors<< cl;
          i= cl->w_neighbors.search(this);
          cl->w_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,2) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
        {
          b->e_neighbors<< cl;
          if (!flag)
            {
              i= cl->w_neighbors.search(this);
              cl->w_neighbors[i]= b;
            }
          else
            cl->w_neighbors << b;
        }
    }
    //update vertically
    foreach(SELF* cl,this->s_neighbors) {
      flag=false;
      if ( check_overlap(cl,a,0) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
        {
          //assert( cl->ymax()== a->ymin() );
          a->s_neighbors<< cl;
          i= cl->n_neighbors.search(this);
          cl->n_neighbors[i]= a;
          flag=true;
        }
      if ( check_overlap(cl,b,0) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
        {
          //assert( cl->ymax()== b->ymin() );
          b->s_neighbors<< cl;
          if (!flag)
            {
              i= cl->n_neighbors.search(this);
              cl->n_neighbors[i]= b;
            }
          else
            cl->n_neighbors << b;
        }
    }
    foreach(SELF* cl,this->n_neighbors) {
        flag=false;
        if ( check_overlap(cl,a,2) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
        {
          a->n_neighbors<< cl;
          i= cl->s_neighbors.search(this);
          cl->s_neighbors[i]= a;
          flag=true;
        }
        if ( check_overlap(cl,b,2) //)
        && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
          {
            b->n_neighbors<< cl;
            if (!flag) {
              i= cl->s_neighbors.search(this);
              cl->s_neighbors[i]= b;
            }
            else
              cl->s_neighbors << b;
        }
    }
}
bool contains ( double  x,
bool  strict = false 
) [inherited]

Definition at line 205 of file bounding_box.hpp.

{
    if(!strict)
        return (((m_xmin <= x) && (x <= m_xmax))) ;
    else 
        return (((m_xmin <  x) && (x <  m_xmax))) ;
}
bool contains ( double  x,
double  y,
bool  strict = false 
) [inherited]

Definition at line 214 of file bounding_box.hpp.

{
    if(!strict)
        return (((m_xmin <= x) && (x <= m_xmax)) 
           &&   ((m_ymin <= y) && (y <= m_ymax))) ;
    else 
        return (((m_xmin <  x) && (x <  m_xmax)) 
           &&   ((m_ymin <  y) && (y <  m_ymax))) ;
}
bool contains ( double  x,
double  y,
double  z,
bool  strict = false 
) [inherited]

Definition at line 225 of file bounding_box.hpp.

{
    if(!strict)
        return (((m_xmin <= x) && (x <= m_xmax)) 
           &&   ((m_ymin <= y) && (y <= m_ymax)) 
           &&   ((m_zmin <= z) && (z <= m_zmax)))  ;
    else 
        return (((m_xmin <  x) && (x <  m_xmax)) 
           &&   ((m_ymin <  y) && (y <  m_ymax)) 
           &&   ((m_zmin <  z) && (z <  m_zmax)))  ;
}
void disconnect ( ) [inline]

Definition at line 528 of file cell3d.hpp.

{
    this->e_neighbors.clear();  
    this->w_neighbors.clear();  
    this->n_neighbors.clear();  
    this->s_neighbors.clear();  
    this->b_neighbors.clear();  
    this->f_neighbors.clear();  
}
virtual bool insert_regular ( Topology ) [pure virtual]
virtual bool insert_singular ( Topology ) [pure virtual]
bounding_box< C, V > * intersect ( const bounding_box< C, V > &  other) [inherited]

Definition at line 318 of file bounding_box.hpp.

References mmx::shape::mmxmax(), mmx::shape::mmxmin(), and SELF.

Referenced by bounding_box< double, V >::operator*().

                                 {
  SELF * cell = new SELF ;
  cell->set_xmin(mmxmax(this->xmin(), other.xmin())) ;
  cell->set_xmax(mmxmin(this->xmax(), other.xmax())) ;
  cell->set_ymin(mmxmax(this->ymin(), other.ymin())) ;
  cell->set_ymax(mmxmin(this->ymax(), other.ymax())) ;
  cell->set_zmin(mmxmax(this->zmin(), other.zmin())) ;
  cell->set_zmax(mmxmin(this->zmax(), other.zmax())) ;
  return cell ;
}
void intersected ( bounding_box< C, V > *  other) [inherited]

Definition at line 298 of file bounding_box.hpp.

References mmx::shape::mmxmax(), and mmx::shape::mmxmin().

                              {
  set_xmin(mmxmax(this->xmin(), other->xmin())) ;
  set_xmax(mmxmin(this->xmax(), other->xmax())) ;
  set_ymin(mmxmax(this->ymin(), other->ymin())) ;
  set_ymax(mmxmin(this->ymax(), other->ymax())) ;
  set_zmin(mmxmax(this->zmin(), other->zmin())) ;
  set_zmax(mmxmin(this->zmax(), other->zmax())) ;
}
bool intersects ( bounding_box< C, V > *  other,
bool  strict = true 
) [inherited]

Definition at line 238 of file bounding_box.hpp.

References mmx::shape::mmxmax(), and mmx::shape::mmxmin().

{
         if(this->is0D())
            return (this->xmin() == other->xmin()) ;
    else if(this->is1D())
        if(strict)
            return ((mmxmax(this->xmin(), other->xmin()) <  mmxmin(this->xmax(), other->xmax()))) ;
        else
            return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax()))) ;
    else if(this->is2D())
        if(strict)
            return ((mmxmax(this->xmin(), other->xmin()) <  mmxmin(this->xmax(), other->xmax())) &&
                    (mmxmax(this->ymin(), other->ymin()) <  mmxmin(this->ymax(), other->ymax()))) ;
        else
            return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax())) &&
                    (mmxmax(this->ymin(), other->ymin()) <= mmxmin(this->ymax(), other->ymax()))) ;
    else if(this->is3d()) {
        if(strict)
            return ((mmxmax(this->xmin(), other->xmin()) <  mmxmin(this->xmax(), other->xmax())) &&
                    (mmxmax(this->ymin(), other->ymin()) <  mmxmin(this->ymax(), other->ymax())) &&
                    (mmxmax(this->zmin(), other->zmin()) <  mmxmin(this->zmax(), other->zmax()))) ;
        else
            return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax())) &&
                    (mmxmax(this->ymin(), other->ymin()) <= mmxmin(this->ymax(), other->ymax())) &&
                    (mmxmax(this->zmin(), other->zmin()) <= mmxmin(this->zmax(), other->zmax()))) ;
    }
         return false ;
}
bool is0D ( void  ) const [inline, inherited]

Definition at line 80 of file bounding_box.hpp.

{ return ((m_xmin == m_xmax) && (m_ymin == m_ymax) && (m_zmin == m_zmax)) ; }
bool is1D ( void  ) const [inline, inherited]

Definition at line 81 of file bounding_box.hpp.

{ return ((m_xmin != m_xmax) && (m_ymin == m_ymax) && (m_zmin == m_zmax)) ; }
bool is2D ( void  ) const [inline, inherited]

Definition at line 82 of file bounding_box.hpp.

{ return ((m_xmin != m_xmax) && (m_ymin != m_ymax) && (m_zmin == m_zmax)) ; }
bool is3d ( void  ) const [inline, inherited]

Definition at line 83 of file bounding_box.hpp.

{ return ((m_xmin != m_xmax) && (m_ymin != m_ymax) && (m_zmin != m_zmax)) ; }
virtual bool is_active ( void  ) const [pure virtual]
virtual bool is_intersected ( void  ) [pure virtual]
virtual bool is_regular ( void  ) [pure virtual]
void join0 ( cell3d< C, V > *  b) [inline]

Definition at line 149 of file cell3d.hpp.

{
    this->e_neighbors << b; 
    b->w_neighbors << this; 
}
void join1 ( cell3d< C, V > *  b) [inline]

Definition at line 156 of file cell3d.hpp.

{
    b->s_neighbors << this;
    this->n_neighbors << b;
}
void join2 ( cell3d< C, V > *  b) [inline]

Definition at line 163 of file cell3d.hpp.

{
    b->f_neighbors << this;
    this->b_neighbors << b;
}
Seq<cell3d *> neighbors ( ) [inline]
double operator() ( unsigned  v,
unsigned  s 
) const [inherited]

Definition at line 342 of file bounding_box.hpp.

                                             {
  switch(v) {
  case 0:
    if(s==0) return xmin(); else return xmax();
  case 1:
    if(s==0) return ymin(); else return ymax();
  default:
    if(s==0) return zmin(); else return zmax();
  }
  
}
double & operator() ( unsigned  v,
unsigned  s 
) [inherited]

Definition at line 355 of file bounding_box.hpp.

                                       {
  switch(v) {
  case 0:
    if(s==0) return m_xmin; else return m_xmax;
  case 1:
    if(s==0) return m_ymin; else return m_ymax;
  default:
    if(s==0) return m_zmin; else return m_zmax;
  }
  
}
bounding_box<C,V>* operator* ( const bounding_box< C, V > &  other) [inline, inherited]

Definition at line 103 of file bounding_box.hpp.

{ return intersect(other) ; }
bounding_box<C,V>* operator+ ( const bounding_box< C, V > &  other) [inline, inherited]

Definition at line 104 of file bounding_box.hpp.

{ return     unite(other) ; }
virtual void polygonise ( Topology3d ) [pure virtual]
void set_xmax ( double  x) [inline, inherited]

Definition at line 74 of file bounding_box.hpp.

{ this->m_xmax = x ; }
void set_xmin ( double  x) [inline, inherited]

Definition at line 73 of file bounding_box.hpp.

{ this->m_xmin = x ; }
void set_ymax ( double  y) [inline, inherited]

Definition at line 76 of file bounding_box.hpp.

{ this->m_ymax = y ; }
void set_ymin ( double  y) [inline, inherited]

Definition at line 75 of file bounding_box.hpp.

{ this->m_ymin = y ; }
void set_zmax ( double  z) [inline, inherited]

Definition at line 78 of file bounding_box.hpp.

{ this->m_zmax = z ; }
void set_zmin ( double  z) [inline, inherited]

Definition at line 77 of file bounding_box.hpp.

{ this->m_zmin = z ; }
void split_position ( int &  v,
double &  s 
) [virtual]

Reimplemented in cell3d_list< C, V >.

Definition at line 125 of file cell3d.hpp.

                                      {
  double sx = (this->xmax()-this->xmin());
  double sy = (this->ymax()-this->ymin());
  double sz = (this->zmax()-this->zmin());
  
  if(sx<sy)
      if(sy<sz) {
        v=2;
        s=(this->zmax()+this->zmin())/2;
      } else {
        v=1;
        s=(this->ymax()+this->ymin())/2;
      }
    else
      if(sx<sz) {
        v=2;
        s=(this->zmax()+this->zmin())/2;
      } else {
        v=0;
        s=(this->xmax()+this->xmin())/2;
      }
}
int subdivide ( cell3d< C, V > *&  left,
cell3d< C, V > *&  right 
) [virtual]

Definition at line 117 of file cell3d.hpp.

Referenced by mesher3d_shape< C, V >::subdivide().

                                         {
  int v; double s;
  this->split_position(v,s);
  this->subdivide(Left,Right,v,s);
  return v;
}
virtual void subdivide ( cell3d< C, V > *&  left,
cell3d< C, V > *&  right,
int  v,
double  s 
) [pure virtual]
virtual bool topology_regular ( Topology ) [pure virtual]
bounding_box< C, V > * unite ( bounding_box< C, V > *  other) [inherited]

Definition at line 330 of file bounding_box.hpp.

References mmx::shape::mmxmax(), mmx::shape::mmxmin(), and SELF.

Referenced by bounding_box< double, V >::operator+().

                        {
  SELF * cell = new SELF ;
  cell->set_xmin(mmxmin(this->xmin(), other->xmin())) ;
  cell->set_xmax(mmxmax(this->xmax(), other->xmax())) ;
  cell->set_ymin(mmxmin(this->ymin(), other->ymin())) ;
  cell->set_ymax(mmxmax(this->ymax(), other->ymax())) ;
  cell->set_zmin(mmxmin(this->zmin(), other->zmin())) ;
  cell->set_zmax(mmxmax(this->zmax(), other->zmax())) ;
  return cell ;
}
void united ( bounding_box< C, V > *  other) [inherited]

Definition at line 308 of file bounding_box.hpp.

References mmx::shape::mmxmax(), and mmx::shape::mmxmin().

                         {
  set_xmin(mmxmin(this->xmin(), other->xmin())) ;
  set_xmax(mmxmax(this->xmax(), other->xmax())) ;
  set_ymin(mmxmin(this->ymin(), other->ymin())) ;
  set_ymax(mmxmax(this->ymax(), other->ymax())) ;
  set_zmin(mmxmin(this->zmin(), other->zmin())) ;
  set_zmax(mmxmax(this->zmax(), other->zmax())) ;
}
bool unites ( bounding_box< C, V > *  other,
bool  strict = true 
) [inherited]

Definition at line 268 of file bounding_box.hpp.

References mmx::shape::mmxmax(), and mmx::shape::mmxmin().

{
  if(this->is0D())
    return (this->xmin() == other->xmin()) ;
  else if(this->is1D()) {
    if(strict)
      return ((mmxmin(this->xmin(), other->xmin()) <  mmxmax(this->xmax(), other->xmax()))) ;
    else
      return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax()))) ;
  } else if(this->is2D()) {
    if(strict)
      return ((mmxmin(this->xmin(), other->xmin()) <  mmxmax(this->xmax(), other->xmax())) &&
              (mmxmin(this->ymin(), other->ymin()) <  mmxmax(this->ymax(), other->ymax()))) ;
    else
      return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax())) &&
              (mmxmin(this->ymin(), other->ymin()) <= mmxmax(this->ymax(), other->ymax()))) ;
  } else if(this->is3d()) {
    if(strict)
      return ((mmxmin(this->xmin(), other->xmin()) <  mmxmax(this->xmax(), other->xmax())) &&
                    (mmxmin(this->ymin(), other->ymin()) <  mmxmax(this->ymax(), other->ymax())) &&
              (mmxmin(this->zmin(), other->zmin()) <  mmxmax(this->zmax(), other->zmax()))) ;
    else
      return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax())) &&
              (mmxmin(this->ymin(), other->ymin()) <= mmxmax(this->ymax(), other->ymax())) &&
              (mmxmin(this->zmin(), other->zmin()) <= mmxmax(this->zmax(), other->zmax()))) ;
    }
  return false ;
}
double xmax ( void  ) const [inline, inherited]

Definition at line 63 of file bounding_box.hpp.

{ return m_xmax ; }
double xmin ( void  ) const [inline, inherited]

Definition at line 62 of file bounding_box.hpp.

{ return m_xmin ; }
double xsize ( void  ) const [inline, inherited]

Definition at line 69 of file bounding_box.hpp.

{ return m_xmax-m_xmin ; }
double ymax ( void  ) const [inline, inherited]

Definition at line 65 of file bounding_box.hpp.

{ return m_ymax ; }
double ymin ( void  ) const [inline, inherited]

Definition at line 64 of file bounding_box.hpp.

{ return m_ymin ; }
double ysize ( void  ) const [inline, inherited]

Definition at line 70 of file bounding_box.hpp.

{ return m_ymax-m_ymin ; }
double zmax ( void  ) const [inline, inherited]

Definition at line 67 of file bounding_box.hpp.

{ return m_zmax ; }
double zmin ( void  ) const [inline, inherited]

Definition at line 66 of file bounding_box.hpp.

{ return m_zmin ; }
double zsize ( void  ) const [inline, inherited]

Definition at line 71 of file bounding_box.hpp.

{ return m_zmax-m_zmin ; }

Member Data Documentation

Definition at line 111 of file cell3d.hpp.

Referenced by cell3d< C, V >::neighbors().

Definition at line 107 of file cell3d.hpp.

Referenced by cell3d< C, V >::neighbors().

Definition at line 110 of file cell3d.hpp.

Referenced by cell3d< C, V >::neighbors().

Seq<Point *> m_boundary

Definition at line 88 of file cell3d.hpp.

Referenced by cell3d_algebraic_curve< C, V >::cell3d_algebraic_curve().

Definition at line 93 of file cell3d.hpp.

Seq<Point *> m_singular

Definition at line 89 of file cell3d.hpp.

int m_type

Definition at line 90 of file cell3d.hpp.

Definition at line 108 of file cell3d.hpp.

Referenced by cell3d< C, V >::neighbors().

Definition at line 104 of file cell3d.hpp.

Referenced by cell3d< C, V >::neighbors().

Definition at line 109 of file cell3d.hpp.

Referenced by cell3d< C, V >::neighbors().


The documentation for this class was generated from the following file: