cell3d_algebraic_surface< C, V > Struct Template Reference

#include <cell3d_algebraic_surface.hpp>

Inheritance diagram for cell3d_algebraic_surface< 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 = default_env>
struct mmx::shape::cell3d_algebraic_surface< C, V >

Definition at line 54 of file cell3d_algebraic_surface.hpp.


Member Typedef Documentation

Definition at line 71 of file cell3d_algebraic_surface.hpp.

typedef cell3d<C,V> bcell3d< C, V >

Definition at line 67 of file cell3d_algebraic_surface.hpp.

typedef bounding_box<C,V> BoundingBox

Reimplemented from cell3d< C, V >.

Definition at line 69 of file cell3d_algebraic_surface.hpp.

typedef cell3d<C,V> Cell

Reimplemented from cell3d< C, V >.

Definition at line 65 of file cell3d_algebraic_surface.hpp.

typedef cell3d<C,V> CellBase

Reimplemented from cell3d< C, V >.

Definition at line 66 of file cell3d_algebraic_surface.hpp.

Reimplemented from cell3d< C, V >.

Definition at line 62 of file cell3d_algebraic_surface.hpp.

Definition at line 63 of file cell3d_algebraic_surface.hpp.

typedef use<mesh3d_def,C,V>::Point Point

Reimplemented from cell3d< C, V >.

Definition at line 61 of file cell3d_algebraic_surface.hpp.

Definition at line 73 of file cell3d_algebraic_surface.hpp.

typedef solver_implicit<C,V> Solver

Reimplemented from cell3d< C, V >.

Definition at line 78 of file cell3d_algebraic_surface.hpp.

typedef topology<C,V> Topology

Reimplemented from cell3d< C, V >.

Definition at line 59 of file cell3d_algebraic_surface.hpp.

typedef tpl3d<C,V> Topology3d

Reimplemented from cell3d< C, V >.

Definition at line 58 of file cell3d_algebraic_surface.hpp.


Constructor & Destructor Documentation

cell3d_algebraic_surface ( const cell3d_algebraic_surface< C, V > &  s  )  [inline]

Definition at line 118 of file cell3d_algebraic_surface.hpp.

00119     : Cell3d((BoundingBox)s), m_polynomial(s.equation()), m_center(0)
00120 {
00121 
00122 }

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

Definition at line 125 of file cell3d_algebraic_surface.hpp.

00126     : Cell3d(bx), m_polynomial(pol), m_center(0)
00127 {
00128 
00129 }

cell3d_algebraic_surface ( char *  pol,
const BoundingBox bx 
) [inline]

Definition at line 132 of file cell3d_algebraic_surface.hpp.

00133     : Cell3d(bx), m_polynomial(pol), m_center(0)
00134 {
00135 }

cell3d_algebraic_surface ( const AlgebraicSurface sf,
const BoundingBox b 
) [inline]

Definition at line 138 of file cell3d_algebraic_surface.hpp.

References mmx::assign(), algebraic_surface< C, V >::equation(), cell3d_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().

00138                                                                               : Cell3d(b), m_center(0)
00139 {
00140     Seq<mmx::GMP::rational> bx;
00141     bx<<as<mmx::GMP::rational>(b.xmin());
00142     bx<<as<mmx::GMP::rational>(b.xmax());
00143     bx<<as<mmx::GMP::rational>(b.ymin());
00144     bx<<as<mmx::GMP::rational>(b.ymax());
00145     bx<<as<mmx::GMP::rational>(b.zmin());
00146     bx<<as<mmx::GMP::rational>(b.zmax());
00147 
00148     Polynomial tmp;
00149     tensor::bernstein<mmx::GMP::rational> polq(sf.equation().rep(),bx);
00150     let::assign(tmp.rep(),polq);
00151     m_polynomial=tmp;
00152 
00153 }


Member Function Documentation

BoundingBox boundingBox (  )  const [inline, inherited]

Reimplemented in bcell3d< C, V >.

Definition at line 65 of file cell3d.hpp.

00065 { 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); }

C center_value (  )  const [inline]

Definition at line 98 of file cell3d_algebraic_surface.hpp.

References cell3d_algebraic_surface< C, V >::m_polynomial.

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

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 }

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

Definition at line 342 of file cell3d_algebraic_surface.hpp.

References solver_implicit< C, V >::east_back_edge, solver_implicit< C, V >::east_front_edge, solver_implicit< C, V >::edge_point(), cell3d_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.

00342                                                    {
00343 
00344     BoundingBox* bx = (BoundingBox*)this;
00345     Seq<Point*>  F;
00346     Polynomial bk, ft;
00347 
00348     tensor::face(bk, equation(), 2, 0);
00349     if (cube_index & 1) {
00350         Solver::edge_point(F, bk, Solver::north_back_edge, *bx);
00351         if(F.size()==0) {
00352             std::cout<<"Problem in MC0"<<std::endl;
00353             return false;
00354         } else
00355             CELL[0] = F[0];
00356         F.resize(0);
00357     }
00358     if (cube_index & 2) {
00359         Solver::edge_point(F, bk, Solver::east_back_edge , *bx);
00360         if(F.size()==0) {
00361             std::cout<<"Problem in MC1"<<std::endl;
00362             return false;
00363         } else
00364             CELL[1] = F[0];
00365         F.resize(0);
00366     }
00367     if (cube_index & 4) {
00368         Solver::edge_point(F, bk, Solver::south_back_edge, *bx);
00369         if(F.size()==0) {
00370             std::cout<<"Problem in MC2"<<std::endl;
00371             return false;
00372         } else
00373             CELL[2] = F[0];
00374         F.resize(0);
00375     }
00376     if (cube_index & 8) {
00377         Solver::edge_point(F, bk, Solver::west_back_edge , *bx);
00378         if(F.size()==0) {
00379             std::cout<<"Problem in MC3"<<std::endl;
00380         } else
00381             CELL[3] = F[0];
00382         F.resize(0);
00383     }
00384 
00385     tensor::face(ft,equation(), 2, 1);
00386 
00387     if (cube_index & 16) {
00388         Solver::edge_point(F, ft, Solver::north_front_edge, *bx);
00389         if(F.size()==0) {
00390             std::cout<<"Problem in MC4 "<<std::endl;
00391             return false;
00392         } else
00393             CELL[4] = F[0];
00394         F.resize(0);
00395     }
00396 
00397     if (cube_index & 32) {
00398         Solver::edge_point(F, ft, Solver::east_front_edge , *bx);
00399         if(F.size()==0) {
00400             std::cout<<"Problem in MC5"<<std::endl;
00401             return false;
00402         } else
00403             CELL[5] = F[0];
00404         F.resize(0);
00405     }
00406 
00407     if (cube_index & 64) {
00408         Solver::edge_point(F, ft, Solver::south_front_edge, *bx);
00409         if(F.size()==0) {
00410             std::cout<<"Problem in MC6"<<std::endl;
00411             return false;
00412         } else
00413             CELL[6] = F[0];
00414         F.resize(0);
00415     }
00416 
00417     if (cube_index & 128) {
00418         Solver::edge_point(F, ft, Solver::west_front_edge , *bx);
00419         if(F.size()==0)  {
00420             std::cout<<"Problem in MC7"<<std::endl;
00421             return false;
00422         } else
00423             CELL[7] = F[0];
00424         F.resize(0);
00425     }
00426 
00427     tensor::face(ft, equation(), 1, 1);
00428     if (cube_index & 256) {
00429         Solver::edge_point(F, ft, Solver::north_west_edge, *bx);
00430         if(F.size()==0)  {
00431             std::cout<<"Problem in MC8"<<std::endl;
00432             return false;
00433         } else
00434             CELL[8] = F[0];
00435         F.resize(0);
00436     }
00437 
00438     if (cube_index & 512) {
00439         Solver::edge_point(F, ft, Solver::north_east_edge, *bx);
00440         if(F.size()==0)  {
00441             std::cout<<"Problem in MC9"<<std::endl;
00442             return false;
00443         } else
00444             CELL[9] = F[0];
00445         F.resize(0);
00446     }
00447 
00448     tensor::face(bk, equation(), 1, 0);
00449 
00450     if (cube_index & 1024) {
00451         Solver::edge_point(F, bk, Solver::south_east_edge, *bx);
00452         if(F.size()==0)  {
00453             std::cout<<"Problem in MC10"<<std::endl;
00454             return false;
00455         } else
00456             CELL[10] = F[0];
00457         F.resize(0);
00458     }
00459 
00460     if (cube_index & 2048) {
00461         Solver::edge_point(F, bk, Solver::south_west_edge, *bx);
00462         if(F.size()==0)  {
00463             std::cout<<"Problem in MC11"<<std::endl;
00464             return false;
00465         } else
00466             CELL[11] = F[0];
00467         F.resize(0);
00468     }
00469 
00470     return true;
00471 }

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

Definition at line 104 of file cell3d_algebraic_surface.hpp.

References cell3d_algebraic_surface< C, V >::m_polynomial.

00104 {return m_polynomial;}

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]
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]

Implements cell3d< C, V >.

Definition at line 156 of file cell3d_algebraic_surface.hpp.

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

00156                        {
00157     return has_sign_variation(m_polynomial.begin(),m_polynomial.end());
00158 }

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_regular ( void   )  [inline, virtual]

Implements cell3d< C, V >.

Definition at line 161 of file cell3d_algebraic_surface.hpp.

References mmx::diff(), solver_implicit< C, V >::east_back_edge, solver_implicit< C, V >::east_front_edge, solver_implicit< C, V >::edge_sign_var(), cell3d_algebraic_surface< C, V >::equation(), mmx::tensor::face(), mmx::has_sign_variation(), cell3d_algebraic_surface< C, V >::m_idx, cell3d_algebraic_surface< C, V >::m_polynomial, 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, 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.

00161                  { 
00162     Polynomial dxf, dyf, dzf;
00163     Polynomial fp0, fp1;
00164     Polynomial bk, ft;
00165 
00166 
00167     tensor::face(bk, m_polynomial, 2, 0);
00168     if(Solver::edge_sign_var(bk, Solver::north_back_edge) >1) return false;
00169     if(Solver::edge_sign_var(bk, Solver::south_back_edge) >1) return false;
00170     if(Solver::edge_sign_var(bk, Solver::east_back_edge ) >1) return false;
00171     if(Solver::edge_sign_var(bk, Solver::west_back_edge ) >1) return false;
00172 
00173 
00174     tensor::face(ft, m_polynomial, 2, 1);
00175     if(Solver::edge_sign_var(ft, Solver::north_front_edge) >1) return false;
00176     if(Solver::edge_sign_var(ft, Solver::south_front_edge) >1) return false;
00177     if(Solver::edge_sign_var(ft, Solver::east_front_edge ) >1) return false;
00178     if(Solver::edge_sign_var(ft, Solver::west_front_edge ) >1) return false;
00179 
00180     tensor::face(ft, equation(), 1, 1);
00181     if(Solver::edge_sign_var(ft, Solver::north_west_edge) >1) return false;
00182     if(Solver::edge_sign_var(ft, Solver::north_east_edge) >1) return false;
00183 
00184     tensor::face(bk, equation(), 1, 0);
00185     if(Solver::edge_sign_var(bk, Solver::south_west_edge) >1) return false;
00186     if(Solver::edge_sign_var(bk, Solver::south_east_edge) >1) return false;
00187 
00188     tensor::diff(dxf.rep(),m_polynomial.rep(),0);
00189     tensor::diff(dyf.rep(),m_polynomial.rep(),1);
00190     tensor::diff(dzf.rep(),m_polynomial.rep(),2);
00191 
00192     if(!has_sign_variation(dxf.begin(),dxf.end())) {
00193 
00194         this->m_idx=0;
00195         return true;
00196 
00197         tensor::face(fp0, dyf, 0, 0);
00198         tensor::face(fp1, dyf, 0, 1);
00199         if(!has_sign_variation(fp0.begin(),fp0.end()) &&
00200                 !has_sign_variation(fp1.begin(),fp1.end()) ) return true;
00201 
00202         tensor::face(fp0, dzf, 0, 0);
00203         tensor::face(fp1, dzf, 0, 1);
00204         if(!has_sign_variation(fp0.begin(),fp0.end()) &&
00205                 !has_sign_variation(fp1.begin(),fp1.end())) return true;
00206 
00207         return false;
00208     }
00209 
00210     //tensor::diff(dyf.rep(),m_polynomial.rep(),1);
00211     if(!has_sign_variation(dyf.begin(),dyf.end())) {
00212         this->m_idx=1;
00213         return true;
00214     }
00215 
00216     //tensor::diff(dzf.rep(),m_polynomial.rep(),2);
00217     if(!has_sign_variation(dzf.begin(),dzf.end())) {
00218         this->m_idx=2;
00219         return true;
00220     }
00221 
00222     return false;
00223 }

C lower_bound (  )  const [inline]

Definition at line 99 of file cell3d_algebraic_surface.hpp.

References cell3d_algebraic_surface< C, V >::m_polynomial.

00099 {return min_value<C>(m_polynomial.begin(), m_polynomial.end());}

int mc_index ( void   )  const [inline]

Definition at line 272 of file cell3d_algebraic_surface.hpp.

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

00272                      {
00273 
00274     double isolevel = 0;
00275     int CubeIndex=0;
00276 
00277     if (vertex_eval(0,1,0) <= isolevel) CubeIndex |= 1;
00278     if (vertex_eval(1,1,0) <= isolevel) CubeIndex |= 2;
00279     if (vertex_eval(1,0,0) <= isolevel) CubeIndex |= 4;
00280     if (vertex_eval(0,0,0) <= isolevel) CubeIndex |= 8;
00281     if (vertex_eval(0,1,1) <= isolevel) CubeIndex |= 16;
00282     if (vertex_eval(1,1,1) <= isolevel) CubeIndex |= 32;
00283     if (vertex_eval(1,0,1) <= isolevel) CubeIndex |= 64;
00284     if (vertex_eval(0,0,1) <= isolevel) CubeIndex |= 128;
00285 
00286     return CubeIndex;
00287 }

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) ; }

void point ( Point r,
const Point A,
const Point B 
) const [inline]

Definition at line 291 of file cell3d_algebraic_surface.hpp.

References mmx::abs(), cell3d_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().

00291                                                            {
00292 
00293     Point  U0((A.x()-this->xmin())/(this->xmax()-this->xmin()),
00294               (A.y()-this->ymin())/(this->ymax()-this->ymin()),
00295               (A.z()-this->zmin())/(this->zmax()-this->zmin())),
00296             U1((B.x()-this->xmin())/(this->xmax()-this->xmin()),
00297                (B.y()-this->ymin())/(this->ymax()-this->ymin()),
00298                (B.z()-this->zmin())/(this->zmax()-this->zmin()));
00299 
00300     C f0 = this->m_polynomial(U0.x(), U0.y(), U0.z()),
00301             f1 = this->m_polynomial(U1.x(), U1.y(), U1.z());
00302 
00303     Point M;
00304     if (abs(f0) < 0.00001) {
00305         M=U0;
00306     } else if (abs(f1) < 0.00001) {
00307         M=U1;
00308     } else if (abs(f1-f0) < 0.00001) {
00309         M=U0;
00310     } else {
00311 
00312         C mu = - f0 / (f1 - f0);
00313 
00314         M.x() = U0.x() + mu * (U1.x() - U0.x());
00315         M.y() = U0.y() + mu * (U1.y() - U0.y());
00316         M.z() = U0.z() + mu * (U1.z() - U0.z());
00317 
00318         C  fm = this->m_polynomial(M.x(),M.y(),M.z());
00319 
00320         for(int i=0;i<10;i++) {
00321             if(f0*fm<0) {
00322                 U1 = M; f1 = fm;
00323             } else {
00324                 U0 = M; f0 = fm;
00325             }
00326             mu = - f0 / (f1 - f0);
00327             M.x() = U0.x() + mu * (U1.x() - U0.x());
00328             M.y() = U0.y() + mu * (U1.y() - U0.y());
00329             M.z() = U0.z() + mu * (U1.z() - U0.z());
00330 
00331             fm = this->m_polynomial(M.x(),M.y(),M.z());
00332         }
00333     }
00334 
00335     R.x()=this->xmin()+ M.x()*(this->xmax()-this->xmin());
00336     R.y()=this->ymin()+ M.y()*(this->ymax()-this->ymin());
00337     R.z()=this->zmin()+ M.z()*(this->zmax()-this->zmin());
00338 
00339 }

typedef REF_OF (  ) 
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]

Definition at line 226 of file cell3d_algebraic_surface.hpp.

References cell3d_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 cell3d_algebraic_surface< C, V >::subdivide().

00226                                                       {
00227 
00228     //  cout<<"Split begin"<<endl;
00229     if(v==0) {
00230         left = new CELL(m_polynomial, BoundingBox(this->xmin(),c, this->ymin(), this->ymax(), this->zmin(), this->zmax()));
00231         right= new CELL(m_polynomial, BoundingBox(c,this->xmax(), this->ymin(), this->ymax(), this->zmin(), this->zmax()));
00232     } else if (v==1) {
00233         left = new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(), this->ymin(), c, this->zmin(), this->zmax()));
00234         right= new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(), c, this->ymax(), this->zmin(), this->zmax()));
00235     } else {//v==2
00236         left = new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(),this->ymin(),this->ymax(), this->zmin(), c));
00237         right= new CELL(m_polynomial, BoundingBox(this->xmin(),this->xmax(),this->ymin(),this->ymax(), c, this->zmax()));
00238     }
00239     //cell3d_split(left,right,this,v,c);
00240     //cout<<"Subdivide end "<<*left<<" "<<*right<<endl;
00241     tensor::split(left->m_polynomial, right->m_polynomial, v);
00242 }

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

Reimplemented in bcell3d< C, V >, and bcell3d_list< C, V >.

Definition at line 89 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().

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

00089                                       {
00090     double sx = (this->xmax()-this->xmin());
00091     double sy = (this->ymax()-this->ymin());
00092     double sz = (this->zmax()-this->zmin());
00093 
00094     if(sx<sy)
00095         if(sy<sz) {
00096             v=2;
00097             s=(this->zmax()+this->zmin())/2;
00098         } else {
00099             v=1;
00100             s=(this->ymax()+this->ymin())/2;
00101         }
00102     else
00103         if(sx<sz) {
00104             v=2;
00105             s=(this->zmax()+this->zmin())/2;
00106         } else {
00107             v=0;
00108             s=(this->xmax()+this->xmin())/2;
00109         }
00110 }

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 ( Cell *&  left,
Cell *&  right,
int  v,
double  s 
) [inline, virtual]

Definition at line 246 of file cell3d_algebraic_surface.hpp.

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

00246                                                           {
00247     SELF * left=0, * right=0;
00248     this->split(left,right,v,c);
00249     Left=left; Right=right;
00250 }

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 }

C upper_bound (  )  const [inline]

Definition at line 100 of file cell3d_algebraic_surface.hpp.

References cell3d_algebraic_surface< C, V >::m_polynomial.

00100 {return max_value<C>(m_polynomial.begin(), m_polynomial.end());}

C value ( const C &  x,
const C &  y,
const C &  z 
) const [inline]

Definition at line 254 of file cell3d_algebraic_surface.hpp.

References cell3d_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().

00254                                                      {
00255     return m_polynomial((x-this->xmin())/(this->xmax()-this->xmin()),
00256                         (y-this->ymin())/(this->ymax()-this->ymin()),
00257                         (z-this->zmin())/(this->zmax()-this->zmin()));
00258 }

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

Definition at line 261 of file cell3d_algebraic_surface.hpp.

References cell3d_algebraic_surface< C, V >::m_polynomial.

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

00261                                                              {
00262 
00263     int s=0;
00264     s+= sx*(m_polynomial.rep().env.sz(0)-1)*m_polynomial.rep().env.st(0);
00265     s+= sy*(m_polynomial.rep().env.sz(1)-1)*m_polynomial.rep().env.st(1);
00266     s+= sz*(m_polynomial.rep().env.sz(2)-1)*m_polynomial.rep().env.st(2);
00267     return m_polynomial[s];
00268 }

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

Definition at line 109 of file cell3d_algebraic_surface.hpp.

Definition at line 110 of file cell3d_algebraic_surface.hpp.

int m_idx
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]

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

Generated on 6 Dec 2012 for shape by  doxygen 1.6.1