bcell2d_intersection< C, V > Class Template Reference

#include <bcell2d_intersection.hpp>

Inheritance diagram for bcell2d_intersection< C, V >:
bcell2d_list< C, V > bcell2d< C, V > bcell< C, REF_OF(V) > cell< C, V > bounding_box< 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::bcell2d_intersection< C, V >

Definition at line 35 of file bcell2d_intersection.hpp.


Member Typedef Documentation

typedef bcell<C,V>::BoundingBox BoundingBox

Reimplemented from bcell2d_list< C, V >.

Definition at line 38 of file bcell2d_intersection.hpp.

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

Reimplemented from bcell2d_list< C, V >.

Definition at line 39 of file bcell2d_intersection.hpp.

typedef topology<C,V> Topology

Reimplemented from bcell2d_list< C, V >.

Definition at line 40 of file bcell2d_intersection.hpp.


Constructor & Destructor Documentation

bcell2d_intersection ( void   )  [inline]

Definition at line 79 of file bcell2d_intersection.hpp.

00079 {}

bcell2d_intersection ( double  xmin,
double  xmax 
)
bcell2d_intersection ( double  xmin,
double  xmax,
double  ymin,
double  ymax 
) [inline]

Definition at line 82 of file bcell2d_intersection.hpp.

00082 :  bcell2d_list<C,V>(xmin, xmax, ymin, ymax) {}

bcell2d_intersection ( double  xmin,
double  xmax,
double  ymin,
double  ymax,
bool  itr 
) [inline]

Definition at line 85 of file bcell2d_intersection.hpp.

00085 : bcell2d_list<C,V>(xmin, xmax, ymin, ymax) {}

bcell2d_intersection ( const BoundingBox bx  )  [inline]

Definition at line 88 of file bcell2d_intersection.hpp.

00088 : bcell2d_list<C,V>(bx) {};

~bcell2d_intersection ( void   )  [inline, virtual]

Definition at line 91 of file bcell2d_intersection.hpp.

References bcell2d_list< C, V >::m_objects.

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


Member Function Documentation

BoundingBox boundingBox (  )  const [inline, inherited]

Definition at line 71 of file cell.hpp.

00071 { return (BoundingBox)*this; }

void connect0 ( bcell2d< C, V > *  a,
bcell2d< C, V > *  b 
) [inline, inherited]

Definition at line 273 of file bcell2d.hpp.

References mmx::shape::check_overlap(), bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, Seq< C, R >::search(), SELF, and bcell2d< C, V >::w_neighbors.

Referenced by bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), and bcell2d_intersection< C, V >::subdivide().

00274 {
00275     int i;
00276     bool flag;
00277 
00278     //copy horizontally
00279     b->e_neighbors= this->e_neighbors ;
00280     foreach(SELF* cl,b->e_neighbors) {
00281         i= cl->w_neighbors.search(this);
00282         cl->w_neighbors[i]= b;
00283     }
00284     a->w_neighbors= this->w_neighbors ;
00285     foreach(SELF* cl,a->w_neighbors) {
00286         i= cl->e_neighbors.search(this);
00287         cl->e_neighbors[i]= a;
00288     }
00289 
00290     //update vertically
00291     foreach(SELF* cl,this->s_neighbors) {
00292         flag=false;
00293         if ( check_overlap(cl,a,0))
00294         {
00295           //assert( cl->ymax()== a->ymin() );
00296             a->s_neighbors<< cl;
00297             i= cl->n_neighbors.search(this);
00298             cl->n_neighbors[i]= a;
00299             flag=true;
00300         }
00301         if ( check_overlap(cl,b,0) )
00302         {
00303           //assert( cl->ymax()== b->ymin() );
00304             b->s_neighbors<< cl;
00305             if (!flag)
00306             {
00307                 i= cl->n_neighbors.search(this);
00308                 cl->n_neighbors[i]= b;
00309             }
00310             else
00311                 cl->n_neighbors << b;
00312         }
00313     }
00314     foreach(SELF* cl,this->n_neighbors) {
00315         flag=false;
00316         if ( check_overlap(cl,a,0)) 
00317         {
00318             a->n_neighbors<< cl;
00319             i= cl->s_neighbors.search(this);
00320             cl->s_neighbors[i]= a;
00321             flag=true;
00322         }
00323         if ( check_overlap(cl,b,0) )
00324         {
00325             b->n_neighbors<< cl;
00326             if (!flag)
00327             {
00328                                         i= cl->s_neighbors.search(this);
00329                                         cl->s_neighbors[i]= b;
00330             }
00331             else
00332                                         cl->s_neighbors << b;
00333         }
00334   }
00335 }

void connect1 ( bcell2d< C, V > *  a,
bcell2d< C, V > *  b 
) [inline, inherited]

Definition at line 338 of file bcell2d.hpp.

References mmx::shape::check_overlap(), bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, Seq< C, R >::search(), SELF, and bcell2d< C, V >::w_neighbors.

Referenced by bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), and bcell2d_intersection< C, V >::subdivide().

00339 {
00340     int i;
00341     bool flag;
00342 
00343     //copy vertically
00344    a->s_neighbors= this->s_neighbors ;
00345      foreach(SELF* cl,a->s_neighbors) {
00346         i= cl->n_neighbors.search(this);
00347         cl->n_neighbors[i]= a;
00348     }
00349     b->n_neighbors= this->n_neighbors ;
00350     foreach(SELF* cl,b->n_neighbors) {
00351         i= cl->s_neighbors.search(this);
00352         cl->s_neighbors[i]= b;
00353     }
00354 
00355     //update horizontally
00356     foreach(SELF* cl,this->w_neighbors) {
00357             flag=false;
00358             if ( check_overlap(cl,a,1)) 
00359             {
00360                 //assert( cl->xmax()== a->xmin() );
00361                 a->w_neighbors<< cl;
00362                 i= cl->e_neighbors.search(this);
00363                 cl->e_neighbors[i]= a;
00364                 flag=true;
00365             }
00366             if ( check_overlap(cl,b,1) )
00367             {
00368                 //assert( cl->xmax()== b->xmin() );
00369                 b->w_neighbors<< cl;
00370                 if (!flag)
00371                 {
00372                     i= cl->e_neighbors.search(this);
00373                     cl->e_neighbors[i]= b;
00374                 }
00375                 else
00376                     cl->e_neighbors << b;
00377             }
00378     }
00379     foreach(SELF* cl,this->e_neighbors) {
00380         flag=false;
00381         if ( check_overlap(cl,a,1)) 
00382         {
00383             a->e_neighbors<< cl;
00384             i= cl->w_neighbors.search(this);
00385             cl->w_neighbors[i]= a;
00386             flag=true;
00387         }
00388         if ( check_overlap(cl,b,1) )
00389         {
00390             b->e_neighbors<< cl;
00391             if (!flag)
00392             {
00393                 i= cl->w_neighbors.search(this);
00394                 cl->w_neighbors[i]= b;
00395             }
00396             else
00397                 cl->w_neighbors << b;
00398         }
00399     }
00400 }

bool contains ( double  x,
double  y,
double  z,
bool  strict = false 
) [inline, inherited]

Definition at line 226 of file bounding_box.hpp.

References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, bounding_box< C, V >::m_ymin, bounding_box< C, V >::m_zmax, and bounding_box< C, V >::m_zmin.

00227 {
00228     if(!strict)
00229         return (((m_xmin <= x) && (x <= m_xmax))
00230                 &&   ((m_ymin <= y) && (y <= m_ymax))
00231                 &&   ((m_zmin <= z) && (z <= m_zmax)))  ;
00232     else
00233         return (((m_xmin <  x) && (x <  m_xmax))
00234                 &&   ((m_ymin <  y) && (y <  m_ymax))
00235                 &&   ((m_zmin <  z) && (z <  m_zmax)))  ;
00236 }

bool contains ( double  x,
double  y,
bool  strict = false 
) [inline, inherited]

Definition at line 215 of file bounding_box.hpp.

References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, and bounding_box< C, V >::m_ymin.

00216 {
00217     if(!strict)
00218         return (((m_xmin <= x) && (x <= m_xmax))
00219                 &&   ((m_ymin <= y) && (y <= m_ymax))) ;
00220     else
00221         return (((m_xmin <  x) && (x <  m_xmax))
00222                 &&   ((m_ymin <  y) && (y <  m_ymax))) ;
00223 }

bool contains ( double  x,
bool  strict = false 
) [inline, inherited]

Definition at line 206 of file bounding_box.hpp.

References bounding_box< C, V >::m_xmax, and bounding_box< C, V >::m_xmin.

00207 {
00208     if(!strict)
00209         return (((m_xmin <= x) && (x <= m_xmax))) ;
00210     else
00211         return (((m_xmin <  x) && (x <  m_xmax))) ;
00212 }

int count ( void   )  [inline, inherited]

Definition at line 85 of file bcell2d_list.hpp.

References bcell2d_list< C, V >::m_objects, and Seq< C, R >::size().

Referenced by bcell2d_intersection< C, V >::is_touching().

00085 { return m_objects.size() ; }

void disconnect (  )  [inline, inherited]
bool insert_regular ( Topology s  )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 124 of file bcell2d_intersection.hpp.

References bcell< C, V >::insert_regular(), topology< C, V >::insert_singular(), bcell2d_list< C, V >::m_objects, bcell2d< C, V >::m_singular, and Seq< C, R >::size().

00124                                        {
00125 
00126   foreach(Cell*  m, this->m_objects)   m->insert_regular(s);
00127   if (this->m_singular.size() > 0) 
00128     foreach(Point* p, this->m_singular) s->insert_singular(p);
00129 
00130   return true;
00131 }

bool insert_singular ( Topology s  )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 134 of file bcell2d_intersection.hpp.

References bcell< C, V >::insert_singular(), and bcell2d_list< C, V >::m_objects.

00134                                         {
00135   //s->singular(this);
00136 //  std::cout<<"Ins Singular"<<std::endl;
00137 
00138   foreach(Cell * m, this->m_objects) m->insert_singular(s);
00139   return true;
00140 }

bounding_box< C, V > * intersect ( const bounding_box< C, V > &  other  )  [inline, inherited]

Definition at line 319 of file bounding_box.hpp.

References mmx::shape::mmxmax(), mmx::shape::mmxmin(), SELF, bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().

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

00319                                  {
00320     SELF * bcell = new SELF ;
00321     bcell->set_xmin(mmxmax(this->xmin(), other.xmin())) ;
00322     bcell->set_xmax(mmxmin(this->xmax(), other.xmax())) ;
00323     bcell->set_ymin(mmxmax(this->ymin(), other.ymin())) ;
00324     bcell->set_ymax(mmxmin(this->ymax(), other.ymax())) ;
00325     bcell->set_zmin(mmxmax(this->zmin(), other.zmin())) ;
00326     bcell->set_zmax(mmxmin(this->zmax(), other.zmax())) ;
00327     return bcell ;
00328 }

void intersected ( bounding_box< C, V > *  other  )  [inline, inherited]
virtual Seq<Point *> intersections ( int  i  )  const [inline, virtual, inherited]

Reimplemented from bcell2d< C, V >.

Definition at line 71 of file bcell2d_list.hpp.

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

00071                                                  {
00072       Seq<Point*> l;
00073       Cell2dAlgebraicCurve* c;
00074       
00075       foreach(Cell*m, this->m_objects)
00076       {
00077           c = dynamic_cast<Cell2dAlgebraicCurve*>(m);
00078           l<< c->intersections(i);
00079       }
00080       return l;
00081   }

Seq< typename mmx::shape::bcell2d< C, V >::Point * > intersections (  )  const [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 412 of file bcell2d_intersection.hpp.

References Cell2d, bcell2d_list< C, V >::m_objects, Seq< C, R >::reversed(), and Seq< C, R >::sort().

00412                                 {
00413     Seq<Point *> s,e,n,w,r;
00414 
00415     Cell2d* cl;
00416     foreach (Cell* m, this->m_objects)
00417     {
00418         cl = dynamic_cast<Cell2d*>(m);           
00419         s<< cl->s_intersections;
00420         e<< cl->e_intersections;
00421         n<< cl->n_intersections;
00422         w<< cl->w_intersections;
00423     }
00424     s.sort(this->coord<0>);
00425     e.sort(this->coord<1>);
00426     n.sort(this->coord<0>);
00427     w.sort(this->coord<1>);
00428 
00429     r<<s;
00430     r<<e;
00431     r<<n.reversed();
00432     r<<w.reversed();
00433 
00434 
00435     return ( r ); 
00436 }

bool intersects ( bounding_box< C, V > *  other,
bool  strict = true 
) [inline, inherited]

Definition at line 239 of file bounding_box.hpp.

References bounding_box< C, V >::is0D(), bounding_box< C, V >::is1D(), bounding_box< C, V >::is2D(), bounding_box< C, V >::is3d(), mmx::shape::mmxmax(), mmx::shape::mmxmin(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().

00240 {
00241     if(this->is0D())
00242         return (this->xmin() == other->xmin()) ;
00243     else if(this->is1D())
00244         if(strict)
00245             return ((mmxmax(this->xmin(), other->xmin()) <  mmxmin(this->xmax(), other->xmax()))) ;
00246         else
00247             return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax()))) ;
00248     else if(this->is2D())
00249         if(strict)
00250             return ((mmxmax(this->xmin(), other->xmin()) <  mmxmin(this->xmax(), other->xmax())) &&
00251                     (mmxmax(this->ymin(), other->ymin()) <  mmxmin(this->ymax(), other->ymax()))) ;
00252         else
00253             return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax())) &&
00254                     (mmxmax(this->ymin(), other->ymin()) <= mmxmin(this->ymax(), other->ymax()))) ;
00255     else if(this->is3d()) {
00256         if(strict)
00257             return ((mmxmax(this->xmin(), other->xmin()) <  mmxmin(this->xmax(), other->xmax())) &&
00258                     (mmxmax(this->ymin(), other->ymin()) <  mmxmin(this->ymax(), other->ymax())) &&
00259                     (mmxmax(this->zmin(), other->zmin()) <  mmxmin(this->zmax(), other->zmax()))) ;
00260         else
00261             return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax())) &&
00262                     (mmxmax(this->ymin(), other->ymin()) <= mmxmin(this->ymax(), other->ymax())) &&
00263                     (mmxmax(this->zmin(), other->zmin()) <= mmxmin(this->zmax(), other->zmax()))) ;
00264     }
00265     return false ;
00266 }

bool is0D ( void   )  const [inline, inherited]

Definition at line 80 of file bounding_box.hpp.

Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().

00080 { 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.

Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().

00081 { 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.

Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().

00082 { 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.

Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().

00083 { return ((m_xmin != m_xmax) && (m_ymin != m_ymax) && (m_zmin != m_zmax)) ; }

bool is_active ( void   )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 210 of file bcell2d_intersection.hpp.

References bcell2d_intersection< C, V >::is_intersected(), bcell2d_intersection< C, V >::is_regular(), and bcell2d_intersection< C, V >::is_touching().

00210                        {
00211 
00212   //return ( bcell2d_list<C,V>::is_active() );
00213 
00214   if ( !bcell2d_list<C,V>::is_active() )
00215     return false;
00216 
00217   if( this->is_intersected() ) return true;
00218   if( ! this->is_regular() ) return true;
00219 
00220   if( this->is_touching() )//is touching the set?
00221     return true;
00222   else
00223     return false;
00224 }

bool is_border ( void   )  const [inline, inherited]

Definition at line 114 of file bcell2d.hpp.

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

00114                                     {
00115       return (  this->s_neighbors.size()==0 ||
00116                 this->e_neighbors.size()==0 ||
00117                 this->n_neighbors.size()==0 ||
00118                 this->w_neighbors.size()==0  );
00119   }

bool is_corner ( void   )  const [inline, inherited]

Definition at line 423 of file bcell2d.hpp.

References bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, Seq< C, R >::size(), and bcell2d< C, V >::w_neighbors.

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

00423                       {
00424 
00425     if (this->s_neighbors.size()==0 &&
00426         this->e_neighbors.size()==0  )
00427         return true;
00428     else if (this->e_neighbors.size()==0 &&
00429              this->n_neighbors.size()==0 )
00430         return true;
00431     else if (this->n_neighbors.size()==0 &&
00432              this->w_neighbors.size()==0  )
00433         return true;
00434     else if (this->w_neighbors.size()==0 &&
00435              this->s_neighbors.size()==0 )
00436         return true;
00437     
00438     return false;
00439 }

bool is_intersected ( void   )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 109 of file bcell2d_intersection.hpp.

References bcell2d_list< C, V >::m_intersected, bcell2d_list< C, V >::m_objects, bcell2d< C, V >::m_singular, and Seq< C, R >::size().

Referenced by bcell2d_intersection< C, V >::is_active(), bcell2d_intersection< C, V >::is_regular(), and bcell2d_intersection< C, V >::pair().

00109                             {
00110   
00111   if(this->m_objects.size() >1 && !this->m_intersected) {
00112     for(unsigned i=0; i<this->m_objects.size();i++)
00113       for(unsigned j=i+1; j<this->m_objects.size(); j++)
00114         Intersection2dFactory::instance()->compute(this->m_singular, (Shape*)this->m_objects[i], (Shape*)this->m_objects[j], (BoundingBox)*this);
00115     this->m_intersected = true;
00116   }
00117   
00118   if (this->m_singular.size() > 0) return true;
00119   return false;
00120 }

bool is_regular ( void   )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 97 of file bcell2d_intersection.hpp.

References bcell2d_intersection< C, V >::is_intersected(), bcell2d_list< C, V >::m_objects, bcell2d< C, V >::m_singular, bcell2d_intersection< C, V >::nb_intersect(), and Seq< C, R >::size().

Referenced by bcell2d_intersection< C, V >::is_active().

00097                        {
00098   foreach (Cell* m, this->m_objects) 
00099     if(!m-> is_regular()) return false;
00100 
00101   if ( is_intersected() )
00102       return ( (this->m_singular.size()<2) &&
00103                (this->nb_intersect()<5) );
00104   else
00105       return (this->nb_intersect()<3) ;
00106 }

bool is_touching ( void   )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 228 of file bcell2d_intersection.hpp.

References Cell2dAlgebraicCurve, bcell2d_list< C, V >::count(), and bcell2d_list< C, V >::m_objects.

Referenced by bcell2d_intersection< C, V >::is_active().

00228                          {
00229 
00230   int c0(0),c1(0),c2(0),c3(0), cnt=this->count();//cnt: number of eqs.
00231 
00232   foreach (Cell* m, this->m_objects) {
00233   
00234     Cell2dAlgebraicCurve* c= dynamic_cast<Cell2dAlgebraicCurve*>(m);
00235     const int * sz = c->m_polynomial.rep().szs();
00236     const int * st = c->m_polynomial.rep().str();
00237 
00238     if (c->m_polynomial[0] >0) c0++;
00239     if (c->m_polynomial[(sz[0]-1)*st[0]] >0) c1++;
00240     if (c->m_polynomial[sz[0]*sz[1]-1]>0) c2++;
00241     if (c->m_polynomial[(sz[1]-1)*st[1]] >0) c3++;
00242   }
00243   return ( (c0==cnt) || (c1==cnt) || (c2==cnt) || (c3==cnt) );
00244 }

void join0 ( bcell2d< C, V > *  b  )  [inline, inherited]

Definition at line 259 of file bcell2d.hpp.

References bcell2d< C, V >::e_neighbors.

00260 {
00261     this->e_neighbors << b; 
00262     b->w_neighbors << this; 
00263 }

void join1 ( bcell2d< C, V > *  b  )  [inline, inherited]

Definition at line 266 of file bcell2d.hpp.

References bcell2d< C, V >::n_neighbors.

00267 {
00268     b->s_neighbors << this;
00269     this->n_neighbors << b;
00270 }

unsigned nb_intersect ( void   )  const [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 248 of file bcell2d_intersection.hpp.

References Cell2d, bcell2d_list< C, V >::m_objects, and sum().

Referenced by bcell2d_intersection< C, V >::is_regular().

00248                                     {
00249     unsigned sum(0);
00250     Cell2d* c;
00251     foreach (Cell* m, this->m_objects)
00252     { 
00253         c = dynamic_cast<Cell2d*>(m);
00254         sum+= c->nb_intersect();
00255     }
00256     return sum;
00257   }

bcell2d< C, V > * neighbor ( Point p  )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 383 of file bcell2d_intersection.hpp.

References Cell2d, bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, and bcell2d< C, V >::w_neighbors.

00384 {
00385 
00386       foreach( Cell2d *c, this->s_neighbors     )
00387         if ( c->intersections(2).member(p) )
00388           { 
00389               return c;
00390           }
00391       foreach( Cell2d *c, this->e_neighbors     )
00392         if ( c->intersections(3).member(p) )
00393           { 
00394               return c;
00395           }
00396       foreach( Cell2d *c, this->n_neighbors     )
00397         if ( c->intersections(0).member(p) )
00398           { 
00399               return c;
00400           }
00401       foreach( Cell2d *c, this->w_neighbors     )
00402         if ( c->intersections(1).member(p) )
00403           { 
00404               return c;
00405           }
00406 
00407     //std::cout<<"Point ("<<p->x()<<","<<p->y()<<") not found on neighbors of "<< this<<"("<<this->neighbors().size() <<")"<<std::endl; 
00408     return NULL;
00409 }

virtual Seq<bcell2d *> neighbors (  )  [inline, virtual, inherited]

Definition at line 154 of file bcell2d.hpp.

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

00154                                         {
00155       Seq<bcell2d *> r;
00156       r<< this->s_neighbors; 
00157       r<< this->e_neighbors; 
00158       r<< this->n_neighbors; 
00159       r<< this->w_neighbors;
00160   return ( r ); }

double & operator() ( unsigned  v,
unsigned  s 
) [inline, inherited]

Definition at line 356 of file bounding_box.hpp.

References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, bounding_box< C, V >::m_ymin, bounding_box< C, V >::m_zmax, and bounding_box< C, V >::m_zmin.

00356                                        {
00357     switch(v) {
00358     case 0:
00359         if(s==0) return m_xmin; else return m_xmax;
00360     case 1:
00361         if(s==0) return m_ymin; else return m_ymax;
00362     default:
00363         if(s==0) return m_zmin; else return m_zmax;
00364     }
00365 
00366 }

double operator() ( unsigned  v,
unsigned  s 
) const [inline, inherited]

Definition at line 343 of file bounding_box.hpp.

References bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().

00343                                              {
00344     switch(v) {
00345     case 0:
00346         if(s==0) return xmin(); else return xmax();
00347     case 1:
00348         if(s==0) return ymin(); else return ymax();
00349     default:
00350         if(s==0) return zmin(); else return zmax();
00351     }
00352 
00353 }

bounding_box<C,V>* operator* ( const bounding_box< C, V > &  other  )  [inline, inherited]

Definition at line 103 of file bounding_box.hpp.

00103 { 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.

00104 { return     unite(other) ; }

bcell2d_intersection< C, V >::Point * pair ( Point p,
int &  sgn 
) [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 262 of file bcell2d_intersection.hpp.

References Cell2d, Cell2dAlgebraicCurve, bcell2d_intersection< C, V >::is_intersected(), bcell2d_list< C, V >::m_objects, Seq< C, R >::reversed(), Seq< C, R >::search(), Seq< C, R >::size(), and Seq< C, R >::sort().

00263 {
00264     if ( this->is_intersected() ) {
00265         //
00266 //         std::cout<<"Reached intersection bcell "<<this<<std::endl;
00267 //         std::cout<<"p= "<< p->x()<<","<<p->y()<<std::endl;
00268 //         foreach (Point*q, this->intersections() ) 
00269 //             std::cout<<"q= "<< q->x()<<","<<q->y()<<std::endl;
00270 
00271         Seq<Point*> l0,l1,l2,l3;
00272         Cell2dAlgebraicCurve* c, *v(NULL);
00273         double ev(0); int i, u(0);
00274 
00275         foreach (Cell* m, this->m_objects)
00276         {
00277             c = dynamic_cast<Cell2dAlgebraicCurve*>(m);
00278             int * sz = c->m_polynomial.rep().szs();
00279             int * st = c->m_polynomial.rep().str();
00280       
00281             l0<< c->s_intersections;
00282             if (c->s_intersections.member(p))
00283             {u=0; ev= (c->m_polynomial[0] >0 ? 1:-1); v=c;}
00284             l1<< c->e_intersections;
00285             if (c->e_intersections.member(p))
00286             {u=1; ev= (c->m_polynomial[(sz[0]-1)*st[0]] >0 ? 1:-1); v=c;}
00287             l2<< c->n_intersections;
00288             if (c->n_intersections.member(p))
00289             {u=2;ev=(c->m_polynomial[sz[0]*sz[1]-1]>0 ? 1:-1); v=c;}
00290             l3<< c->w_intersections;
00291             if (c->w_intersections.member(p))
00292              {u=3;ev=(c->m_polynomial[(sz[1]-1)*st[1]] >0 ? 1:-1); v=c;}
00293         }
00294 //        std::cout<<"IN: u="<<u<<", ev="<<ev<<std::endl;
00295         l0.sort(this->coord<0>);
00296         l1.sort(this->coord<1>);
00297         l2.sort(this->coord<0>);
00298         l3.sort(this->coord<1>);
00299         l0<<l1; l0<<l2.reversed(); l0<<l3.reversed();
00300         
00301         foreach (Point*q, v->intersections(u) ) 
00302          {
00303              if (q==p) break;
00304              ev*=-1;
00305          }
00306         
00307 
00308         i=l0.search(p);
00309         int a=l0.size();
00310 
00311         Point *q;
00312         if (ev*sgn>0)
00313             q=l0[(i!=0 ?i-1:a-1)];
00314         else
00315             q= l0[(i!=a-1 ?i+1:0)];
00316 
00317 //      std::cout<<"res="<<q->x()<<","<<q->y()<<std::endl;
00318 
00319         int ev2(444);
00320         foreach (Cell* m, this->m_objects)
00321         {
00322             c = dynamic_cast<Cell2dAlgebraicCurve*>(m);
00323             int * sz = c->m_polynomial.rep().szs();
00324             int * st = c->m_polynomial.rep().str();
00325 
00326             if (c->s_intersections.member(q))
00327             {u=0; ev2= (c->m_polynomial[0] >0 ? 1:-1); v=c;}
00328             if (c->e_intersections.member(q))
00329             {u=1; ev2= (c->m_polynomial[(sz[0]-1)*st[0]] >0 ? 1:-1); v=c;}
00330             if (c->n_intersections.member(q))
00331             {u=2;ev2=(c->m_polynomial[sz[0]*sz[1]-1]>0 ? 1:-1); v=c;}
00332             if (c->w_intersections.member(q))
00333              {u=3;ev2=(c->m_polynomial[(sz[1]-1)*st[1]] >0 ? 1:-1); v=c;}
00334         }
00335         foreach (Point*w, v->intersections(u) ) 
00336          {
00337              if (q==w) break;
00338              ev2*=-1;
00339          }
00340 
00341 //        std::cout<<"Entered from branch "<<sgn<<std::endl;
00342 
00343         if (ev*sgn>0)
00344             sgn=-ev2;
00345         else
00346             sgn=ev2;
00347 
00348 //        std::cout<<"exiting to "<<sgn<<std::endl;
00349 //        std::cout<<"OUT: u="<<u<<", ev2="<<ev2<<std::endl;
00350 
00351         return q;
00352 
00353     } else {
00354 
00355         Cell2d* c;
00356         foreach (Cell* m, this->m_objects)
00357         { 
00358             c = dynamic_cast<Cell2d*>(m);
00359             if ( c->intersections().member(p) )
00360                 return c->pair(p,sgn);
00361         }
00362     }
00363     std::cout<<"... Cell list pair trouble"<<std::endl;
00364     return NULL;
00365 } 

void push_back ( bcell< C, V > *  cv  )  [inline, inherited]

Definition at line 84 of file bcell2d_list.hpp.

References bcell2d_list< C, V >::m_objects, and Seq< C, R >::push_back().

00084 { m_objects.push_back(cv); }; 

void set_xmax ( double  x  )  [inline, inherited]

Definition at line 74 of file bounding_box.hpp.

Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().

00074 { this->m_xmax = x ; }

void set_xmin ( double  x  )  [inline, inherited]

Definition at line 73 of file bounding_box.hpp.

Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().

00073 { this->m_xmin = x ; }

void set_ymax ( double  y  )  [inline, inherited]

Definition at line 76 of file bounding_box.hpp.

Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().

00076 { this->m_ymax = y ; }

void set_ymin ( double  y  )  [inline, inherited]

Definition at line 75 of file bounding_box.hpp.

Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().

00075 { this->m_ymin = y ; }

void set_zmax ( double  z  )  [inline, inherited]
void set_zmin ( double  z  )  [inline, inherited]
int side ( Point p  )  [inline, inherited]

Definition at line 132 of file bcell2d.hpp.

00132                        {
00133       Seq<Point*> all;
00134       int s,i,a;
00135       s   = s_intersections.size();
00136       all = this->intersections();
00137       a   = all.size();
00138       i   = all.search(p);
00139       if (i==-1) return (-1);
00140       else return
00141          ( i<s                             ? 0 :
00142          ( i<s+(int)e_intersections.size() ? 1 :
00143          ( i<a-(int)w_intersections.size() ? 2 :
00144                                       3 )));
00145   }

double size ( void   )  [inline, inherited]

Definition at line 199 of file bounding_box.hpp.

References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, bounding_box< C, V >::m_ymin, bounding_box< C, V >::m_zmax, bounding_box< C, V >::m_zmin, and mmx::max().

Referenced by voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), mesher3d_shape< C, V >::run(), mesher3d_algebraic_curve< C, V >::run(), and mesher2d< C, V >::run().

00200 {
00201     //std::cout<<"Size "<<m_xmax<< " "<< m_xmin<<" "<< m_ymax<<" "<< m_ymin<<" "<< m_zmax<< " "<<m_zmin<<std::endl;
00202     return std::max(m_xmax-m_xmin, std::max(m_ymax-m_ymin, m_zmax-m_zmin)) ;
00203 }

void split_position ( int &  v,
double &  t 
) [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 142 of file bcell2d_intersection.hpp.

References bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), and bounding_box< C, V >::ymin().

00142                                              {
00143   double sx = (this->xmax()-this->xmin());
00144   double sy = (this->ymax()-this->ymin());
00145   if(sx<sy) {
00146     v=1;
00147     s=(this->ymax()+this->ymin())/2;
00148   } else {
00149     v=0;
00150     s=(this->xmax()+this->xmin())/2;
00151   }
00152 }

bcell2d_intersection< C, V >::Point * starting_point ( int  sgn  )  [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 368 of file bcell2d_intersection.hpp.

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

00369 {
00370    Cell2d* c;
00371    foreach (Cell* m, this->m_objects)
00372     { 
00373         if ( m->is_active() )
00374         {
00375             c = dynamic_cast<Cell2d*>(m);           
00376             return c->starting_point(sgn);
00377         }
00378     }
00379     return NULL; 
00380 }

virtual void subdivide ( bcell< C , REF_OF(V) > *&  left,
bcell< C , REF_OF(V) > *&  right,
int  v,
double  s 
) [pure virtual, inherited]
virtual int subdivide ( bcell< C , REF_OF(V) > *&  left,
bcell< C , REF_OF(V) > *&  right 
) [virtual, inherited]
void subdivide ( bcell< C, V > *&  left,
bcell< C, V > *&  right,
int  v,
double  s 
) [inline, virtual]

Reimplemented from bcell2d_list< C, V >.

Definition at line 155 of file bcell2d_intersection.hpp.

References Cell2dInter, bcell2d< C, V >::connect0(), bcell2d< C, V >::connect1(), bcell2d< C, V >::disconnect(), bcell2d_list< C, V >::m_intersected, bcell2d_list< C, V >::m_objects, bcell2d< C, V >::m_singular, bcell< C, V >::subdivide(), point< C, N, V >::x(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), point< C, N, V >::y(), bounding_box< C, V >::ymax(), and bounding_box< C, V >::ymin().

00155                                                                     {
00156 
00157   typedef Cell2dInter Cell_t;
00158 
00159   if(v==1) {
00160     left =(Cell*)new Cell_t(this->xmin(), this->xmax(), this->ymin(), c, this->m_intersected) ;
00161     right=(Cell*)new Cell_t(this->xmin(), this->xmax(), c, this->ymax(), this->m_intersected) ;
00162     
00163     foreach(Point * p, this->m_singular) {
00164       if(p->y() <=  c) 
00165         ((Cell_t*) left)->m_singular << p ;
00166       else
00167         ((Cell_t*)right)->m_singular << p ;
00168     }
00169 
00170     /*  Update neighbors  */
00171     this->connect1( (Cell_t*)left, (Cell_t*)right);
00172     ((Cell_t*)left)->join1((Cell_t*)right);
00173 
00174   } else {
00175     left = (Cell*)new Cell_t(this->xmin(), c, this->ymin(), this->ymax(), this->m_intersected) ;
00176     right= (Cell*)new Cell_t(c, this->xmax(), this->ymin(), this->ymax(), this->m_intersected) ;
00177 
00178     foreach(Point * p, this->m_singular) {
00179       if(p->x() <= c ) 
00180         ((Cell_t*)left)->m_singular << p ;
00181       else
00182         ((Cell_t*)right)->m_singular << p ;
00183     }
00184 
00185     /*  Update neighbors  */
00186     this->connect0((Cell_t*)left, (Cell_t*)right);
00187     ((Cell_t*)left)->join0((Cell_t*)right);
00188 
00189   }
00190 
00191   /* disconnect parent */
00192   this->disconnect( );
00193 
00194   //Note: for a semi-alg. set, we keep all the 
00195   //equations in the bcell, even if inactive.
00196 
00197   Cell * cv_left, * cv_right;
00198   foreach(Cell* cv, this->m_objects) {
00199       cv->subdivide( cv_left, cv_right);
00200 //    if(cv_left->is_active())
00201         ((Cell_t*)left)->m_objects<<cv_left;
00202 //    if(cv_right->is_active())
00203         ((Cell_t*)right)->m_objects<<cv_right;
00204   }
00205 }

bounding_box< C, V > * unite ( bounding_box< C, V > *  other  )  [inline, inherited]

Definition at line 331 of file bounding_box.hpp.

References mmx::shape::mmxmax(), mmx::shape::mmxmin(), SELF, bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().

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

00331                         {
00332     SELF * bcell = new SELF ;
00333     bcell->set_xmin(mmxmin(this->xmin(), other->xmin())) ;
00334     bcell->set_xmax(mmxmax(this->xmax(), other->xmax())) ;
00335     bcell->set_ymin(mmxmin(this->ymin(), other->ymin())) ;
00336     bcell->set_ymax(mmxmax(this->ymax(), other->ymax())) ;
00337     bcell->set_zmin(mmxmin(this->zmin(), other->zmin())) ;
00338     bcell->set_zmax(mmxmax(this->zmax(), other->zmax())) ;
00339     return bcell ;
00340 }

void united ( bounding_box< C, V > *  other  )  [inline, inherited]
bool unites ( bounding_box< C, V > *  other,
bool  strict = true 
) [inline, inherited]

Definition at line 269 of file bounding_box.hpp.

References bounding_box< C, V >::is0D(), bounding_box< C, V >::is1D(), bounding_box< C, V >::is2D(), bounding_box< C, V >::is3d(), mmx::shape::mmxmax(), mmx::shape::mmxmin(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().

00270 {
00271     if(this->is0D())
00272         return (this->xmin() == other->xmin()) ;
00273     else if(this->is1D()) {
00274         if(strict)
00275             return ((mmxmin(this->xmin(), other->xmin()) <  mmxmax(this->xmax(), other->xmax()))) ;
00276         else
00277             return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax()))) ;
00278     } else if(this->is2D()) {
00279         if(strict)
00280             return ((mmxmin(this->xmin(), other->xmin()) <  mmxmax(this->xmax(), other->xmax())) &&
00281                     (mmxmin(this->ymin(), other->ymin()) <  mmxmax(this->ymax(), other->ymax()))) ;
00282         else
00283             return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax())) &&
00284                     (mmxmin(this->ymin(), other->ymin()) <= mmxmax(this->ymax(), other->ymax()))) ;
00285     } else if(this->is3d()) {
00286         if(strict)
00287             return ((mmxmin(this->xmin(), other->xmin()) <  mmxmax(this->xmax(), other->xmax())) &&
00288                     (mmxmin(this->ymin(), other->ymin()) <  mmxmax(this->ymax(), other->ymax())) &&
00289                     (mmxmin(this->zmin(), other->zmin()) <  mmxmax(this->zmax(), other->zmax()))) ;
00290         else
00291             return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax())) &&
00292                     (mmxmin(this->ymin(), other->ymin()) <= mmxmax(this->ymax(), other->ymax())) &&
00293                     (mmxmin(this->zmin(), other->zmin()) <= mmxmax(this->zmax(), other->zmax()))) ;
00294     }
00295     return false ;
00296 }

double xmax ( void   )  const [inline, inherited]

Definition at line 63 of file bounding_box.hpp.

00063 { return m_xmax ; }

double xmax ( void   )  [inline, inherited]

Definition at line 56 of file bounding_box.hpp.

Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().

00056 { return m_xmax ; }

double xmin ( void   )  const [inline, inherited]

Definition at line 62 of file bounding_box.hpp.

00062 { return m_xmin ; }

double xmin ( void   )  [inline, inherited]

Definition at line 55 of file bounding_box.hpp.

Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), mmx::shape::operator<<(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().

00055 { return m_xmin ; }

double xsize ( void   )  const [inline, inherited]

Definition at line 69 of file bounding_box.hpp.

00069 { return m_xmax-m_xmin ; }

double ymax ( void   )  const [inline, inherited]

Definition at line 65 of file bounding_box.hpp.

00065 { return m_ymax ; }

double ymax ( void   )  [inline, inherited]

Definition at line 58 of file bounding_box.hpp.

Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().

00058 { return m_ymax ; }

double ymin ( void   )  const [inline, inherited]

Definition at line 64 of file bounding_box.hpp.

00064 { return m_ymin ; }

double ymin ( void   )  [inline, inherited]

Definition at line 57 of file bounding_box.hpp.

Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().

00057 { return m_ymin ; }

double ysize ( void   )  const [inline, inherited]

Definition at line 70 of file bounding_box.hpp.

00070 { return m_ymax-m_ymin ; }

double zmax ( void   )  const [inline, inherited]

Definition at line 67 of file bounding_box.hpp.

00067 { return m_zmax ; }

double zmax ( void   )  [inline, inherited]
double zmin ( void   )  const [inline, inherited]

Definition at line 66 of file bounding_box.hpp.

00066 { return m_zmin ; }

double zmin ( void   )  [inline, inherited]
double zsize ( void   )  const [inline, inherited]

Definition at line 71 of file bounding_box.hpp.

00071 { return m_zmax-m_zmin ; }


Member Data Documentation

Seq<Point *> e_intersections [inherited]
Seq<bcell2d *> e_neighbors [inherited]
gNode<bcell2d*>* m_gnode [inherited]
bool m_intersected [protected, inherited]
Seq< bcell<C,V> *> m_objects [protected, inherited]
Seq<Point *> m_singular [inherited]
double m_xmax [protected, inherited]
double m_xmin [protected, inherited]
double m_ymax [protected, inherited]
double m_ymin [protected, inherited]
double m_zmax [protected, inherited]
double m_zmin [protected, inherited]
Seq<Point *> n_intersections [inherited]
Seq<bcell2d *> n_neighbors [inherited]
Seq<Point *> s_intersections [inherited]
Seq<bcell2d *> s_neighbors [inherited]
Seq<Point *> w_intersections [inherited]
Seq<bcell2d *> w_neighbors [inherited]

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

Generated on 6 Dec 2012 for shape by  doxygen 1.6.1