00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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/algebraic_surface.hpp>
00022 # include <shape/bcell.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 bcell<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
00039
00040
00041
00042
00043
00044
00045 template<class C, class V>
00046 struct bcell<C,with_node<V> > : public bcell<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 bcell<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 bcell(const SELF&);
00065 bcell(const BoundingBox&);
00066
00067
00068
00069
00070 public:
00071 Node* m_node;
00072 };
00073
00074
00075 TMPL
00076 SELF::bcell(const SELF& s)
00077 : Cell((BoundingBox)s), m_node(NULL)
00078 {
00079
00080 }
00081
00082 TMPL
00083 SELF::bcell(const BoundingBox& bx)
00084 : Cell(bx), m_node(NULL)
00085 {
00086
00087 }
00088
00089 }
00090 }
00091 # undef TMP
00092 # undef SELF
00093 # endif // shape_cell_with_node_hpp
00094