00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MICELLEXTRACTIJK_H
00024 #define _MICELLEXTRACTIJK_H
00025
00026 #include <MeshVizXLM/mesh/data/MiDataSetI.h>
00027 #include <MeshVizXLM/mesh/data/MiDataSetIjk.h>
00028 #include <MeshVizXLM/extractors/MiBaseExtractor.h>
00029 #include <MeshVizXLM/extrmesh/data/MeXDataSetI.h>
00030
00031 #include <MeshVizXLM/mesh/MiVolumeMeshRegular.h>
00032 #include <MeshVizXLM/mesh/MiVolumeMeshRectilinear.h>
00033 #include <MeshVizXLM/mesh/MiVolumeMeshCurvilinear.h>
00034 #include <MeshVizXLM/extrmesh/MeXSurfaceMeshUnstructured.h>
00035 #include <MeshVizXLM/tessellator/MiTessellator.h>
00036
00037 #include <Inventor/STL/vector>
00038
00039 class MiCellFilterIjk;
00040
00052 class MESHVIZXLM_EXTR_API MiCellExtractIjk : virtual public MiBaseExtractor
00053 {
00054 public:
00055
00056 virtual ~MiCellExtractIjk() {}
00057
00059
00066 static MiCellExtractIjk* getNewInstance(const MiVolumeMeshRegular& mesh, bool parallel = true, MiTessellator* tessellator=NULL);
00067 static MiCellExtractIjk* getNewInstance(const MiVolumeMeshRectilinear& mesh, bool parallel = true, MiTessellator* tessellator=NULL);
00068 static MiCellExtractIjk* getNewInstance(const MiVolumeMeshCurvilinear& mesh, bool parallel = true, MiTessellator* tessellator=NULL);
00070
00074 class triplet
00075 {
00076 public:
00077 triplet():i(0),j(0),k(0) {}
00078 triplet(size_t x, size_t y, size_t z):i(x),j(y),k(z) {}
00079 triplet(size_t v):i(v),j(v),k(v) {}
00080 size_t i;
00081 size_t j;
00082 size_t k;
00084 friend bool operator ==(const triplet &t1, const triplet &t2)
00085 { return (t1.i==t2.i && t1.j==t2.j && t1.k==t2.k);}
00087 friend bool operator <(const triplet &t1, const triplet &t2)
00088 { return (t1.i<t2.i || (t1.i==t2.i && (t1.j<t2.j || (t1.j==t2.j && t1.k<t2.k)))); }
00089 };
00090
00098 virtual const MeXSurfaceMeshUnstructured&
00099 extractCell(const std::vector<triplet>& cellIndexes, double factor, const MiCellFilterIjk* cellFilter=NULL) = 0;
00100
00108 virtual const MeXSurfaceMeshUnstructured&
00109 extractCell(double factor, const MiCellFilterIjk* cellFilter=NULL) = 0;
00110
00118 virtual const MeXScalardSetI& extractScalarSet(const MiScalardSetIjk& inputSet) = 0;
00119
00127 virtual const MeXVec3dSetI& extractVec3Set(const MiVec3dSetIjk& inputSet) = 0;
00128
00136 virtual const MeXStringSetI& extractStringSet(const MiStringSetIjk& inputSet) = 0;
00137
00141 virtual const MeXSurfaceMeshUnstructured& getExtract() const = 0;
00142
00143 };
00144
00145 #endif
00146
00147
00148