Logical slice extractor for a regular volume mesh. More...
#include <MeshVizXLM/extractors/MiLogicalSliceExtractRegular.h>
Public Member Functions | |
virtual | ~MiLogicalSliceExtractRegular () |
virtual const MeXSurfaceMeshRegular & | extractLogicalSlice (MiMesh::Dimension axis, size_t sliceIndex, bool upperVertex, const MiCellFilterIjk *cellFilter=NULL)=0 |
virtual const MeXDataSetIj < double > & | extractScalarSet (const MiScalardSetIjk &inputSet)=0 |
virtual const MeXDataSetIj < MbVec3d > & | extractVec3Set (const MiVec3dSetIjk &inputSet)=0 |
virtual const MeXSurfaceMeshRegular & | getExtract () const =0 |
Static Public Member Functions | |
static MiLogicalSliceExtractRegular * | getNewInstance (const MiVolumeMeshRegular &mesh, bool parallel=true) |
A logical slice is a surface extracted from a IJK volume mesh. It is defined by a slice axis, an index and a boolean flag. The slice axis can be SLICE_I, SLICE_J or SLICE_K. The index represents one of the cell id to extract. For instance,
extractLogicalSlice(SLICE_K,10,true);
extract all the cell(i,j,k) with k=10, extract the upper vertex (along the k-axis) of these cells. When a cell filter is provided, the returned surface contains dead cells.
The methods extractScalarSet() and extractVec3Set() compute a dataset that can be mapped onto the extracted surface. The new dataset is extracted from the given dataset and its size equals either the number of polygons or the number of vertices in the extracted surface. If the input dataset has a PER_CELL binding, the data of the selected cells are extracted and the size of this extracted dataset equals the number of extracted polygons.
virtual MiLogicalSliceExtractRegular::~MiLogicalSliceExtractRegular | ( | ) | [inline, virtual] |
virtual const MeXSurfaceMeshRegular& MiLogicalSliceExtractRegular::extractLogicalSlice | ( | MiMesh::Dimension | axis, | |
size_t | sliceIndex, | |||
bool | upperVertex, | |||
const MiCellFilterIjk * | cellFilter = NULL | |||
) | [pure virtual] |
Builds the topology and geometry of the logical slice at the given cell index along the given axis.
When a cell filter is provided, the returned surface may contain dead cells.
axis | the axis along which the extraction will be performed. | |
sliceIndex | the cell index along the selected axis to extract. | |
upperVertex | extract the upper vertices of the selected cells if true, the lower vertices otherwise. | |
cellFilter | the cell filter to be used to accept or reject cells. |
virtual const MeXDataSetIj<double>& MiLogicalSliceExtractRegular::extractScalarSet | ( | const MiScalardSetIjk & | inputSet | ) | [pure virtual] |
Extracts a scalar set from the original mesh. The scalars are mapped onto the current extracted mesh.
inputSet | The input scalar set defined on the original mesh. |
virtual const MeXDataSetIj<MbVec3d>& MiLogicalSliceExtractRegular::extractVec3Set | ( | const MiVec3dSetIjk & | inputSet | ) | [pure virtual] |
Extracts a vector set from the original mesh. The vectors are mapped onto the current extracted mesh.
inputSet | The input vector set defined on the original mesh. |
virtual const MeXSurfaceMeshRegular& MiLogicalSliceExtractRegular::getExtract | ( | ) | const [pure virtual] |
Returns the result of the extraction as a mesh.
static MiLogicalSliceExtractRegular* MiLogicalSliceExtractRegular::getNewInstance | ( | const MiVolumeMeshRegular & | mesh, | |
bool | parallel = true | |||
) | [static] |
Factory method returning a new instance of a class implementing this abstract class.
mesh | The input mesh | |
parallel | When true, tries to create an extract module using a parallel algorithm to speed up the extraction. |