shape_doc 0.1
/Users/mourrain/Devel/mmx/shape/include/shape/cell_with_node.hpp
Go to the documentation of this file.
00001 /*****************************************************************************
00002  * M a t h e m a  g i x
00003  *****************************************************************************
00004  * cell of algebraic surface
00005  * 2008-03-20
00006  * Bernard Mourrain & Julien Wintz
00007  *****************************************************************************
00008  *               Copyright (C) 2008 INRIA Sophia-Antipolis
00009  *****************************************************************************
00010  * Comments :
00011  ****************************************************************************/
00012 
00013 # ifndef shape_cell_with_node_hpp
00014 # define shape_cell_with_node_hpp
00015 
00016 # include <realroot/Interval.hpp>
00017 # include <realroot/polynomial_bernstein.hpp>
00018 # include <realroot/sign_variation.hpp>
00019 # include <realroot/Seq.hpp>
00020 # include <shape/bounding_box.hpp>
00021 # include <shape/surface_algebraic.hpp>
00022 # include <shape/cell.hpp>
00023 # include <shape/solver_implicit.hpp>
00024 # include <shape/marching_cube.hpp>
00025 
00026 # define TMPL template<class C, class V>
00027 # define TMPL1 template<class C>
00028 # define SELF cell<C,with_node<V> >
00029 # undef Topology
00030 //====================================================================
00031 namespace mmx {
00032 namespace shape {
00033 
00034 template<class V> struct with_node {};
00035 
00036 template<class FF,class VV> struct use<FF,with_node<VV> >: public use<FF,VV> {};
00037 
00038 // template<class V>
00039 // struct use<ref_def, with_node<V> > {
00040 //    typedef with_node<V> Ref;
00041 // };
00042 
00043 
00044 //--------------------------------------------------------------------
00045   template<class C, class V>
00046 struct cell<C,with_node<V> > : public cell<C,V> {
00047 public:
00048 
00049   typedef REF_OF(V)  Ref;
00050   typedef topology<C,Ref>                  Topology;
00051 
00052   typedef typename Topology::Point         Point;  
00053   typedef typename Topology::Edge          Edge;
00054   typedef typename Topology::Face          Face;
00055 
00056   typedef cell<C,Ref>                      Cell;
00057 
00058   typedef bounding_box<C,Ref>              BoundingBox;
00059   
00060   typedef surface<Ref>                     Surface;  
00061 
00062   typedef node<Surface*,Cell*>             Node;
00063 
00064   cell(const SELF&);
00065   cell(const BoundingBox&);
00066 
00067   //  virtual bool  is_regular(void) = 0;
00068   //  virtual bool  is_active (void) = 0;
00069   
00070 public:
00071   Node*             m_node;
00072 };
00073 
00074 //====================================================================
00075 TMPL
00076 SELF::cell(const SELF& s)
00077   : Cell((BoundingBox)s), m_node(NULL)
00078 {
00079   
00080 }
00081 //--------------------------------------------------------------------
00082 TMPL
00083 SELF::cell(const BoundingBox& bx)
00084   : Cell(bx), m_node(NULL)
00085 {
00086 
00087 }
00088 //====================================================================
00089 } // namespace shape
00090 } // namespace mmx
00091 # undef TMP
00092 # undef SELF
00093 # endif // shape_cell_with_node_hpp
00094 /*********************************************************************/