00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MICELLEXTRACTIJ_H
00024 #define _MICELLEXTRACTIJ_H
00025
00026 #include <MeshVizXLM/mesh/data/MiDataSetI.h>
00027 #include <MeshVizXLM/mesh/data/MiDataSetIj.h>
00028 #include <MeshVizXLM/extractors/MiBaseExtractor.h>
00029 #include <MeshVizXLM/extrmesh/data/MeXDataSetI.h>
00030
00031 #include <MeshVizXLM/mesh/MiSurfaceMeshRegular.h>
00032 #include <MeshVizXLM/mesh/MiSurfaceMeshRectilinear.h>
00033 #include <MeshVizXLM/mesh/MiSurfaceMeshCurvilinear.h>
00034 #include <MeshVizXLM/extrmesh/MeXSurfaceMeshUnstructured.h>
00035 #include <MeshVizXLM/tessellator/MiTessellator.h>
00036
00037 #include <Inventor/STL/vector>
00038
00039 class MiCellFilterIj;
00040
00052 class MESHVIZXLM_EXTR_API MiCellExtractIj : virtual public MiBaseExtractor
00053 {
00054 public:
00055
00056 virtual ~MiCellExtractIj() {}
00057
00059
00062 static MiCellExtractIj* getNewInstance(const MiSurfaceMeshRegular& mesh, bool parallel = true, MiTessellator* tessellator=NULL);
00063 static MiCellExtractIj* getNewInstance(const MiSurfaceMeshRectilinear& mesh, bool parallel = true, MiTessellator* tessellator=NULL);
00064 static MiCellExtractIj* getNewInstance(const MiSurfaceMeshCurvilinear& mesh, bool parallel = true, MiTessellator* tessellator=NULL);
00066
00070 class couple
00071 {
00072 public:
00073 couple():i(0),j(0) {}
00074 couple(size_t x, size_t y):i(x),j(y) {}
00075 couple(size_t v):i(v),j(v) {}
00076 size_t i;
00077 size_t j;
00079 friend bool operator ==(const couple &t1, const couple &t2)
00080 { return (t1.i==t2.i && t1.j==t2.j);}
00082 friend bool operator <(const couple &t1, const couple &t2)
00083 { return (t1.i<t2.i || (t1.i==t2.i && t1.j<t2.j)); }
00084 };
00085
00093 virtual const MeXSurfaceMeshUnstructured&
00094 extractCell(const std::vector<couple>& cellIndexes, double factor, const MiCellFilterIj* cellFilter=NULL) = 0;
00095
00103 virtual const MeXSurfaceMeshUnstructured&
00104 extractCell(double factor, const MiCellFilterIj* cellFilter=NULL) = 0;
00105
00113 virtual const MeXScalardSetI& extractScalarSet(const MiScalardSetIj& inputSet) = 0;
00114
00122 virtual const MeXVec3dSetI& extractVec3Set(const MiVec3dSetIj& inputSet) = 0;
00123
00131 virtual const MeXStringSetI& extractStringSet(const MiStringSetIj& inputSet) = 0;
00132
00136 virtual const MeXSurfaceMeshUnstructured& getExtract() const = 0;
00137
00138 };
00139
00140 #endif
00141
00142
00143