shape_doc 0.1
cell2d_list< C, V > Class Template Reference

#include <cell2d_list.hpp>

Inheritance diagram for cell2d_list< C, V >:
cell2d< C, V > cell< C, REF_OF(V) > bounding_box< C, REF_OF(V) > Shape cell2d_intersection< C, V >

List of all members.

Public Types

Public Member Functions

Public Attributes

Protected Attributes


Detailed Description

template<class C, class V>
class mmx::shape::cell2d_list< C, V >

Definition at line 36 of file cell2d_list.hpp.


Member Typedef Documentation

typedef cell<C,V>::BoundingBox BoundingBox

Reimplemented from cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 38 of file cell2d_list.hpp.

typedef cell<C, REF_OF(V) > Cell [inherited]
typedef topology<C,V>::Edge Edge [inherited]
typedef cell2d<C,V>::Point Point

Reimplemented from cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 39 of file cell2d_list.hpp.

typedef topology<C,V> Topology

Reimplemented from cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 40 of file cell2d_list.hpp.

typedef use<cell_def,REF_OF(V) > VARIANT [inherited]

Definition at line 57 of file cell.hpp.


Constructor & Destructor Documentation

cell2d_list ( void  )

Definition at line 140 of file cell2d_list.hpp.

: m_intersected(false) {}
cell2d_list ( double  xmin,
double  xmax 
)
cell2d_list ( double  xmin,
double  xmax,
double  ymin,
double  ymax 
)

Definition at line 143 of file cell2d_list.hpp.

:  cell2d<C,V>(xmin, xmax, ymin, ymax), m_intersected(false) {}
cell2d_list ( double  xmin,
double  xmax,
double  ymin,
double  ymax,
bool  itr 
)

Definition at line 146 of file cell2d_list.hpp.

: cell2d<C,V>(xmin, xmax, ymin, ymax), m_intersected(itr) {}
cell2d_list ( const BoundingBox bx)

Definition at line 149 of file cell2d_list.hpp.

: cell2d<C,V>(bx), m_intersected(false)  {};
~cell2d_list ( void  ) [virtual]

Definition at line 152 of file cell2d_list.hpp.

                             {
    foreach (Cell* m, this->m_objects) delete m;
}

Member Function Documentation

BoundingBox boundingBox ( ) const [inline, inherited]

Definition at line 88 of file cell.hpp.

{ return (BoundingBox)*this; }
virtual Point center ( void  ) const [inline, virtual, inherited]

Definition at line 82 of file cell.hpp.

                                         { 
    // XXX ???
    return Point(this->xmax()-this->xmin(),
                 this->ymax()-this->ymin(),
                 this->zmax()-this->zmin()); 
  }
void connect0 ( cell2d< C, V > *  a,
cell2d< C, V > *  b 
) [inline, inherited]

Definition at line 281 of file cell2d.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))
        {
          //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) )
        {
          //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)) 
        {
            a->n_neighbors<< cl;
            i= cl->s_neighbors.search(this);
            cl->s_neighbors[i]= a;
            flag=true;
        }
        if ( check_overlap(cl,b,0) )
        {
            b->n_neighbors<< cl;
            if (!flag)
            {
                                        i= cl->s_neighbors.search(this);
                                        cl->s_neighbors[i]= b;
            }
            else
                                        cl->s_neighbors << b;
        }
  }
}
void connect1 ( cell2d< C, V > *  a,
cell2d< C, V > *  b 
) [inline, inherited]

Definition at line 346 of file cell2d.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)) 
            {
                //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) )
            {
                //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)) 
        {
            a->e_neighbors<< cl;
            i= cl->w_neighbors.search(this);
            cl->w_neighbors[i]= a;
            flag=true;
        }
        if ( check_overlap(cl,b,1) )
        {
            b->e_neighbors<< cl;
            if (!flag)
            {
                i= cl->w_neighbors.search(this);
                cl->w_neighbors[i]= b;
            }
            else
                cl->w_neighbors << b;
        }
    }
}
bool contains ( double  x,
bool  strict = false 
) [inherited]
bool contains ( double  x,
double  y,
bool  strict = false 
) [inherited]
bool contains ( double  x,
double  y,
double  z,
bool  strict = false 
) [inherited]
int count ( void  ) [inline]

Definition at line 85 of file cell2d_list.hpp.

References cell2d_list< C, V >::m_objects.

{ return m_objects.size() ; }
void disconnect ( ) [inline, inherited]

Definition at line 422 of file cell2d.hpp.

{
    this->e_neighbors.clear();
    this->w_neighbors.clear();
    this->n_neighbors.clear();
    this->s_neighbors.clear();
}
bool insert_regular ( Topology s) [virtual]

Implements cell< C, REF_OF(V) >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 185 of file cell2d_list.hpp.

References cell< C, V >::insert_regular(), and topology< C, V >::insert_singular().

                                      {
  foreach(Cell*  m, this->m_objects)   m->insert_regular(s);
  if (this->m_singular.size() > 0) 
    foreach(Point* p, this->m_singular) s->insert_singular(p);
  return true;
}
bool insert_singular ( Topology s) [virtual]

Implements cell< C, REF_OF(V) >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 193 of file cell2d_list.hpp.

References cell< C, V >::insert_singular().

                                       {
  //s->singular(this);
  foreach(Cell * m, this->m_objects) m->insert_singular(s);
  return true;
}
bounding_box<C,REF_OF(V) >* intersect ( const bounding_box< C, REF_OF(V) > &  other) [inherited]
void intersected ( bounding_box< C, REF_OF(V) > *  other) [inherited]
virtual Seq<Point *> intersections ( int  i) const [inline, virtual]

Reimplemented from cell2d< C, V >.

Definition at line 71 of file cell2d_list.hpp.

References Cell2dAlgebraicCurve, and cell2d_list< C, V >::m_objects.

                                                 {
      Seq<Point*> l;
      Cell2dAlgebraicCurve* c;
      
      foreach(Cell*m, this->m_objects)
      {
          c = dynamic_cast<Cell2dAlgebraicCurve*>(m);
          l<< c->intersections(i);
      }
      return l;
  }
Seq< typename mmx::shape::cell2d< C, V >::Point * > intersections ( ) const [virtual]

Reimplemented from cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 450 of file cell2d_list.hpp.

References Cell2d.

                               {
    Seq<Point *> s,e,n,w,r;

    Cell2d* cl;
    foreach (Cell* m, m_objects)
    {
        cl = dynamic_cast<Cell2d*>(m);           
        s<< cl->s_intersections;
        e<< cl->e_intersections;
        n<< cl->n_intersections;
        w<< cl->w_intersections;
    }
    s.sort(this->coord<0>);
    e.sort(this->coord<1>);
    n.sort(this->coord<0>);
    w.sort(this->coord<1>);

    r<<s;
    r<<e;
    r<<n.reversed();
    r<<w.reversed();


    return ( r ); 
}
bool intersects ( bounding_box< C, REF_OF(V) > *  other,
bool  strict = true 
) [inherited]
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)) ; }
bool is_active ( void  ) [virtual]

Implements cell< C, REF_OF(V) >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 264 of file cell2d_list.hpp.

References cell< C, V >::is_active().

                       {
    foreach (Cell* m, m_objects) 
    if(m->is_active()) return true;
  return false;
}
bool is_border ( void  ) const [inline, inherited]

Definition at line 121 of file cell2d.hpp.

Referenced by voronoi2d< C, V >::run(), topology2d< C, V >::run(), semialgebraic2d< C, V >::run(), and arrangement2d< C, V >::run().

                                    {
      return (  this->s_neighbors.size()==0 ||
                this->e_neighbors.size()==0 ||
                this->n_neighbors.size()==0 ||
                this->w_neighbors.size()==0  );
  }
bool is_corner ( void  ) const [inherited]

Definition at line 431 of file cell2d.hpp.

Referenced by voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), and arrangement2d< C, V >::run().

                      {

    if (this->s_neighbors.size()==0 &&
        this->e_neighbors.size()==0  )
        return true;
    else if (this->e_neighbors.size()==0 &&
             this->n_neighbors.size()==0 )
        return true;
    else if (this->n_neighbors.size()==0 &&
             this->w_neighbors.size()==0  )
        return true;
    else if (this->w_neighbors.size()==0 &&
             this->s_neighbors.size()==0 )
        return true;
    
    return false;
}
bool is_intersected ( void  ) [virtual]

Implements cell< C, REF_OF(V) >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 169 of file cell2d_list.hpp.

                           {
  
  if(this->m_objects.size() >1 && !m_intersected) {
      //std::cout<<"Intersecting inside box "<< this <<std::endl;
      for(unsigned i=0; i<this->m_objects.size();i++)
          for(unsigned j=i+1; j<this->m_objects.size(); j++)
            Intersection2dFactory::instance()->compute(this->m_singular, (Shape*)this->m_objects[i], (Shape*)this->m_objects[j], (BoundingBox)*this);
      m_intersected = true;      
  }
  
  if (this->m_singular.size() > 0) return true;
  return false;
}
bool is_regular ( void  ) [virtual]

Implements cell< C, REF_OF(V) >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 157 of file cell2d_list.hpp.

                      {
  foreach (Cell* m, this->m_objects) 
    if(!m-> is_regular()) return false;

  if ( is_intersected() )
      return ( (this->m_singular.size()<2) &&
               (this->nb_intersect()<5) );
  else
      return (this->nb_intersect()<3) ;
}
virtual bool is_touching ( void  ) [inline, virtual]

Reimplemented in cell2d_intersection< C, V >.

Definition at line 63 of file cell2d_list.hpp.

{return true; };
void join0 ( cell2d< C, V > *  b) [inline, inherited]

Definition at line 267 of file cell2d.hpp.

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

Definition at line 274 of file cell2d.hpp.

{
    b->s_neighbors << this;
    this->n_neighbors << b;
}
unsigned nb_intersect ( void  ) const [virtual]

Reimplemented from cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 271 of file cell2d_list.hpp.

References Cell2d.

                                   {
    unsigned sum(0);
    Cell2d* c;
    foreach (Cell* m, m_objects)
    { 
        c = dynamic_cast<Cell2d*>(m);
        sum+= c->nb_intersect();
    }
    return sum;
  }
cell2d< C, V > * neighbor ( Point p) [virtual]

Reimplemented from cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 421 of file cell2d_list.hpp.

References Cell2d.

{
    //Cell2d* cl;
      foreach( Cell2d *c, this->s_neighbors     )
        if ( c->intersections(2).member(p) )
          { 
              return c;
          }
      foreach( Cell2d *c, this->e_neighbors     )
        if ( c->intersections(3).member(p) )
          { 
              return c;
          }
      foreach( Cell2d *c, this->n_neighbors     )
        if ( c->intersections(0).member(p) )
          { 
              return c;
          }
      foreach( Cell2d *c, this->w_neighbors     )
        if ( c->intersections(1).member(p) )
          { 
              return c;
          }

      //std::cout<<"Point ("<<p->x()<<","<<p->y()<<") not found on neighbors of "<< this<<"("<<this->neighbors().size() <<")"<<std::endl; 
    return NULL;
}
virtual Seq<cell2d *> neighbors ( ) [inline, virtual, inherited]

Definition at line 162 of file cell2d.hpp.

Referenced by voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), and arrangement2d< C, V >::run().

                                       {
      Seq<cell2d *> r;
      r<< this->s_neighbors; 
      r<< this->e_neighbors; 
      r<< this->n_neighbors; 
      r<< this->w_neighbors;
  return ( r ); }
double operator() ( unsigned  v,
unsigned  s 
) const [inherited]
double& operator() ( unsigned  v,
unsigned  s 
) [inherited]
bounding_box<C,REF_OF(V) >* operator* ( const bounding_box< C, REF_OF(V) > &  other) [inline, inherited]

Definition at line 103 of file bounding_box.hpp.

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

Definition at line 104 of file bounding_box.hpp.

{ return     unite(other) ; }
cell2d_list< C, V >::Point * pair ( Point p,
int &  sgn 
) [virtual]

Implements cell2d< C, V >.

Definition at line 300 of file cell2d_list.hpp.

References Cell2d, and Cell2dAlgebraicCurve.

{
    if ( this->is_intersected() ) {
        //
      //std::cout<<"Reached intersection cell "<< *this<<std::endl;
      // std::cout<<"p= "<< *p <<std::endl;
      //foreach (Point*q, this->intersections() ) 
      //std::cout<<"q= "<< *q <<std::endl;

        Seq<Point*> l0,l1,l2,l3;
        Cell2dAlgebraicCurve* c, *v(NULL);
        double ev(0); int i, u(0);

        foreach (Cell* m, m_objects)
        {
            c = dynamic_cast<Cell2dAlgebraicCurve*>(m);
            int * sz = c->m_polynomial.rep().szs();
            int * st = c->m_polynomial.rep().str();
      
            l0<< c->s_intersections;
            if (c->s_intersections.member(p))
            {u=0; ev= (c->m_polynomial[0] >0 ? 1:-1); v=c;}
            l1<< c->e_intersections;
            if (c->e_intersections.member(p))
            {u=1; ev= (c->m_polynomial[(sz[0]-1)*st[0]] >0 ? 1:-1); v=c;}
            l2<< c->n_intersections;
            if (c->n_intersections.member(p))
            {u=2;ev=(c->m_polynomial[sz[0]*sz[1]-1]>0 ? 1:-1); v=c;}
            l3<< c->w_intersections;
            if (c->w_intersections.member(p))
             {u=3;ev=(c->m_polynomial[(sz[1]-1)*st[1]] >0 ? 1:-1); v=c;}
        }
//        std::cout<<"IN: u="<<u<<", ev="<<ev<<std::endl;
        l0.sort(this->coord<0>);
        l1.sort(this->coord<1>);
        l2.sort(this->coord<0>);
        l3.sort(this->coord<1>);
        l0<<l1; l0<<l2.reversed(); l0<<l3.reversed();
        
        foreach (Point*q, v->intersections(u) ) 
         {
             if (q==p) break;
             ev*=-1;
         }
        

        i=l0.search(p);
        int a=l0.size();

        Point *q;
        if (ev*sgn>0)
            q=l0[(i!=0 ?i-1:a-1)];
        else
            q= l0[(i!=a-1 ?i+1:0)];

        //std::cout<<"res="<< *q <<std::endl;

        int ev2(444);
        foreach (Cell* m, m_objects)
        {
            c = dynamic_cast<Cell2dAlgebraicCurve*>(m);
            int * sz = c->m_polynomial.rep().szs();
            int * st = c->m_polynomial.rep().str();

            if (c->s_intersections.member(q))
            {u=0; ev2= (c->m_polynomial[0] >0 ? 1:-1); v=c;}
            if (c->e_intersections.member(q))
            {u=1; ev2= (c->m_polynomial[(sz[0]-1)*st[0]] >0 ? 1:-1); v=c;}
            if (c->n_intersections.member(q))
            {u=2;ev2=(c->m_polynomial[sz[0]*sz[1]-1]>0 ? 1:-1); v=c;}
            if (c->w_intersections.member(q))
             {u=3;ev2=(c->m_polynomial[(sz[1]-1)*st[1]] >0 ? 1:-1); v=c;}
        }
        foreach (Point*w, v->intersections(u) ) 
         {
             if (q==w) break;
             ev2*=-1;
         }

//        std::cout<<"Entered from branch "<<sgn<<std::endl;

        if (ev*sgn>0)
            sgn=-ev2;
        else
            sgn=ev2;

//        std::cout<<"exiting to "<<sgn<<std::endl;
//        std::cout<<"OUT: u="<<u<<", ev2="<<ev2<<std::endl;

        return q;

    } else {

        Cell2d* c;
        foreach (Cell* m, m_objects)
        { 
            c = dynamic_cast<Cell2d*>(m);
            if ( c->intersections().member(p) )
                return c->pair(p,sgn);
        }
    }
    std::cout<<"... Cell list pair trouble"<<std::endl;
    return NULL;
} 
void push_back ( cell< C, V > *  cv) [inline]

Definition at line 84 of file cell2d_list.hpp.

References cell2d_list< C, V >::m_objects.

{ m_objects.push_back(cv); }; 
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 ; }
int side ( Point p) [inline, inherited]

Definition at line 140 of file cell2d.hpp.

                       {
      Seq<Point*> all;
      int s,i,a;
      s   = s_intersections.size();
      all = this->intersections();
      a   = all.size();
      i   = all.search(p);
      if (i==-1) return (-1);
      else return
         ( i<s                             ? 0 :
         ( i<s+(int)e_intersections.size() ? 1 :
         ( i<a-(int)w_intersections.size() ? 2 :
                                      3 )));
  }
double size ( void  ) [inherited]
void split_position ( int &  v,
double &  t 
) [virtual]

Reimplemented from cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 199 of file cell2d_list.hpp.

                                            {
  double sx = (this->xmax()-this->xmin());
  double sy = (this->ymax()-this->ymin());
  if(sx<sy) {
    v=1;
    s=(this->ymax()+this->ymin())/2;
  } else {
    v=0;
    s=(this->xmax()+this->xmin())/2;
  }
}
cell2d_list< C, V >::Point * starting_point ( int  sgn) [virtual]

Implements cell2d< C, V >.

Reimplemented in cell2d_intersection< C, V >.

Definition at line 406 of file cell2d_list.hpp.

References Cell2d, and cell< C, V >::is_active().

{
   Cell2d* c;
   foreach (Cell* m, m_objects)
    { 
        if ( m->is_active() )
        {
            c = dynamic_cast<Cell2d*>(m);           
            return c->starting_point(sgn);
        }
    }
    return NULL; 
}
void subdivide ( cell< C, V > *&  left,
cell< C, V > *&  right,
int  v,
double  s 
) [virtual]

Reimplemented in cell2d_intersection< C, V >.

Definition at line 212 of file cell2d_list.hpp.

References Cell2dList, cell< C, V >::is_active(), mmx::shape_ssi::left(), mmx::shape_ssi::right(), cell< C, V >::subdivide(), point< C, V, N >::x(), and point< C, V, N >::y().

                                                                   {

  typedef Cell2dList Cell_t;

  if(v==1) {
    left =(Cell*)new Cell_t(this->xmin(), this->xmax(), this->ymin(), c, m_intersected) ;
    right=(Cell*)new Cell_t(this->xmin(), this->xmax(), c, this->ymax(), m_intersected) ;
    
    foreach(Point * p, this->m_singular) {
      if(p->y() <=  c) 
        ((Cell_t*) left)->m_singular << p ;
      else
        ((Cell_t*)right)->m_singular << p ;
    }

    /*  Update neighbors  */
    this->connect1( (Cell_t*)left, (Cell_t*)right);
    ((Cell_t*)left)->join1((Cell_t*)right);

  } else {//v==0
    left = (Cell*)new Cell_t(this->xmin(), c, this->ymin(), this->ymax(), m_intersected) ;
    right= (Cell*)new Cell_t(c, this->xmax(), this->ymin(), this->ymax(), m_intersected) ;

    foreach(Point * p, this->m_singular) {
      if(p->x() <= c ) 
        ((Cell_t*)left)->m_singular << p ;
      else
        ((Cell_t*)right)->m_singular << p ;
    }

    /*  Update neighbors  */
    this->connect0((Cell_t*)left, (Cell_t*)right);
    ((Cell_t*)left)->join0((Cell_t*)right);

  }

  /* disconnect parent */
  this->disconnect( );

  Cell * cv_left, * cv_right;
  foreach(Cell* cv, this->m_objects) {
      cv->subdivide( cv_left, cv_right);
    if(cv_left->is_active())
        ((Cell_t*)left)->m_objects<<cv_left;
    if(cv_right->is_active())
        ((Cell_t*)right)->m_objects<<cv_right;
  }
}
virtual int subdivide ( cell< C, REF_OF(V) > *&  left,
cell< C, REF_OF(V) > *&  right 
) [virtual, inherited]
virtual void subdivide ( cell< C, REF_OF(V) > *&  left,
cell< C, REF_OF(V) > *&  right,
int  v,
double  s 
) [pure virtual, inherited]
bounding_box<C,REF_OF(V) >* unite ( bounding_box< C, REF_OF(V) > *  other) [inherited]
void united ( bounding_box< C, REF_OF(V) > *  other) [inherited]
bool unites ( bounding_box< C, REF_OF(V) > *  other,
bool  strict = true 
) [inherited]
double xmax ( void  ) const [inline, inherited]

Definition at line 63 of file bounding_box.hpp.

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

Definition at line 56 of file bounding_box.hpp.

Referenced by cell2d_voronoi_diagram< C, V >::compute_boundary().

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

Definition at line 62 of file bounding_box.hpp.

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

Definition at line 55 of file bounding_box.hpp.

Referenced by cell2d_voronoi_diagram< C, V >::compute_boundary().

{ 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  ) [inline, inherited]

Definition at line 58 of file bounding_box.hpp.

Referenced by cell2d_voronoi_diagram< C, V >::compute_boundary().

{ return m_ymax ; }
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 ymin ( void  ) [inline, inherited]

Definition at line 57 of file bounding_box.hpp.

Referenced by cell2d_voronoi_diagram< C, V >::compute_boundary().

{ 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  ) [inline, inherited]

Definition at line 60 of file bounding_box.hpp.

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

Definition at line 67 of file bounding_box.hpp.

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

Definition at line 59 of file bounding_box.hpp.

{ return m_zmin ; }
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

gNode<cell2d*>* m_gnode [inherited]

Definition at line 138 of file cell2d.hpp.

Referenced by voronoi2d< C, V >::run(), and topology2d< C, V >::run().

bool m_intersected [protected]

Definition at line 91 of file cell2d_list.hpp.

Seq<Point *> m_singular [inherited]

Definition at line 133 of file cell2d.hpp.

double m_xmax [protected, inherited]

Definition at line 107 of file bounding_box.hpp.

double m_xmin [protected, inherited]

Definition at line 107 of file bounding_box.hpp.

double m_ymax [protected, inherited]

Definition at line 108 of file bounding_box.hpp.

double m_ymin [protected, inherited]

Definition at line 108 of file bounding_box.hpp.

double m_zmax [protected, inherited]

Definition at line 109 of file bounding_box.hpp.

double m_zmin [protected, inherited]

Definition at line 109 of file bounding_box.hpp.


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