bcell2d_voronoi_impl2d< C, V > Struct Template Reference

#include <bcell2d_voronoi_impl2d.hpp>

Inheritance diagram for bcell2d_voronoi_impl2d< C, V >:
bcell3d_algebraic_surface< C, V > bcell3d< C, V > cell3d< 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>
struct mmx::shape::bcell2d_voronoi_impl2d< C, V >

Definition at line 79 of file bcell2d_voronoi_impl2d.hpp.


Member Typedef Documentation

typedef algebraic_surface<C,Ref> AlgebraicSurface [inherited]

Definition at line 75 of file bcell3d_algebraic_surface.hpp.

typedef bcell3d<C,V> bcell3d< C, V > [inherited]

Definition at line 71 of file bcell3d_algebraic_surface.hpp.

typedef bounding_box<C, REF_OF(V) > BoundingBox

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 88 of file bcell2d_voronoi_impl2d.hpp.

typedef bcell<C, REF_OF(V) > Cell

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 85 of file bcell2d_voronoi_impl2d.hpp.

typedef cell3d<C,V> CellBase [inherited]

Reimplemented from bcell3d< C, V >.

Definition at line 70 of file bcell3d_algebraic_surface.hpp.

typedef mesher2d<C,V>::Edge Edge

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 84 of file bcell2d_voronoi_impl2d.hpp.

typedef Topology::Face Face [inherited]

Definition at line 67 of file bcell3d_algebraic_surface.hpp.

typedef mesher2d<C,V> Mesher2d

Definition at line 92 of file bcell2d_voronoi_impl2d.hpp.

typedef mesher2d<C,V>::Point Point

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 82 of file bcell2d_voronoi_impl2d.hpp.

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 87 of file bcell2d_voronoi_impl2d.hpp.

typedef solver_implicit<C,V> Solver [inherited]

Reimplemented from bcell3d< C, V >.

Definition at line 82 of file bcell3d_algebraic_surface.hpp.

typedef topology<C,V> Topology

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 91 of file bcell2d_voronoi_impl2d.hpp.

typedef tpl3d<C,V> Topology3d [inherited]

Reimplemented from bcell3d< C, V >.

Definition at line 62 of file bcell3d_algebraic_surface.hpp.

typedef point<C,2, REF_OF(V) > Vector

Definition at line 83 of file bcell2d_voronoi_impl2d.hpp.


Constructor & Destructor Documentation

bcell2d_voronoi_impl2d ( const Polynomial pol,
const BoundingBox bx 
) [inline]

Definition at line 204 of file bcell2d_voronoi_impl2d.hpp.

00205   : Cell3dAlgebraicSurface(pol,bx)
00206 {
00207   //low=upp=NULL;
00208 }

bcell2d_voronoi_impl2d ( const char *  s,
const BoundingBox b 
) [inline]

Definition at line 212 of file bcell2d_voronoi_impl2d.hpp.

00213   : Cell3dAlgebraicSurface(s,b)
00214 {
00215   //low=upp=NULL;
00216 }

bcell2d_voronoi_impl2d ( voronoi_site2d< C, V > *  cv,
const BoundingBox b 
) [inline]

Definition at line 219 of file bcell2d_voronoi_impl2d.hpp.

References bcell2d_voronoi_impl2d< C, V >::equation(), and bounding_box< C, V >::zmax().

00220   : Cell3dAlgebraicSurface(cv->distfunc(),b)
00221 {
00222   //low=upp=NULL;
00223   std::cout<<"created voronoi bcell, "<< this->equation() <<std::endl;    
00224   std::cout<<"box "<< b<<", zmax "<< b.zmax() <<std::endl;    
00225   
00226 
00227 }

bcell2d_voronoi_impl2d ( const bcell2d_voronoi_impl2d< C, V > &  cl  )  [inline]

Definition at line 97 of file bcell2d_voronoi_impl2d.hpp.

00098   : Cell3dAlgebraicSurface(cl) {}


Member Function Documentation

BoundingBox boundingBox (  )  const [inline, inherited]

Reimplemented from cell3d< C, V >.

Definition at line 81 of file bcell3d.hpp.

Referenced by bcell3d< C, V >::intersections().

00081 { return (BoundingBox)*this; }

Point center ( void   )  [inline, inherited]

Reimplemented in bcell3d< C, V >.

Definition at line 75 of file cell3d.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().

00075                          { return Point((this->xmin()+this->xmax())/2, (this->ymin()+this->ymax())/2,
00076                                         (this->zmin()+this->zmax())/2); }

Point center ( void   )  const [inline, virtual, inherited]

Reimplemented from bcell3d< C, V >.

Definition at line 110 of file bcell3d_algebraic_surface.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().

00110                               { return Point((this->xmin()+this->xmax())/2, (this->ymin()+this->ymax())/2,
00111                                        (this->zmin()+this->zmax())/2); }

C center_value (  )  [inline, inherited]

Definition at line 113 of file bcell3d_algebraic_surface.hpp.

References bcell3d_algebraic_surface< C, V >::m_polynomial.

00113 { return m_polynomial(0.5,0.5,0.5); }

void compute_boundary (  )  [inline]

Definition at line 164 of file bcell2d_voronoi_impl2d.hpp.

00165   {
00166     
00167     //   BoundingBox * b( (BoundingBox*)this );
00168     //Seq<mmx::GMP::rational> bx;
00169     //bx<<as<mmx::GMP::rational>( ((BoundingBox*)this)->xmin());
00170     //bx<<as<mmx::GMP::rational>(this->xmax());
00171     //bx<<as<mmx::GMP::rational>(this->ymin());
00172     //bx<<as<mmx::GMP::rational>(this->ymax());
00173     
00174     //Solver::edge_point(this->n_intersections, this->m_polynomial, Solver::north_edge, b);
00175     //Solver::edge_point(this->s_intersections, this->m_polynomial, Solver::south_edge, b);
00176     //Solver::edge_point(this->w_intersections, this->m_polynomial, Solver::west_edge , b);
00177     //Solver::edge_point(this->e_intersections, this->m_polynomial, Solver::east_edge , b);
00178     // Solver::extremal(this->m_singular, this->m_polynomial, b); 
00179 
00180   }

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

Definition at line 179 of file bcell3d.hpp.

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

Referenced by bcell3d_algebraic_surface< C, V >::split().

00180 {
00181     int i;
00182     bool flag;
00183 
00184     //copy horizontally
00185     b->e_neighbors= this->e_neighbors ;
00186     foreach(SELF* cl,b->e_neighbors) {
00187       i= cl->w_neighbors.search(this);
00188       cl->w_neighbors[i]= b;
00189     }
00190 
00191     a->w_neighbors= this->w_neighbors ;
00192     foreach(SELF* cl,a->w_neighbors) {
00193       i= cl->e_neighbors.search(this);
00194       cl->e_neighbors[i]= a;
00195     }
00196 
00197     //update vertically
00198     foreach(SELF* cl,this->s_neighbors) {
00199       flag=false;
00200       if ( check_overlap(cl,a,0) //)
00201            && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
00202         {
00203           //assert( cl->ymax()== a->ymin() );
00204           a->s_neighbors<< cl;
00205           i= cl->n_neighbors.search(this);
00206           cl->n_neighbors[i]= a;
00207           flag=true;
00208         }
00209       if ( check_overlap(cl,b,0) //)
00210            && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
00211         {
00212           //assert( cl->ymax()== b->ymin() );
00213           b->s_neighbors<< cl;
00214           if (!flag)
00215             {
00216               i= cl->n_neighbors.search(this);
00217               cl->n_neighbors[i]= b;
00218             }
00219           else
00220             cl->n_neighbors << b;
00221         }
00222     }
00223     foreach(SELF* cl,this->n_neighbors) {
00224         flag=false;
00225         if ( check_overlap(cl,a,0) //)
00226              && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) ) 
00227         {
00228             a->n_neighbors<< cl;
00229             i= cl->s_neighbors.search(this);
00230             cl->s_neighbors[i]= a;
00231             flag=true;
00232         }
00233         if ( check_overlap(cl,b,0) //)
00234              && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
00235         {
00236             b->n_neighbors<< cl;
00237             if (!flag)
00238             {
00239               i= cl->s_neighbors.search(this);
00240               cl->s_neighbors[i]= b;
00241             }
00242             else
00243               cl->s_neighbors << b;
00244         }
00245     } 
00246 
00247     //update depth
00248     foreach(SELF* cl,this->f_neighbors) {
00249       flag=false;
00250       if ( check_overlap(cl,a,0) //)
00251            && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
00252         {
00253           //assert( cl->ymax()== a->ymin() );
00254           a->f_neighbors<< cl;
00255           i= cl->b_neighbors.search(this);
00256           cl->b_neighbors[i]= a;
00257           flag=true;
00258         }
00259       if ( check_overlap(cl,b,0) //)
00260            && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
00261         {
00262           //assert( cl->ymax()== b->ymin() );
00263           b->f_neighbors<< cl;
00264           if (!flag)
00265             {
00266               i= cl->b_neighbors.search(this);
00267               cl->b_neighbors[i]= b;
00268             }
00269           else
00270             cl->b_neighbors << b;
00271         }
00272     }
00273     foreach(SELF* cl,this->b_neighbors) {
00274         flag=false;
00275         if ( check_overlap(cl,a,0) //)
00276            && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) ) 
00277         {
00278             a->b_neighbors<< cl;
00279             i= cl->f_neighbors.search(this);
00280             cl->f_neighbors[i]= a;
00281             flag=true;
00282         }
00283         if ( check_overlap(cl,b,0) //)
00284            && ( check_overlap(cl,a,1) || check_overlap(cl,a,2)) )
00285         {
00286             b->b_neighbors<< cl;
00287             if (!flag)
00288             {
00289               i= cl->f_neighbors.search(this);
00290               cl->f_neighbors[i]= b;
00291             }
00292             else
00293               cl->f_neighbors << b;
00294         }
00295     }
00296 }

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

Definition at line 299 of file bcell3d.hpp.

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

Referenced by bcell3d_algebraic_surface< C, V >::split().

00300 {
00301     int i;
00302     bool flag;
00303 
00304     //copy vertically
00305     a->s_neighbors= this->s_neighbors ;
00306     foreach(SELF* cl,a->s_neighbors) {
00307       i= cl->n_neighbors.search(this);
00308       cl->n_neighbors[i]= a;
00309     }
00310     b->n_neighbors= this->n_neighbors ;
00311     foreach(SELF* cl,b->n_neighbors) {
00312       i= cl->s_neighbors.search(this);
00313       cl->s_neighbors[i]= b;
00314     }
00315     
00316     //update horizontally
00317     foreach(SELF* cl,this->w_neighbors) {
00318       flag=false;
00319       if ( check_overlap(cl,a,1) //) 
00320         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
00321         {
00322           //assert( cl->xmax()== a->xmin() );
00323           a->w_neighbors<< cl;
00324           i= cl->e_neighbors.search(this);
00325           cl->e_neighbors[i]= a;
00326           flag=true;
00327         }
00328       if ( check_overlap(cl,b,1) //)
00329         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
00330         {
00331           //assert( cl->xmax()== b->xmin() );
00332           b->w_neighbors<< cl;
00333           if (!flag)
00334             {
00335               i= cl->e_neighbors.search(this);
00336               cl->e_neighbors[i]= b;
00337             }
00338           else
00339             cl->e_neighbors << b;
00340         }
00341     }
00342     foreach(SELF* cl,this->e_neighbors) {
00343       flag=false;
00344       if ( check_overlap(cl,a,1) //)
00345         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) )  
00346         {
00347           a->e_neighbors<< cl;
00348           i= cl->w_neighbors.search(this);
00349           cl->w_neighbors[i]= a;
00350           flag=true;
00351         }
00352       if ( check_overlap(cl,b,1) //)
00353         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
00354         {
00355           b->e_neighbors<< cl;
00356           if (!flag)
00357             {
00358               i= cl->w_neighbors.search(this);
00359               cl->w_neighbors[i]= b;
00360             }
00361           else
00362             cl->w_neighbors << b;
00363         }
00364     }
00365 
00366 
00367     //update depth
00368     foreach(SELF* cl,this->f_neighbors) {
00369       flag=false;
00370       if ( check_overlap(cl,a,1) //)
00371         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) )  
00372         {
00373           //assert( cl->xmax()== a->xmin() );
00374           a->f_neighbors<< cl;
00375           i= cl->b_neighbors.search(this);
00376           cl->b_neighbors[i]= a;
00377           flag=true;
00378         }
00379       if ( check_overlap(cl,b,1) //)
00380         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
00381         {
00382           //assert( cl->xmax()== b->xmin() );
00383           b->f_neighbors<< cl;
00384           if (!flag)
00385             {
00386               i= cl->b_neighbors.search(this);
00387               cl->b_neighbors[i]= b;
00388             }
00389           else
00390             cl->b_neighbors << b;
00391         }
00392     }
00393     foreach(SELF* cl,this->b_neighbors) {
00394       flag=false;
00395       if ( check_overlap(cl,a,1) //)
00396         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) )  
00397         {
00398           a->b_neighbors<< cl;
00399           i= cl->f_neighbors.search(this);
00400           cl->f_neighbors[i]= a;
00401           flag=true;
00402         }
00403       if ( check_overlap(cl,b,1) //)
00404         && ( check_overlap(cl,a,0) || check_overlap(cl,a,2)) ) 
00405         {
00406           b->b_neighbors<< cl;
00407           if (!flag)
00408             {
00409               i= cl->f_neighbors.search(this);
00410               cl->f_neighbors[i]= b;
00411             }
00412           else
00413             cl->f_neighbors << b;
00414         }
00415     }
00416 }

void connect2 ( bcell3d< C, V > *  a,
bcell3d< C, V > *  b 
) [inline, inherited]

Definition at line 420 of file bcell3d.hpp.

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

Referenced by bcell3d_algebraic_surface< C, V >::split().

00421 {
00422     int i;
00423     bool flag;
00424 
00425     //copy vertically
00426     a->f_neighbors= this->f_neighbors ;
00427     foreach(SELF* cl,a->f_neighbors) {
00428       i= cl->b_neighbors.search(this);
00429       cl->b_neighbors[i]= a;
00430     }
00431     b->b_neighbors= this->b_neighbors ;
00432     foreach(SELF* cl,b->b_neighbors) {
00433       i= cl->f_neighbors.search(this);
00434       cl->f_neighbors[i]= b;
00435     }
00436     
00437     //update horizontally
00438     foreach(SELF* cl,this->w_neighbors) {
00439       flag=false;
00440       if ( check_overlap(cl,a,2) //)
00441         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
00442         {
00443           //assert( cl->xmax()== a->xmin() );
00444           a->w_neighbors<< cl;
00445           i= cl->e_neighbors.search(this);
00446           cl->e_neighbors[i]= a;
00447           flag=true;
00448         }
00449       if ( check_overlap(cl,b,2) //)
00450         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
00451         {
00452           //assert( cl->xmax()== b->xmin() );
00453           b->w_neighbors<< cl;
00454           if (!flag)
00455             {
00456               i= cl->e_neighbors.search(this);
00457               cl->e_neighbors[i]= b;
00458             }
00459           else
00460             cl->e_neighbors << b;
00461         }
00462     }
00463     foreach(SELF* cl,this->e_neighbors) {
00464       flag=false;
00465       if ( check_overlap(cl,a,2) //)
00466         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )   
00467         {
00468           a->e_neighbors<< cl;
00469           i= cl->w_neighbors.search(this);
00470           cl->w_neighbors[i]= a;
00471           flag=true;
00472         }
00473       if ( check_overlap(cl,b,2) //)
00474         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
00475         {
00476           b->e_neighbors<< cl;
00477           if (!flag)
00478             {
00479               i= cl->w_neighbors.search(this);
00480               cl->w_neighbors[i]= b;
00481             }
00482           else
00483             cl->w_neighbors << b;
00484         }
00485     }
00486     //update vertically
00487     foreach(SELF* cl,this->s_neighbors) {
00488       flag=false;
00489       if ( check_overlap(cl,a,0) //)
00490         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
00491         {
00492           //assert( cl->ymax()== a->ymin() );
00493           a->s_neighbors<< cl;
00494           i= cl->n_neighbors.search(this);
00495           cl->n_neighbors[i]= a;
00496           flag=true;
00497         }
00498       if ( check_overlap(cl,b,0) //)
00499         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
00500         {
00501           //assert( cl->ymax()== b->ymin() );
00502           b->s_neighbors<< cl;
00503           if (!flag)
00504             {
00505               i= cl->n_neighbors.search(this);
00506               cl->n_neighbors[i]= b;
00507             }
00508           else
00509             cl->n_neighbors << b;
00510         }
00511     }
00512     foreach(SELF* cl,this->n_neighbors) {
00513         flag=false;
00514         if ( check_overlap(cl,a,2) //)
00515         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
00516         {
00517           a->n_neighbors<< cl;
00518           i= cl->s_neighbors.search(this);
00519           cl->s_neighbors[i]= a;
00520           flag=true;
00521         }
00522         if ( check_overlap(cl,b,2) //)
00523         && ( check_overlap(cl,a,0) || check_overlap(cl,a,1)) )  
00524           {
00525             b->n_neighbors<< cl;
00526             if (!flag) {
00527               i= cl->s_neighbors.search(this);
00528               cl->s_neighbors[i]= b;
00529             }
00530             else
00531               cl->s_neighbors << b;
00532         }
00533     }
00534 }

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 }

void disconnect (  )  [inline, inherited]

Definition at line 537 of file bcell3d.hpp.

References bcell3d< C, V >::b_neighbors, Seq< C, R >::clear(), bcell3d< C, V >::e_neighbors, bcell3d< C, V >::f_neighbors, bcell3d< C, V >::n_neighbors, bcell3d< C, V >::s_neighbors, and bcell3d< C, V >::w_neighbors.

00538 {
00539     this->e_neighbors.clear();  
00540     this->w_neighbors.clear();  
00541     this->n_neighbors.clear();  
00542     this->s_neighbors.clear();  
00543     this->b_neighbors.clear();  
00544     this->f_neighbors.clear();  
00545 }

bool edge_point ( Point **  CELL,
int  cube_index 
) const [inline, inherited]

Definition at line 501 of file bcell3d_algebraic_surface.hpp.

References solver_implicit< C, V >::east_back_edge, solver_implicit< C, V >::east_front_edge, solver_implicit< C, V >::edge_point(), bcell3d_algebraic_surface< C, V >::equation(), mmx::tensor::face(), solver_implicit< C, V >::north_back_edge, solver_implicit< C, V >::north_east_edge, solver_implicit< C, V >::north_front_edge, solver_implicit< C, V >::north_west_edge, Seq< C, R >::resize(), Seq< C, R >::size(), solver_implicit< C, V >::south_back_edge, solver_implicit< C, V >::south_east_edge, solver_implicit< C, V >::south_front_edge, solver_implicit< C, V >::south_west_edge, solver_implicit< C, V >::west_back_edge, and solver_implicit< C, V >::west_front_edge.

00501                                                    {
00502   
00503   BoundingBox* bx = (BoundingBox*)this;
00504   Seq<Point*>  F;
00505   Polynomial bk, ft;
00506 
00507   tensor::face(bk, equation(), 2, 0);
00508   if (cube_index & 1) {
00509     Solver::edge_point(F, bk, Solver::north_back_edge, *bx);    
00510     if(F.size()==0) { 
00511       std::cout<<"Problem in MC0"<<std::endl;
00512       return false;
00513     } else
00514       CELL[0] = F[0]; 
00515     F.resize(0);
00516   }
00517   if (cube_index & 2) {
00518     Solver::edge_point(F, bk, Solver::east_back_edge , *bx);
00519     if(F.size()==0) {  
00520       std::cout<<"Problem in MC1"<<std::endl;
00521       return false;
00522     } else
00523       CELL[1] = F[0];  
00524     F.resize(0);
00525   }
00526   if (cube_index & 4) {
00527     Solver::edge_point(F, bk, Solver::south_back_edge, *bx);
00528     if(F.size()==0) {  
00529       std::cout<<"Problem in MC2"<<std::endl;
00530       return false;
00531     } else
00532       CELL[2] = F[0]; 
00533     F.resize(0);
00534   }
00535   if (cube_index & 8) {
00536     Solver::edge_point(F, bk, Solver::west_back_edge , *bx);
00537     if(F.size()==0) { 
00538       std::cout<<"Problem in MC3"<<std::endl;
00539     } else
00540       CELL[3] = F[0]; 
00541     F.resize(0);
00542   }
00543 
00544   tensor::face(ft,equation(), 2, 1);
00545 
00546   if (cube_index & 16) {
00547     Solver::edge_point(F, ft, Solver::north_front_edge, *bx);
00548     if(F.size()==0) { 
00549       std::cout<<"Problem in MC4 "<<std::endl;
00550       return false;
00551       } else
00552       CELL[4] = F[0]; 
00553     F.resize(0);
00554   }
00555   
00556   if (cube_index & 32) {
00557     Solver::edge_point(F, ft, Solver::east_front_edge , *bx);
00558     if(F.size()==0) { 
00559       std::cout<<"Problem in MC5"<<std::endl;
00560       return false;
00561     } else
00562       CELL[5] = F[0]; 
00563     F.resize(0);
00564   }
00565   
00566   if (cube_index & 64) {
00567     Solver::edge_point(F, ft, Solver::south_front_edge, *bx);
00568     if(F.size()==0) {
00569       std::cout<<"Problem in MC6"<<std::endl;
00570       return false;
00571     } else
00572       CELL[6] = F[0]; 
00573     F.resize(0);
00574   }
00575   
00576   if (cube_index & 128) {
00577     Solver::edge_point(F, ft, Solver::west_front_edge , *bx);
00578     if(F.size()==0)  {
00579       std::cout<<"Problem in MC7"<<std::endl;
00580       return false;
00581     } else
00582       CELL[7] = F[0]; 
00583     F.resize(0);
00584   }
00585   
00586   tensor::face(ft, equation(), 1, 1);
00587   if (cube_index & 256) {
00588     Solver::edge_point(F, ft, Solver::north_west_edge, *bx);
00589     if(F.size()==0)  {
00590       std::cout<<"Problem in MC8"<<std::endl;
00591       return false;
00592     } else
00593       CELL[8] = F[0]; 
00594     F.resize(0);
00595   } 
00596   
00597   if (cube_index & 512) {
00598     Solver::edge_point(F, ft, Solver::north_east_edge, *bx);
00599     if(F.size()==0)  {
00600       std::cout<<"Problem in MC9"<<std::endl;
00601       return false;
00602     } else
00603       CELL[9] = F[0];
00604     F.resize(0);
00605   } 
00606   
00607   tensor::face(bk, equation(), 1, 0);
00608   
00609   if (cube_index & 1024) {
00610     Solver::edge_point(F, bk, Solver::south_east_edge, *bx);
00611     if(F.size()==0)  {
00612       std::cout<<"Problem in MC10"<<std::endl;
00613       return false;
00614     } else
00615       CELL[10] = F[0]; 
00616     F.resize(0);
00617     } 
00618   
00619   if (cube_index & 2048) {
00620     Solver::edge_point(F, bk, Solver::south_west_edge, *bx);
00621     if(F.size()==0)  {
00622       std::cout<<"Problem in MC11"<<std::endl;
00623       return false;
00624     } else
00625       CELL[11] = F[0]; 
00626     F.resize(0);
00627   } 
00628 
00629   return true;
00630 }

const Polynomial& equation ( void   )  const [inline, inherited]
Polynomial equation ( void   )  [inline]
Polynomial get_polynomial (  )  const [inline, inherited]

Definition at line 120 of file bcell3d_algebraic_surface.hpp.

References bcell3d_algebraic_surface< C, V >::m_polynomial.

00120 {return m_polynomial;}

bcell2d_voronoi_impl2d< C, V >::Vector gradient ( const Point p  )  [inline]

Definition at line 266 of file bcell2d_voronoi_impl2d.hpp.

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

00266                              {
00267   Polynomial 
00268     dx= diff(this->m_polynomial,0),
00269     dy= diff(this->m_polynomial,1);
00270   double 
00271     u0= (p[0]-this->xmin())/(this->xmax()-this->xmin()),
00272     u1= (p[1]-this->ymin())/(this->ymax()-this->ymin());
00273   Vector v;
00274   v[0] = dx(u0,u1);
00275   v[1] = dy(u0,u1);
00276   return v;
00277 }

void insert ( Face p  )  [inline, inherited]

Definition at line 116 of file bcell3d_algebraic_surface.hpp.

References bcell3d_algebraic_surface< C, V >::m_faces.

00116 { m_faces<< p;  }

void insert ( Point p  )  [inline, inherited]

Definition at line 115 of file bcell3d_algebraic_surface.hpp.

References bcell3d_algebraic_surface< C, V >::m_points.

00115 { m_points<< p; }

bool insert_regular ( Topology t  )  [inline, virtual]

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 243 of file bcell2d_voronoi_impl2d.hpp.

References topology< C, V >::insert().

00243                                 {
00244 
00245   //std::cout<<"regular voronoi bcell" <<std::endl;    
00246     t->insert((BoundingBox*)this,false);
00247     return true;
00248 
00249 }

bool insert_singular ( Topology t  )  [inline, virtual]

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 252 of file bcell2d_voronoi_impl2d.hpp.

00252                                  {
00253 
00254     return true;
00255   }

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]
Seq< typename bcell3d< C, V >::Point * > intersections ( int  i  )  const [inline, inherited]

Definition at line 564 of file bcell3d.hpp.

References solver_implicit< C, V >::back_face, bcell3d< C, V >::boundingBox(), solver_implicit< C, V >::east_face, solver_implicit< C, V >::front_face, bcell3d< C, V >::m_boundary, solver_implicit< C, V >::north_face, solver_implicit< C, V >::south_face, and solver_implicit< C, V >::west_face.

00565       {
00566         Seq<Point *> l;
00567         switch(i) {
00568         case 0://south
00569           foreach(Point* p, this->m_boundary) 
00570             if (Solver::south_face.is_valid(*p,this->boundingBox())) 
00571               l << p ;
00572             return l;
00573           case 1://east
00574           foreach(Point* p, this->m_boundary) 
00575             if (Solver::east_face.is_valid(*p,this->boundingBox())) 
00576               l << p ;
00577             return l;
00578           case 2://north
00579           foreach(Point* p, this->m_boundary) 
00580             if (Solver::north_face.is_valid(*p,this->boundingBox())) 
00581               l << p ;
00582             return l;
00583           case 3://west
00584           foreach(Point* p, this->m_boundary) 
00585             if (Solver::west_face.is_valid(*p,this->boundingBox())) 
00586               l << p ;
00587             return l;
00588           case 4://front
00589             foreach(Point* p, this->m_boundary) 
00590               if (Solver::front_face.is_valid(*p,this->boundingBox())) 
00591                 l << p ;
00592               return l;
00593             case 5://back
00594           foreach(Point* p, this->m_boundary) 
00595             if (Solver::back_face.is_valid(*p,this->boundingBox())) 
00596               l << p ;
00597             return l;
00598           default:
00599             return (Seq<Point *>());
00600                     }
00601           }

virtual Seq<Point *> intersections (  )  const [inline, virtual]

Definition at line 125 of file bcell2d_voronoi_impl2d.hpp.

References bcell2d_voronoi_impl2d< C, V >::e_intersections, bcell2d_voronoi_impl2d< C, V >::n_intersections, Seq< C, R >::reversed(), bcell2d_voronoi_impl2d< C, V >::s_intersections, and bcell2d_voronoi_impl2d< C, V >::w_intersections.

Referenced by bcell2d_voronoi_impl2d< C, V >::pair(), and bcell2d_voronoi_impl2d< C, V >::starting_point().

00125                                             {
00126     std::cout<<"NEED intersections \n";
00127       Seq<Point *> r;
00128       r<< this->s_intersections;
00129       r<< this->e_intersections;
00130       r<< this->n_intersections.reversed();
00131       r<< this->w_intersections.reversed();
00132   return ( r ); 
00133   }

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

Implements bcell3d< C, V >.

Definition at line 202 of file bcell3d_algebraic_surface.hpp.

References mmx::has_sign_variation(), and bcell3d_algebraic_surface< C, V >::m_polynomial.

00202                        {
00203   //BoundingBox* bbx=(BoundingBox*)this;
00204   
00205   //    cout<<(BoundingBox*)this<<endl;
00206   //    cout<<m_polynomial.rep()<<endl;
00207   //    cout<<has_sign_variation(m_polynomial.begin(),m_polynomial.end())<<endl;
00208   
00209   //  Seq<Point*> lp;
00210   //  Polynomial ft, bk;
00211   //  tensor::face(ft,m_polynomial, 2, 1);
00212 
00213 //     solver_implicit::edge_point(lp, m_polynomial, north_front_edge, bbx);
00214 //     solver_implicit::edge_point(lp, m_polynomial, south_front_edge, bbx);
00215 //     solver_implicit::edge_point(lp, m_polynomial, west_front_edge , bbx);
00216 //     solver_implicit::edge_point(lp, m_polynomial, east_front_edge , bbx);
00217 
00218 //     tensor::face(bk, m_polynomial, 2, 0);
00219 //     solver_implicit::edge_point(lp, bk, north_back_edge, bbx);
00220 //     solver_implicit::edge_point(lp, bk, south_back_edge, bbx);
00221 //     solver_implicit::edge_point(lp, bk, west_back_edge , bbx);
00222 //     solver_implicit::edge_point(lp, bk, east_back_edge , bbx);
00223 
00224 //     tensor::face(m_polynomial, m_polynomial, 1, 1);
00225 //     solver_implicit::edge_point(lp, ft, west_edge, bbx);
00226 //     solver_implicit::edge_point(lp, ft, east_edge, bbx);
00227 
00228 //     tensor::face(bk, m_polynomial, 1, 0);
00229 //     solver_implicit::edge_point(lp, bk, west_edge, bbx);
00230 //     solver_implicit::edge_point(lp, bk, east_edge, bbx);
00231 
00232 //    foreach(Point* p, lp) std::cout<<" "<<p->x()<<" "<<p->y()<<" "<<p->z()<<std::endl;
00233 
00234   return has_sign_variation(m_polynomial.begin(),m_polynomial.end());
00235 }

bool is_active ( void   )  [inline]

Definition at line 236 of file bcell2d_voronoi_impl2d.hpp.

00236                 {
00237 
00238     return ( false );
00239 
00240 }

bool is_adjacent ( cell3d< C, V > *  c  )  [inline, virtual, inherited]

Definition at line 114 of file cell3d.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().

00114                               {
00115   if(this->xmax()<c2->xmin() || c2->xmax()<this->xmin())
00116     return false;
00117   if(this->ymax()<c2->ymin() || c2->ymax()<this->ymin())
00118     return false;
00119   if(this->zmax()<c2->zmin() || c2->zmax()<this->zmin())
00120     return false;
00121   if((this->xmax()==c2->xmin() || c2->xmax()==this->xmin())) {
00122     if((this->ymax()==c2->ymin() || c2->ymax()==this->ymin()) ||
00123        (this->zmax()==c2->zmin() || c2->zmax()==this->zmin()) )
00124       return false;
00125   } else if((this->ymax()==c2->ymin() || c2->ymax()==this->ymin()) &&
00126             (this->zmax()==c2->zmin() || c2->zmax()==this->zmin()) )
00127     return false;
00128   return true;
00129 }

bool is_intersected ( void   )  [inline, virtual]

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 104 of file bcell2d_voronoi_impl2d.hpp.

References bcell2d_voronoi_impl2d< C, V >::nb_intersect().

00104 {return (this->nb_intersect()>0);};

bool is_regular ( void   )  [inline, virtual]

Reimplemented from bcell3d_algebraic_surface< C, V >.

Definition at line 230 of file bcell2d_voronoi_impl2d.hpp.

00230                  {
00231 
00232     return true;
00233 }

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

Definition at line 158 of file bcell3d.hpp.

References bcell3d< C, V >::e_neighbors.

00159 {
00160     this->e_neighbors << b; 
00161     b->w_neighbors << this; 
00162 }

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

Definition at line 165 of file bcell3d.hpp.

References bcell3d< C, V >::n_neighbors.

00166 {
00167     b->s_neighbors << this;
00168     this->n_neighbors << b;
00169 }

void join2 ( bcell3d< C, V > *  b  )  [inline, inherited]

Definition at line 172 of file bcell3d.hpp.

References bcell3d< C, V >::b_neighbors.

00173 {
00174     b->f_neighbors << this;
00175     this->b_neighbors << b;
00176 }

double lower (  )  [inline]

Definition at line 149 of file bcell2d_voronoi_impl2d.hpp.

References bcell3d_algebraic_surface< C, V >::m_polynomial.

00150   {
00151     return  double(*std::min_element( this->m_polynomial.begin(), 
00152                                          this->m_polynomial.end() ) );
00153   }

int mc_index ( void   )  const [inline, inherited]

Definition at line 483 of file bcell3d_algebraic_surface.hpp.

References bcell3d_algebraic_surface< C, V >::vertex_eval().

00483                      {
00484 
00485   double isolevel = 0;
00486   int CubeIndex=0;
00487   
00488   if (vertex_eval(0,1,0) <= isolevel) CubeIndex |= 1;
00489   if (vertex_eval(1,1,0) <= isolevel) CubeIndex |= 2;
00490   if (vertex_eval(1,0,0) <= isolevel) CubeIndex |= 4;
00491   if (vertex_eval(0,0,0) <= isolevel) CubeIndex |= 8;
00492   if (vertex_eval(0,1,1) <= isolevel) CubeIndex |= 16;
00493   if (vertex_eval(1,1,1) <= isolevel) CubeIndex |= 32;
00494   if (vertex_eval(1,0,1) <= isolevel) CubeIndex |= 64;
00495   if (vertex_eval(0,0,1) <= isolevel) CubeIndex |= 128;
00496   
00497   return CubeIndex;
00498 }

unsigned nb_intersect ( void   )  const [inline]
Seq<bcell3d *> neighbors (  )  [inline, inherited]

Definition at line 103 of file bcell3d.hpp.

References bcell3d< C, V >::b_neighbors, bcell3d< C, V >::e_neighbors, bcell3d< C, V >::f_neighbors, bcell3d< C, V >::n_neighbors, bcell3d< C, V >::s_neighbors, and bcell3d< C, V >::w_neighbors.

00103                              { 
00104     Seq<bcell3d *> t;
00105     t<< s_neighbors ;
00106     t<< e_neighbors ;
00107     t<< n_neighbors ;
00108     t<< b_neighbors ;
00109     t<< w_neighbors ;
00110     t<< f_neighbors ;
00111     return t;     } ;

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_voronoi_impl2d< C, V >::Point * pair ( typename bcell2d_voronoi_impl2d< C, V >::Point p,
int &  sgn 
) [inline, virtual]

Definition at line 335 of file bcell2d_voronoi_impl2d.hpp.

References bcell2d_voronoi_impl2d< C, V >::intersections(), and Seq< C, R >::size().

00335                                            {
00336      // Pair: returns a neighboring point on the component (p,sgn)
00337      // The candidates are the 2 neighbor intersections of p in *this
00338 
00339       Seq<Point*> all;
00340       int a;
00341       all= this->intersections();
00342       a   = all.size();
00343       if (a==2)// regular bcell with a single branch
00344          { return (all[0]==p ? all[1]: all[0]);  }
00345 
00346         std::cout<<"...pair Trouble"<< this<<std::endl;
00347         return (all[0]); 
00348 }

void polygonise ( Topology3d t  )  [inline, virtual, inherited]

Implements bcell3d< C, V >.

Definition at line 364 of file bcell3d_algebraic_surface.hpp.

00364                               {
00365   marching_cube::polygonise(*t, *this); 
00366 }

typedef REF_OF (  )  [inherited]
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]
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 ( CELL *&  left,
CELL *&  right,
int  v,
double  s 
) [inline, inherited]

Definition at line 310 of file bcell3d_algebraic_surface.hpp.

References bcell3d< C, V >::connect0(), bcell3d< C, V >::connect1(), bcell3d< C, V >::connect2(), bcell3d_algebraic_surface< C, V >::m_polynomial, 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 bcell3d_algebraic_surface< C, V >::subdivide().

00310                                                       {
00311   
00312   //  cout<<"Split begin"<<endl;
00313   if(v==0) {
00314     left = new CELL(m_polynomial, BoundingBox(this->xmin(),c, this->ymin(), this->ymax(), this->zmin(), this->zmax()));
00315     right= new CELL(m_polynomial, BoundingBox(c,this->xmax(), this->ymin(), this->ymax(), this->zmin(), this->zmax()));
00316     /*  Update neighbors  */
00317     this->connect0(left, right);
00318     left->join0(right);
00319   } else if (v==1) {
00320     left = new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(), this->ymin(), c, this->zmin(), this->zmax()));
00321     right= new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(), c, this->ymax(), this->zmin(), this->zmax()));
00322     /*  Update neighbors  */
00323     this->connect1(left, right);
00324     left->join1(right);
00325   } else {//v==2
00326     left = new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(),this->ymin(),this->ymax(), this->zmin(), c));
00327     right= new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(),this->ymin(),this->ymax(), c, this->zmax()));
00328     /*  Update neighbors  */
00329     this->connect2(left, right);
00330     left->join2(right);
00331   } 
00332   //bcell3d_split(left,right,this,v,c);
00333   //  cout<<"Subdivide end "<<*left<<" "<<*right<<endl;
00334   tensor::split(left->m_polynomial, right->m_polynomial, v);
00335   //this->disconnect();
00336 }

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

Reimplemented from cell3d< C, V >.

Reimplemented in bcell3d_list< C, V >.

Definition at line 134 of file bcell3d.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().

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

00134                                       {
00135   double sx = (this->xmax()-this->xmin());
00136   double sy = (this->ymax()-this->ymin());
00137   double sz = (this->zmax()-this->zmin());
00138   
00139   if(sx<sy)
00140       if(sy<sz) {
00141         v=2;
00142         s=(this->zmax()+this->zmin())/2;
00143       } else {
00144         v=1;
00145         s=(this->ymax()+this->ymin())/2;
00146       }
00147     else
00148       if(sx<sz) {
00149         v=2;
00150         s=(this->zmax()+this->zmin())/2;
00151       } else {
00152         v=0;
00153         s=(this->xmax()+this->xmin())/2;
00154       }
00155 }

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

Definition at line 281 of file bcell2d_voronoi_impl2d.hpp.

References assert, bcell2d_voronoi_impl2d< C, V >::e_intersections, bcell2d_voronoi_impl2d< C, V >::intersections(), bcell3d_algebraic_surface< C, V >::m_polynomial, bcell2d_voronoi_impl2d< C, V >::s_intersections, Seq< C, R >::size(), and bcell2d_voronoi_impl2d< C, V >::w_intersections.

00281                             {//
00282 
00283 //std::cout<<"startingPoint.site2d"<<std::endl;
00284 
00285       Seq<Point*> all;
00286       unsigned a;
00287       all = this->intersections();
00288       a   = all.size();
00289 
00290       //std::cout<<this<<" , "<<a<<std::endl;
00291       //foreach(Point*p,all)
00292       //  std::cout<<p->x()<<" "<<p->y()<<" "<<p->z()<<std::endl;
00293 
00294       assert(a==2);
00295 
00296       int ev(0);
00297       int u ;//position of p
00298       unsigned
00299           s=this->s_intersections.size() ,// ~0
00300           e=this->e_intersections.size() ,// ~1
00301           //n=this->n_intersections.size() ,// ~2
00302           w=this->w_intersections.size() ;// ~3
00303 
00304       u= ( 0<s   ? 0 :
00305          ( 0<s+e ? 1 :
00306          ( 0<a-w ? 2 :
00307                    3 )));
00308 
00309       int * sz = this->m_polynomial.rep().szs();
00310       int * st = this->m_polynomial.rep().str();
00311 
00312           switch (u){
00313           case 0:
00314               ev= (this->m_polynomial[0] >0 ? 1:-1);
00315          break;
00316           case 1:
00317               ev= (this->m_polynomial[(sz[0]-1)*st[0]] >0 ? 1:-1);      
00318          break;
00319           case 2:
00320               ev= (this->m_polynomial[sz[0]*sz[1]-1]>0 ? 1:-1);
00321           break;
00322           case 3:
00323               ev= (this->m_polynomial[(sz[1]-1)*st[1]] >0 ? 1:-1);
00324           break;
00325           }
00326 
00327           if (ev*sgn>0)  
00328             return all[0]; 
00329           else                
00330             return all[1];
00331 }

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

Implemented in bcell3d_list< C, V >.

int subdivide ( cell3d< C, V > *&  left,
cell3d< C, V > *&  right 
) [inline, virtual, inherited]

Reimplemented in bcell3d_algebraic_curve< C, V >.

Definition at line 81 of file cell3d.hpp.

References cell3d< C, V >::split_position().

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

00081                                          {
00082     int v; double s;
00083     this->split_position(v,s);
00084     this->subdivide(Left,Right,v,s);
00085     return v;
00086 }

void subdivide ( CellBase *&  left,
CellBase *&  right,
int  v,
double  s 
) [inline, virtual, inherited]

Definition at line 340 of file bcell3d_algebraic_surface.hpp.

References mmx::ssi::left(), mmx::ssi::right(), SELF, and bcell3d_algebraic_surface< C, V >::split().

00340                                                                   {
00341   SELF * left=0, * right=0;
00342   this->split(left,right,v,c);
00343   Left=left; Right=right;
00344 }

void subdivide ( Cell *&  left,
Cell *&  right,
int  v,
double  s 
) [inline, virtual]

Definition at line 259 of file bcell2d_voronoi_impl2d.hpp.

00259                                                           {
00260 
00261   std::cout<<"NEED to subdivide!\n";
00262 //  bcell3d_subdivisor<C,V>::subdivide( *this,(SELF*&)Left,(SELF*&)Right,v,s);
00263 }

bool topology_regular ( Topology t  )  [inline, virtual, inherited]

Implements bcell3d< C, V >.

Definition at line 374 of file bcell3d_algebraic_surface.hpp.

References bcell3d< C, V >::b_neighbors, bcell3d< C, V >::e_neighbors, bcell3d< C, V >::f_neighbors, tpl3d< C, V >::insert(), bcell3d_algebraic_surface< C, V >::m_faces, bcell3d_algebraic_surface< C, V >::m_points, bcell3d< C, V >::n_neighbors, bcell3d< C, V >::s_neighbors, Seq< C, R >::size(), bcell3d< C, V >::w_neighbors, 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().

00374                                   {
00375   
00376   Topology3d* tpl3d= dynamic_cast<Topology3d*>(t);
00377 
00378    if(this->w_neighbors.size()>1)
00379      resolve_conflict(this->w_neighbors, this->xmin(),0 );
00380 
00381    if(this->e_neighbors.size()>1)
00382      resolve_conflict(this->e_neighbors, this->xmax(),0 );
00383 
00384     // foreach(Cell3d* cl, this->n_neighbors) 
00385     //   if(dynamic_cast<SELF*>(cl)->m_faces.size()>0)
00386     //     insert_bbx(tpl3d,cl,1,0);      
00387   
00388   if(this->n_neighbors.size()>1)
00389     resolve_conflict(this->n_neighbors, this->ymax(),1 );
00390 
00391    if(this->s_neighbors.size()>1)
00392      resolve_conflict(this->s_neighbors, this->ymin(),1 );
00393 
00394    if(this->f_neighbors.size()>1)
00395      resolve_conflict(this->f_neighbors, this->zmax(),2 );
00396 
00397    if(this->b_neighbors.size()>1)
00398      resolve_conflict(this->b_neighbors, this->zmin(),2 );
00399 
00400     //output topology
00401   foreach(Point* p, this->m_points)  tpl3d->insert(p);
00402   foreach(Face* f,  this->m_faces)   
00403   {
00404     tpl3d->insert(f);
00405     //if (f->size()>3) insert_bbx(tpl3d, (BoundingBox*)this);
00406   }
00407 
00408   return true;
00409 }

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 upper (  )  [inline]

Definition at line 156 of file bcell2d_voronoi_impl2d.hpp.

References bcell3d_algebraic_surface< C, V >::m_polynomial.

00157   {
00158     return double(*std::max_element( this->m_polynomial.begin(),
00159                                      this->m_polynomial.end() ) );
00160   }

double vertex_eval ( unsigned  sx,
unsigned  sy,
unsigned  sz 
) const [inline, inherited]

Definition at line 472 of file bcell3d_algebraic_surface.hpp.

References bcell3d_algebraic_surface< C, V >::m_polynomial.

Referenced by bcell3d_algebraic_surface< C, V >::mc_index().

00472                                                              {
00473   
00474   int s=0;
00475   s+= sx*(m_polynomial.rep().env.sz(0)-1)*m_polynomial.rep().env.st(0);
00476   s+= sy*(m_polynomial.rep().env.sz(1)-1)*m_polynomial.rep().env.st(1);
00477   s+= sz*(m_polynomial.rep().env.sz(2)-1)*m_polynomial.rep().env.st(2);
00478   return m_polynomial[s];
00479 }

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<bcell3d *> b_neighbors [inherited]
Seq<bcell3d *> e_neighbors [inherited]
Seq<bcell3d *> f_neighbors [inherited]
Seq<Point *> m_boundary [inherited]
Point* m_center [inherited]

Definition at line 124 of file bcell3d_algebraic_surface.hpp.

C m_center_value [inherited]

Definition at line 125 of file bcell3d_algebraic_surface.hpp.

Seq<Face*> m_faces [inherited]
gNode<bcell3d*>* m_gnode [inherited]

Definition at line 100 of file bcell3d.hpp.

int m_idx [inherited]
Seq<Point*> m_points [inherited]
Polynomial m_polynomial [inherited]
Seq<Point *> m_singular [inherited]

Definition at line 96 of file bcell3d.hpp.

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

int m_type [inherited]

Definition at line 97 of file bcell3d.hpp.

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<bcell3d *> n_neighbors [inherited]
Seq<bcell3d *> s_neighbors [inherited]
Seq<bcell3d *> w_neighbors [inherited]

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

Generated on 6 Dec 2012 for shape by  doxygen 1.6.1