shape_doc 0.1
|
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 /*********************************************************************/