00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MO_MESHELEVATEDPLANESLICE_
00024 #define _MO_MESHELEVATEDPLANESLICE_
00025
00026 #include <MeshVizXLM/MbVec3.h>
00027
00028 #include <MeshVizXLM/mapping/nodes/MoMeshPlaneSlice.h>
00029
00030 #include <Inventor/fields/SoSFPlane.h>
00031 #include <Inventor/fields/SoSFDouble.h>
00032
00033 #ifdef _WIN32
00034 #pragma warning(push)
00035 #pragma warning(disable:4251)
00036 #endif
00037
00073 class MESHVIZXLM_DMAP_API MoMeshElevatedPlaneSlice : public MoMeshPlaneSlice {
00074
00075 SO_NODE_HEADER( MoMeshElevatedPlaneSlice ) ;
00076
00077 public:
00078
00082 MoMeshElevatedPlaneSlice() ;
00083
00088 SoSFDouble scaleFactor;
00089
00099 SoSFInt32 elevationScalarSetId;
00100
00101
00102 private:
00103 static void initClass() ;
00104 static void exitClass() ;
00105
00106 private:
00107 virtual void doExtract( SoAction *action );
00108
00109 private:
00110 virtual ~MoMeshElevatedPlaneSlice() ;
00111
00112 template<typename _MeshInterface, typename _Extractor, typename _ScalarSet, typename _MoScalarSet, typename _CellFilter>
00113 void doExtract( SoState * state, const _MeshInterface* mesh, _Extractor** extractor );
00114
00115 template<typename _Extractor, typename _ScalarSet, typename _MoScalarSet, typename _CellFilter>
00116 void extract( SoState * state, _Extractor* extractor, const _CellFilter *cellFilter );
00117
00118 void computePlane(MbVec3d& normal, double& distance);
00119
00120
00121 MiPlaneSliceExtractUnstructured* m_planeSliceExtractU;
00122 MiPlaneSliceExtractHexahedronIjk* m_planeSliceExtractUIjk;
00123 MiPlaneSliceExtractIjk* m_planeSliceExtractIjk;
00124 } ;
00125
00126 #ifdef _WIN32
00127 #pragma warning(pop)
00128 #endif
00129
00130 #endif
00131
00132
00133
00134