TTK VTK-filter that efficiently computes the Reeb space of bivariate volumetric data.
More...
|
virtual const char * | GetClassName () |
|
virtual int | IsA (const char *type) |
|
virtual bool | GetForceInputOffsetScalarField () |
|
virtual void | SetForceInputOffsetScalarField (bool) |
|
virtual bool | GetUseOctreeAcceleration () |
|
virtual void | SetUseOctreeAcceleration (bool) |
|
virtual bool | GetZeroSheetId () |
|
virtual void | SetZeroSheetId (bool) |
|
virtual bool | GetZeroSheetType () |
|
virtual void | SetZeroSheetType (bool) |
|
virtual bool | GetZeroSheetValue () |
|
virtual void | SetZeroSheetValue (bool) |
|
virtual bool | GetZeroSheetVertexId () |
|
virtual void | SetZeroSheetVertexId (bool) |
|
virtual bool | GetOneSheetId () |
|
virtual void | SetOneSheetId (bool) |
|
virtual bool | GetOneSheetType () |
|
virtual void | SetOneSheetType (bool) |
|
virtual bool | GetOneSheetValue () |
|
virtual void | SetOneSheetValue (bool) |
|
virtual bool | GetOneSheetVertexId () |
|
virtual void | SetOneSheetVertexId (bool) |
|
virtual bool | GetOneSheetEdgeId () |
|
virtual void | SetOneSheetEdgeId (bool) |
|
virtual bool | GetTwoSheets () |
|
virtual void | SetTwoSheets (bool) |
|
virtual bool | GetTwoSheetCaseId () |
|
virtual void | SetTwoSheetCaseId (bool) |
|
virtual bool | GetTwoSheetValue () |
|
virtual void | SetTwoSheetValue (bool) |
|
virtual bool | GetTwoSheetParameterization () |
|
virtual void | SetTwoSheetParameterization (bool) |
|
virtual bool | GetTwoSheetId () |
|
virtual void | SetTwoSheetId (bool) |
|
virtual bool | GetTwoSheetEdgeId () |
|
virtual void | SetTwoSheetEdgeId (bool) |
|
virtual bool | GetTwoSheetTetId () |
|
virtual void | SetTwoSheetTetId (bool) |
|
virtual bool | GetTwoSheetEdgeType () |
|
virtual void | SetTwoSheetEdgeType (bool) |
|
virtual bool | GetThreeSheetTetNumber () |
|
virtual void | SetThreeSheetTetNumber (bool) |
|
virtual bool | GetThreeSheetVertexNumber () |
|
virtual void | SetThreeSheetVertexNumber (bool) |
|
virtual bool | GetThreeSheetExpansion () |
|
virtual void | SetThreeSheetExpansion (bool) |
|
virtual bool | GetThreeSheetDomainVolume () |
|
virtual void | SetThreeSheetDomainVolume (bool) |
|
virtual bool | GetThreeSheetRangeArea () |
|
virtual void | SetThreeSheetRangeArea (bool) |
|
virtual bool | GetThreeSheetHyperVolume () |
|
virtual void | SetThreeSheetHyperVolume (bool) |
|
virtual double | GetSimplificationThreshold () |
|
virtual void | SetSimplificationThreshold (double) |
|
virtual int | GetSimplificationCriterion () |
|
virtual void | SetSimplificationCriterion (int) |
|
void | UpdateThreadNumber () |
|
void | SetThreadNumber (int threadNumber) |
|
void | SetUseAllCores (bool useAllCores) |
|
void | SetDebugLevel (int debugLevel) |
|
void | SetCompactTriangulationCacheSize (float cacheSize) |
|
vtkDataArray * | GetOptionalArray (const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, const int &inputPort=0) |
|
vtkDataArray * | GetOrderArray (vtkDataSet *const inputData, const int scalarArrayIdx, ttk::Triangulation *triangulation, const bool getGlobalOrder=false, const int orderArrayIdx=0, const bool enforceOrderArrayIdx=false) |
|
vtkDataArray * | checkForGlobalAndComputeOrderArray (vtkDataSet *const inputData, vtkDataArray *scalarArray, const int scalarArrayIdx, const bool getGlobalOrder, vtkDataArray *orderArray, ttk::Triangulation *triangulation, const bool enforceOrderArrayIdx) |
|
vtkDataArray * | ComputeOrderArray (vtkDataSet *const inputData, vtkDataArray *scalarArray, const int scalarArrayIdx, const bool getGlobalOrder, vtkDataArray *oldOrderArray, ttk::Triangulation *triangulation) |
|
ttk::SimplexId * | GetIdentifierArrayPtr (const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, std::vector< ttk::SimplexId > &spareStorage, const int inputPort=0, const bool printErr=true) |
|
ttk::Triangulation * | GetTriangulation (vtkDataSet *dataSet) |
|
int | ProcessRequest (vtkInformation *request, vtkInformationVector **inputVectors, vtkInformationVector *outputVector) override |
|
vtkDataSet * | GetOutput () |
|
vtkDataSet * | GetOutput (int) |
|
void | SetInputData (vtkDataSet *) |
|
void | SetInputData (int, vtkDataSet *) |
|
void | AddInputData (vtkDataSet *) |
|
void | AddInputData (int, vtkDataSet *) |
|
template<typename inputType > |
int | checkEmptyMPIInput (inputType *input) |
| This method tests whether the input is a nullptr. If the computation is being done on multiple processes, it is possible that the domain of one process or more is empty, but not others, therefore in that particular case the rest of the filter will not be computed but an error message will not be sent.
|
|
| Debug () |
|
| ~Debug () override |
|
virtual int | setDebugLevel (const int &debugLevel) |
|
int | setWrapper (const Wrapper *wrapper) override |
|
int | printMsg (const std::string &msg, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::vector< std::string > &msgs, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printErr (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const |
|
int | printWrn (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const |
|
int | printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const double &memory, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const double &time, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::vector< std::vector< std::string > > &rows, const debug::Priority &priority=debug::Priority::INFO, const bool hasHeader=true, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const |
|
int | printMsg (const debug::Separator &separator, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const |
|
void | setDebugMsgPrefix (const std::string &prefix) |
|
| BaseClass () |
|
virtual | ~BaseClass ()=default |
|
int | getThreadNumber () const |
|
virtual int | setThreadNumber (const int threadNumber) |
|
|
| ttkReebSpace () |
|
int | FillInputPortInformation (int port, vtkInformation *info) override |
|
int | FillOutputPortInformation (int port, vtkInformation *info) override |
|
int | RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override |
|
template<class dataTypeU , class dataTypeV > |
int | dispatch (const dataTypeU *const uField, const dataTypeV *const vField, ttk::Triangulation *const triangulation) |
|
| ttkAlgorithm () |
|
| ~ttkAlgorithm () override |
|
void | MPIGhostPipelinePreconditioning (vtkDataSet *input) |
|
void | MPIPipelinePreconditioning (vtkDataSet *input, std::vector< int > &neighbors, std::map< int, int > &neighToId, ttk::Triangulation *triangulation=nullptr) |
|
bool | checkGlobalIdValidity (ttk::LongSimplexId *globalIds, ttk::SimplexId simplexNumber, unsigned char *ghost, int *rankArray) |
|
int | GenerateGlobalIds (vtkDataSet *input, std::unordered_map< ttk::SimplexId, ttk::SimplexId > &vertGtoL, std::vector< int > &neighborRanks, std::map< int, int > &neighborsToId) |
|
void | MPITriangulationPreconditioning (ttk::Triangulation *triangulation, vtkDataSet *input) |
|
virtual int | RequestDataObject (vtkInformation *request, vtkInformationVector **inputVectors, vtkInformationVector *outputVector) |
|
virtual int | RequestInformation (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestUpdateTime (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestUpdateTimeDependentInformation (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestUpdateExtent (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestDataNotGenerated (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestData (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
int | FillInputPortInformation (int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override |
|
int | FillOutputPortInformation (int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override |
|
int | printMsgInternal (const std::string &msg, const std::string &right, const std::string &filler, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsgInternal (const std::string &msg, const debug::Priority &priority, const debug::LineMode &lineMode, std::ostream &stream=std::cout) const |
|
int | welcomeMsg (std::ostream &stream) |
|
template<typename triangulationType > |
int | compute1sheetsOnly (const std::vector< std::pair< SimplexId, char > > &jacobiSet, std::vector< std::pair< SimplexId, SimplexId > > &jacobiSetClassification, const triangulationType &triangulation) |
|
template<typename triangulationType > |
int | compute1sheets (const std::vector< std::pair< SimplexId, char > > &jacobiSet, std::vector< std::pair< SimplexId, SimplexId > > &jacobiSetClassification, const triangulationType &triangulation) |
|
template<class dataTypeU , class dataTypeV , typename triangulationType > |
int | compute2sheets (const std::vector< std::pair< SimplexId, SimplexId > > &jacobiEdges, const dataTypeU *const uField, const dataTypeV *const vField, const triangulationType &triangulation) |
|
template<class dataTypeU , class dataTypeV , typename triangulationType > |
int | compute2sheetChambers (const dataTypeU *const uField, const dataTypeV *const vField, const triangulationType &triangulation) |
|
template<typename triangulationType > |
int | compute3sheet (const SimplexId &vertexId, const std::vector< std::vector< std::array< SimplexId, 3 > > > &tetTriangles, const triangulationType &triangulation) |
|
template<typename triangulationType > |
int | compute3sheets (std::vector< std::vector< std::array< SimplexId, 3 > > > &tetTriangles, const triangulationType &triangulation) |
|
template<class dataTypeU , class dataTypeV , typename triangulationType > |
int | computeGeometricalMeasures (Sheet3 &sheet, const dataTypeU *const uField, const dataTypeV *const vField, const triangulationType &triangulation) |
|
int | connect3sheetTo0sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &sheet0Id) |
|
int | connect3sheetTo1sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &sheet1Id) |
|
int | connect3sheetTo2sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &sheet2Id) |
|
int | connect3sheetTo3sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &otherSheet3Id) |
|
template<typename triangulationType > |
int | connectSheets (const triangulationType &triangulation) |
|
int | disconnect1sheetFrom0sheet (ReebSpaceData &data, const SimplexId &sheet1Id, const SimplexId &sheet0Id, const SimplexId &biggerId) |
|
int | disconnect3sheetFrom0sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &sheet0Id) |
|
template<typename triangulationType > |
int | disconnect3sheetFrom1sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &sheet1Id, const SimplexId &biggerId, const triangulationType &triangulation) |
|
int | disconnect3sheetFrom2sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &sheet2Id) |
|
int | disconnect3sheetFrom3sheet (ReebSpaceData &data, const SimplexId &sheet3Id, const SimplexId &other3SheetId) |
|
template<typename triangulationType > |
int | flush (const triangulationType &triangulation) |
|
template<typename triangulationType > |
int | mergeSheets (const SimplexId &smallerId, const SimplexId &biggerId, const triangulationType &triangulation) |
|
int | preMergeSheets (const SimplexId &sheetId0, const SimplexId &sheetId1) |
|
int | prepareSimplification () |
|
int | printConnectivity (const ReebSpaceData &data) const |
|
template<typename triangulationType > |
int | simplifySheets (const double &simplificationThreshold, const SimplificationCriterion &simplificationCriterion, const triangulationType &triangulation) |
|
template<typename triangulationType > |
int | simplifySheet (const SimplexId &sheetId, const SimplificationCriterion &simplificationCriterion, const triangulationType &triangulation) |
|
| ReebSpace () |
|
bool | empty () const |
|
template<class dataTypeU , class dataTypeV , typename triangulationType > |
int | execute (const dataTypeU *const uField, const dataTypeV *const vField, const triangulationType &triangulation) |
|
const Sheet0 * | get0sheet (const SimplexId &sheetId) const |
|
const Sheet1 * | get1sheet (const SimplexId &sheetId) const |
|
const Sheet2 * | get2sheet (const SimplexId &sheetId) const |
|
const Sheet3 * | get3sheet (const SimplexId &sheetId) const |
|
const std::vector< SimplexId > * | get0sheetSegmentation () const |
|
const std::vector< SimplexId > * | get1sheetSegmentation () const |
|
const std::vector< SimplexId > * | get3sheetVertexSegmentation () const |
|
const std::vector< SimplexId > * | get3sheetTetSegmentation () const |
|
const std::vector< char > * | getEdgeTypes () const |
|
const std::vector< FiberSurface::Vertex > * | getFiberSurfaceVertices () const |
|
int | getJacobi2Edge (const SimplexId &jacobiEdgeId) const |
|
SimplexId | getNumberOf2sheets () const |
|
template<class dataTypeU , class dataTypeV > |
int | perturb (const dataTypeU *const uField, const dataTypeV *const vField, const dataTypeU &uEpsilon=Geometry::powIntTen(-DBL_DIG), const dataTypeV &vEpsilon=Geometry::powIntTen(-DBL_DIG)) |
|
void | setExpand3Sheets (const bool &onOff) |
|
bool | setRangeDrivenOctree (const bool &onOff) |
|
void | setSosOffsetsU (const SimplexId *const sosOffsetsU) |
|
void | setSosOffsetsV (const SimplexId *const sosOffsetsV) |
|
void | setTetNumber (const SimplexId &tetNumber) |
|
void | setVertexNumber (const SimplexId &vertexNumber) |
|
int | preconditionTriangulation (AbstractTriangulation *const triangulation) |
|
template<class dataTypeU , class dataTypeV , typename triangulationType > |
int | simplify (const dataTypeU *const uField, const dataTypeV *const vField, const triangulationType &triangulation, const double &simplificationThreshold, const SimplificationCriterion &criterion=SimplificationCriterion::rangeArea) |
|
TTK VTK-filter that efficiently computes the Reeb space of bivariate volumetric data.
- Author
- Julien Tierny julie.nosp@m.n.ti.nosp@m.erny@.nosp@m.lip6.nosp@m..fr
- Date
- October 2015.
The Reeb space is a useful topological abstraction of bivariate scalar fields for data segmentation purposes. Intuitively, it allows the automatic separation of volumetric regions that project to the same areas in the range. This class also implements a simplification heuristic for progressive coarsening. Used in conjunction with continuous scatterplots, this class enables continuous scattterplot peeling for instance.
The input data must be provided as two independent point data scalar fields defined on the geometry.
- Warning
- Only tetrahedral meshes are supported.
- Parameters
-
Input | Input bivariate data (vtkUnstructuredGrid) |
Output0 | Output 0-sheets (vtkUnstructuredGrid) |
Output1 | Output 1-sheets (vtkUnstructuredGrid) |
Output2 | Output 2-sheets (vtkUnstructuredGrid) |
Output3 | Output 3-sheets (vtkUnstructuredGrid) |
This filter can be used as any other VTK filter (for instance, by using the sequence of calls SetInputData(), Update(), GetOutput()).
The input data arrays needs to be specified via the standard VTK call vtkAlgorithm::SetInputArrayToProcess() with the following parameters:
- Parameters
-
idx | 0 for the U Component, 1 for the V Component |
port | 0 (FIXED: first port) |
connection | 0 (FIXED: first connection) |
fieldAssociation | 0 (FIXED: point data) |
arrayName | (DYNAMIC: string identifier of the input array) |
The optional offset arrays can be specified via the standard VTK call vtkAlgorithm::SetInputArrayToProcess() with the following parameters:
- Parameters
-
idx | 2 for the U Offset Field, 3 for the V Offset Field |
port | 0 (FIXED: first port) |
connection | 0 (FIXED: first connection) |
fieldAssociation | 0 (FIXED: point data) |
arrayName | (DYNAMIC: string identifier of the offset array) |
- Note
- : To use this optional array,
ForceInputOffsetScalarField
needs to be enabled with the setter ‘setForceInputOffsetScalarField()’.
See the related ParaView example state files for usage examples within a VTK pipeline.
Related publication
"Jacobi Fiber Surfaces for Bivariate Reeb Space Computation"
Julien Tierny, Hamish Carr
Proc. of IEEE VIS 2016.
IEEE Transactions on Visualization and Computer Graphics, 2016.
- See also
- vtkContinuousScatterplot
-
vtkJacobiSet
-
vtkFiberSurface
-
vtkRangePolygon
-
ttk::ReebSpace
Definition at line 76 of file ttkReebSpace.h.