|
| | VectorSimplification () |
| |
| void | preconditionTriangulation (AbstractTriangulation *const data) |
| |
| template<typename dataType, typename triangulationType> |
| int | buildField (const void *const vectors, const size_t vectorsMTime, const triangulationType &triangulation) |
| |
| template<typename dataType, typename triangulationType> |
| int | performSimplification (const int criticalThreshold, const bool storePlotPoints, std::vector< PlotPoint > &listOfPlotPoints, const triangulationType &triangulation) |
| |
| void | setField (ttk::dcvf::DiscreteVectorField &&dcvf) |
| | Ugly hack to avoid a call to buildField()
|
| |
| void | setFullOrbitSimplification (bool doFullOrbit) |
| |
| ttk::dcvf::DiscreteVectorField && | getField () |
| |
| template<typename dataType, typename triangulationType> |
| std::vector< std::vector< ttk::VectorSimplification::CandidatePair > > | getSaddle1ToDescPair (const std::vector< SimplexId > &criticalEdges, const triangulationType &triangulation) const |
| |
| template<typename dataType, typename triangulationType, typename GFS, typename GFSN, typename OB> |
| std::vector< std::vector< ttk::VectorSimplification::CandidatePair > > | getSaddle2ToAscPair (const std::vector< SimplexId > &criticalCells, const GFS &getFaceStar, const GFSN &getFaceStarNumber, const OB &isOnBoundary, const triangulationType &triangulation, const dataType dummyVariable) const |
| |
| | 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) |
| |
|
| template<typename dataType, typename triangulationType> |
| std::vector< std::vector< CandidatePair > > | getSaddle1ToDescPair (const std::vector< SimplexId > &criticalEdges, const triangulationType &triangulation) const |
| | Follow the descending 1-separatrices to compute the saddles -> extrema association.
|
| |
| template<typename dataType, typename triangulationType, typename GFS, typename GFSN, typename OB> |
| std::vector< std::vector< CandidatePair > > | getSaddle2ToAscPair (const std::vector< SimplexId > &criticalCells, const GFS &getFaceStar, const GFSN &getFaceStarNumber, const OB &isOnBoundary, const triangulationType &triangulation, const dataType dummyVariable) const |
| | Follow the ascending 1-separatrices to compute the saddles -> extrema association.
|
| |
| template<typename dataType, typename triangulationType> |
| void | getDescSaddlePairs (std::vector< CandidatePair > &pairs, const std::vector< SimplexId > &criticalEdges, const triangulationType &triangulation) const |
| | Compute the candidate pairs from descending paths from saddles.
|
| |
| template<typename dataType, typename triangulationType> |
| void | getAscSaddlePairs (std::vector< CandidatePair > &pairs, const std::vector< SimplexId > &criticalSaddles, const triangulationType &triangulation) const |
| | Compute the candidate pairs from ascending paths from saddles.
|
| |
| bool | isAlternatingVpath (std::vector< Cell > &vpath) |
| | Determine if the VPath has 'alternating' behavior of dimension ex: 0-1 to 1-2.
|
| |
| void | displayStats (const std::vector< CandidatePair > &pairs, const std::array< std::vector< SimplexId >, 4 > &criticalCellsByDim, const std::vector< bool > &pairedMinima, const std::vector< bool > &paired1Saddles, const std::vector< bool > &paired2Saddles, const std::vector< bool > &pairedMaxima) const |
| | Print number of pairs, critical cells per dimension & unpaired cells.
|
| |
| 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) |
| |
TTK VectorSimplification processing package.
- Author
- Tanner Finken finke.nosp@m.nt@a.nosp@m.rizon.nosp@m.a.ed.nosp@m.u
-
Josh A. Levine josh@.nosp@m.cs.a.nosp@m.rizon.nosp@m.a.ed.nosp@m.u
- Date
- November 2024.
VectorSimplification computes a Weight Curve by using the Discrete Morse-Theory DiscreteVectorField simplification with flipping paths based on the lowest weight value. The implementation is slightly different than described in the paper as this will 'shortcut' the saddle-orbit cancellation pairs by tracing through the orbit by flipping dimensionality (e.g. 0-1 to 1-2 V-Path) and either including the orbit or not depending on the given flag.
Related publication
"Localized Evaluation for Constructing Discrete Vector Fields"
Tanner Finken, Julien Tierny, Joshua A. Levine
IEEE Vis 2024.
Additionally, a large portion of the tracing code has been adapted from ttk::DiscreteMorseSandwich.
- See also
- ttk::DiscreteMorseSandwich
-
ttk::dcvf::DiscreteVectorField
Online examples:
Definition at line 44 of file VectorSimplification.h.