TTK
|
TTK processing package that computes fiber surfaces. More...
#include <FiberSurface.h>
Classes | |
struct | IntersectionTriangle |
struct | Triangle |
struct | Vertex |
Public Member Functions | |
FiberSurface () | |
template<class dataTypeU , class dataTypeV , typename triangulationType > | |
int | computeContour (const std::pair< double, double > &rangePoint0, const std::pair< double, double > &rangePoint1, const std::vector< SimplexId > &seedTetList, const triangulationType *const triangulation, const SimplexId &polygonEdgeId=0) const |
template<class dataTypeU , class dataTypeV > | |
int | computeContour (const std::vector< std::pair< std::pair< double, double >, std::pair< double, double > > > &edgeList, const std::vector< SimplexId > &seedTetList, const std::vector< SimplexId > *edgeIdList=nullptr) const |
template<class dataTypeU , class dataTypeV , typename triangulationType > | |
int | computeSurface (const std::pair< double, double > &rangePoint0, const std::pair< double, double > &rangePoint1, const triangulationType *const triangulation, const SimplexId &polygonEdgeId=0) const |
template<class dataTypeU , class dataTypeV , typename triangulationType > | |
int | computeSurface (const triangulationType *const triangulation) |
template<class dataTypeU , class dataTypeV > | |
int | finalize (const bool &mergeDuplicatedVertices=false, const bool &removeSmallEdges=false, const bool &edgeFlips=false, const bool &intersectionRemesh=false) |
template<class dataTypeU , class dataTypeV , typename triangulationType > | |
int | processTetrahedron (const SimplexId &tetId, const std::pair< double, double > &rangePoint0, const std::pair< double, double > &rangePoint1, const triangulationType *const triangulation, const SimplexId &polygonEdgeId=0) const |
int | setGlobalVertexList (std::vector< Vertex > *globalList) |
int | setInputField (const void *uField, const void *vField) |
int | setPointMerging (const bool &onOff) |
int | setPointMergingThreshold (const double &threshold) |
int | setPointNumber (const SimplexId &number) |
int | setPointSet (const float *pointSet) |
int | setPolygon (const std::vector< std::pair< std::pair< double, double >, std::pair< double, double > > > *polygon) |
int | setPolygonEdgeNumber (const SimplexId &polygonEdgeNumber) |
int | setTetList (const SimplexId *tetList) |
int | setTetNeighbors (const std::vector< std::vector< SimplexId > > *tetNeighbors) |
int | setTetNumber (const SimplexId &tetNumber) |
int | setTriangleList (const SimplexId &polygonEdgeId, std::vector< Triangle > *triangleList) |
void | preconditionTriangulation (AbstractTriangulation *triangulation) |
int | setVertexList (const SimplexId &polygonEdgeId, std::vector< Vertex > *vertexList) |
![]() | |
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) |
Protected Member Functions | |
template<class dataTypeU , class dataTypeV , typename triangulationType > | |
int | computeBaseTriangle (const SimplexId &tetId, const SimplexId &localEdgeId0, const double &t0, const double &u0, const double &v0, const SimplexId &localEdgeId1, const double &t1, const double &u1, const double &v1, const SimplexId &localEdgeId2, const double &t2, const double &u2, const double &v2, std::array< std::array< double, 3 >, 3 > &basePoints, std::array< std::pair< double, double >, 3 > &basePointProjections, std::array< double, 3 > &basePointParameterization, std::array< std::pair< SimplexId, SimplexId >, 3 > &baseEdges, const triangulationType *const triangulation) const |
template<class dataTypeU , class dataTYpeV , typename triangulationType > | |
int | computeCase0 (const SimplexId &polygonEdgeId, const SimplexId &tetId, const SimplexId &localEdgeId0, const double &t0, const double &u0, const double &v0, const SimplexId &localEdgeId1, const double &t1, const double &u1, const double &v1, const SimplexId &localEdgeId2, const double &t2, const double &u2, const double &v2, const triangulationType *const triangulation) const |
template<class dataTypeU , class dataTYpeV , typename triangulationType > | |
int | computeCase1 (const SimplexId &polygonEdgeId, const SimplexId &tetId, const SimplexId &localEdgeId0, const double &t0, const double &u0, const double &v0, const SimplexId &localEdgeId1, const double &t1, const double &u1, const double &v1, const SimplexId &localEdgeId2, const double &t2, const double &u2, const double &v2, const triangulationType *const triangulation) const |
template<class dataTypeU , class dataTYpeV , typename triangulationType > | |
int | computeCase2 (const SimplexId &polygonEdgeId, const SimplexId &tetId, const SimplexId &localEdgeId0, const double &t0, const double &u0, const double &v0, const SimplexId &localEdgeId1, const double &t1, const double &u1, const double &v1, const SimplexId &localEdgeId2, const double &t2, const double &u2, const double &v2, const triangulationType *const triangulation) const |
template<class dataTypeU , class dataTYpeV , typename triangulationType > | |
int | computeCase3 (const SimplexId &polygonEdgeId, const SimplexId &tetId, const SimplexId &localEdgeId0, const double &t0, const double &u0, const double &v0, const SimplexId &localEdgeId1, const double &t1, const double &u1, const double &v1, const SimplexId &localEdgeId2, const double &t2, const double &u2, const double &v2, const triangulationType *const triangulation) const |
template<class dataTypeU , class dataTYpeV , typename triangulationType > | |
int | computeCase4 (const SimplexId &polygonEdgeId, const SimplexId &tetId, const SimplexId &localEdgeId0, const double &t0, const double &u0, const double &v0, const SimplexId &localEdgeId1, const double &t1, const double &u1, const double &v1, const SimplexId &localEdgeId2, const double &t2, const double &u2, const double &v2, const triangulationType *const triangulation) const |
int | computeTriangleFiber (const SimplexId &tetId, const SimplexId &triangleId, const std::pair< double, double > &intersection, const std::vector< std::vector< IntersectionTriangle > > &tetIntersections, std::array< double, 3 > &pA, std::array< double, 3 > &pB, SimplexId &pivotVertexId, bool &edgeFiber) const |
int | computeTriangleIntersection (const SimplexId &tetId, const SimplexId &triangleId0, const SimplexId &triangleId1, const SimplexId &polygonEdgeId0, const SimplexId &polygonEdgeId1, const std::pair< double, double > &intersection, SimplexId &newVertexNumber, SimplexId &newTriangleNumber, std::vector< std::vector< IntersectionTriangle > > &tetIntersections, std::vector< std::vector< Vertex > > &tetNewVertices) const |
int | computeTriangleIntersection (const SimplexId &tetId, const SimplexId &triangleId, const SimplexId &polygonEdgeId, const std::pair< double, double > &intersection, const std::array< double, 3 > &pA, const std::array< double, 3 > &pB, const SimplexId &pivotVertexId, SimplexId &newVertexNumber, SimplexId &newTriangleNumber, std::vector< std::vector< IntersectionTriangle > > &tetIntersections, std::vector< std::vector< Vertex > > &tetNewVertices) const |
int | createNewIntersectionTriangle (const SimplexId &tetId, const SimplexId &triangleId, const SimplexId &vertexId0, const SimplexId &vertexId1, const SimplexId &vertexId2, const std::vector< std::vector< Vertex > > &tetNewVertices, SimplexId &newTriangleNumber, std::vector< std::vector< IntersectionTriangle > > &tetIntersections, const std::pair< double, double > *intersection=nullptr) const |
int | flipEdges () const |
int | flipEdges (std::vector< std::pair< SimplexId, SimplexId > > &triangles) const |
int | getNumberOfCommonVertices (const SimplexId &tetId, const SimplexId &triangleId0, const SimplexId &triangleId1, const std::vector< std::vector< IntersectionTriangle > > &tetIntersections) const |
int | getTriangleRangeExtremities (const SimplexId &tetId, const SimplexId &triangleId, const std::vector< std::vector< IntersectionTriangle > > &tetIntersections, std::pair< double, double > &extremity0, std::pair< double, double > &extremity1) const |
bool | hasDuplicatedVertices (const double *p0, const double *p1, const double *p2) const |
int | interpolateBasePoints (const std::array< double, 3 > &p0, const std::pair< double, double > &uv0, const double &t0, const std::array< double, 3 > &p1, const std::pair< double, double > &uv1, const double &t1, const double &t, Vertex &v) const |
bool | isEdgeAngleCollapsible (const SimplexId &source, const SimplexId &destination, const SimplexId &pivotVertexId, const std::vector< std::pair< SimplexId, SimplexId > > &starNeighbors) const |
bool | isEdgeFlippable (const SimplexId &edgeVertexId0, const SimplexId &edgeVertexId1, const SimplexId &otherVertexId0, const SimplexId &otherVertexId1) const |
bool | isIntersectionTriangleColinear (const SimplexId &tetId, const SimplexId &triangleId, const std::vector< std::vector< IntersectionTriangle > > &tetIntersections, const std::vector< std::vector< Vertex > > &tetNewVertices, const SimplexId &vertexId0, const SimplexId &vertexId1, const SimplexId &vertexId2) const |
int | mergeEdges (const double &distanceThreshold) const |
int | mergeVertices (const double &distanceThreshold) const |
template<class dataTypeU , class dataTypeV > | |
int | remeshIntersections () const |
int | snapToBasePoint (const std::vector< std::vector< double > > &basePoints, const std::vector< std::pair< double, double > > &uv, const std::vector< double > &t, Vertex &v) const |
int | snapVertexBarycentrics () const |
int | snapVertexBarycentrics (const SimplexId &tetId, const std::vector< std::pair< SimplexId, SimplexId > > &triangles) const |
![]() | |
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) |
Protected Attributes | |
bool | pointSnapping_ {false} |
SimplexId | pointNumber_ {} |
SimplexId | tetNumber_ {} |
SimplexId | polygonEdgeNumber_ {} |
const void * | uField_ {} |
const void * | vField_ {} |
const float * | pointSet_ {} |
const SimplexId * | tetList_ {} |
const std::vector< std::vector< SimplexId > > * | tetNeighbors_ {} |
std::array< SimplexId, 12 > | edgeImplicitEncoding_ |
double | edgeCollapseThreshold_ {Geometry::powIntTen(-FLT_DIG + 2)} |
double | pointSnappingThreshold_ {Geometry::powIntTen(-FLT_DIG + 1)} |
const std::vector< std::pair< std::pair< double, double >, std::pair< double, double > > > * | polygon_ {} |
std::vector< Vertex > * | globalVertexList_ {} |
std::vector< std::vector< Vertex > * > | polygonEdgeVertexLists_ {} |
std::vector< std::vector< Triangle > * > | polygonEdgeTriangleLists_ {} |
![]() | |
int | debugLevel_ |
std::string | debugMsgPrefix_ |
std::string | debugMsgNamePrefix_ |
![]() | |
bool | lastObject_ |
int | threadNumber_ |
Wrapper * | wrapper_ |
Additional Inherited Members | |
![]() | |
static COMMON_EXPORTS debug::LineMode | lastLineMode = ttk::debug::LineMode::NEW |
TTK processing package that computes fiber surfaces.
Fiber surfaces are defined as the pre-images of curves drawn in the range of bivariate volumetric functions, typically on top of the continuous scatterplot. Fiber surfaces generalize the segmentation features of isosurfaces to bivariate data. This TTK processing package implements an exact, parallel and fast algorithm for fiber surface computation on (explicit or implicit) tetrahedral meshes.
Related publication
"Fast and Exact Fiber Surface Extraction for Tetrahedral Meshes"
Pavol Klacansky, Julien Tierny, Hamish Carr, Zhao Geng
IEEE Transactions on Visualization and Computer Graphics, 2016.
dataTypeU | Data type of the input first component field (char, float, etc.) |
dataTypeV | Data type of the input second component field (char, float, etc.) |
Online examples:
Definition at line 49 of file FiberSurface.h.
FiberSurface::FiberSurface | ( | ) |
Definition at line 11 of file FiberSurface.cpp.
|
inlineprotected |
Definition at line 536 of file FiberSurface.h.
|
inlineprotected |
Definition at line 656 of file FiberSurface.h.
|
inlineprotected |
Definition at line 801 of file FiberSurface.h.
|
inlineprotected |
Definition at line 991 of file FiberSurface.h.
|
inlineprotected |
Definition at line 1165 of file FiberSurface.h.
|
inlineprotected |
Definition at line 1306 of file FiberSurface.h.
|
inline |
Definition at line 1477 of file FiberSurface.h.
|
inline |
Definition at line 1541 of file FiberSurface.h.
|
inline |
Definition at line 1624 of file FiberSurface.h.
|
inline |
Definition at line 1666 of file FiberSurface.h.
|
protected |
Definition at line 54 of file FiberSurface.cpp.
|
protected |
Definition at line 330 of file FiberSurface.cpp.
|
protected |
Definition at line 189 of file FiberSurface.cpp.
|
protected |
Definition at line 528 of file FiberSurface.cpp.
|
inline |
Definition at line 1771 of file FiberSurface.h.
|
protected |
Definition at line 600 of file FiberSurface.cpp.
|
protected |
Definition at line 642 of file FiberSurface.cpp.
|
protected |
Definition at line 15 of file FiberSurface.cpp.
|
protected |
Definition at line 874 of file FiberSurface.cpp.
|
protected |
Definition at line 945 of file FiberSurface.cpp.
|
protected |
Definition at line 961 of file FiberSurface.cpp.
|
protected |
Definition at line 984 of file FiberSurface.cpp.
|
protected |
Definition at line 1030 of file FiberSurface.cpp.
|
inlineprotected |
Definition at line 430 of file FiberSurface.h.
|
protected |
Definition at line 1067 of file FiberSurface.cpp.
|
protected |
Definition at line 1276 of file FiberSurface.cpp.
|
inline |
Definition at line 202 of file FiberSurface.h.
|
inline |
Definition at line 1836 of file FiberSurface.h.
|
inlineprotected |
Definition at line 2348 of file FiberSurface.h.
|
inline |
Definition at line 126 of file FiberSurface.h.
|
inline |
Definition at line 131 of file FiberSurface.h.
|
inline |
Definition at line 139 of file FiberSurface.h.
|
inline |
Definition at line 144 of file FiberSurface.h.
|
inline |
Definition at line 149 of file FiberSurface.h.
|
inline |
Definition at line 154 of file FiberSurface.h.
|
inline |
Definition at line 159 of file FiberSurface.h.
|
inline |
Definition at line 166 of file FiberSurface.h.
|
inline |
Definition at line 173 of file FiberSurface.h.
|
inline |
Definition at line 179 of file FiberSurface.h.
|
inline |
Definition at line 184 of file FiberSurface.h.
|
inline |
Definition at line 189 of file FiberSurface.h.
|
inline |
Definition at line 209 of file FiberSurface.h.
|
protected |
Definition at line 1550 of file FiberSurface.cpp.
|
protected |
Definition at line 1582 of file FiberSurface.cpp.
|
protected |
Definition at line 1616 of file FiberSurface.cpp.
|
protected |
Definition at line 490 of file FiberSurface.h.
|
protected |
Definition at line 487 of file FiberSurface.h.
|
protected |
Definition at line 496 of file FiberSurface.h.
|
protected |
Definition at line 482 of file FiberSurface.h.
|
protected |
Definition at line 484 of file FiberSurface.h.
|
protected |
Definition at line 480 of file FiberSurface.h.
|
protected |
Definition at line 491 of file FiberSurface.h.
|
protected |
Definition at line 494 of file FiberSurface.h.
|
protected |
Definition at line 482 of file FiberSurface.h.
|
protected |
Definition at line 498 of file FiberSurface.h.
|
protected |
Definition at line 497 of file FiberSurface.h.
|
protected |
Definition at line 485 of file FiberSurface.h.
|
protected |
Definition at line 486 of file FiberSurface.h.
|
protected |
Definition at line 482 of file FiberSurface.h.
|
protected |
Definition at line 483 of file FiberSurface.h.
|
protected |
Definition at line 483 of file FiberSurface.h.