Class representing adaptive tetrahedral mesh.
|
Public Types |
| enum | { MARKED = 1 << 10,
DOMAIN_BOUNDARY = 1 << 11
} |
| | Custom flags used to mark vertices in the mesh. More...
|
| typedef std::vector< CTetraFeatures > | tSegments |
| | Vector of image features.
|
typedef mds::base::CSharedPtr<
CTetraMesh > | tSmartPtr |
| | Smart pointer type.
|
Public Member Functions |
| bool | approachEdges (bool bCheckIsotropicMinEdgeLength=false) |
| | Introduces new points lying on image edges to the mesh.
|
| virtual bool | attractVertex (vctl::MCPoint3D *pPoint) |
| | Modifies position of a given vertex.
|
| void | changeRegion (int iMinIndex, int iMaxIndex=-1, int iFinalRegion=-1) |
| | Overrides classification of all tetrahedron in a specified region.
|
| bool | checkBoundaryEdge (vctl::MCEdge *pEdge, vctl::MCVector3D *pNormal, double dThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| | Checks if a given edge is a boundary edge.
|
| bool | checkBoundaryTriangle (vctl::MCPoint3D *p0, vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, double dThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| | Checks if a given triangle forms boundary between two regions.
|
| bool | checkTetrahedronVolume (vctl::MCTetra *pTetra) |
| | Checks a tetrahedron volume.
|
| bool | classifyAdjacent (double dBThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| | Classify all non-classified tetrahedra with respect to the neighbours.
|
| void | clearTriangles () |
| | Clears the helper list of triangles.
|
| void | createTriangles (double dQuality, int iRegion=-1) |
| | Creates the helper list of triangles.
|
| void | createTriangles (double a, double b, double c, double d, int iRegion=-1) |
| | Creates the helper list of triangles.
|
| void | createTriangles (int iRegion=-1, bool bBoundary=false) |
| | Creates the helper list of triangles.
|
| | CTetraMesh () |
| | Default constructor.
|
| template<class S> |
| void | deserialize (mds::mod::CChannelSerializer< S > &Reader) |
| | Deserializes all class members the tetrahedron mesh.
|
| bool | edgeSplitting (double dOrientThreshold=DEFAULT_SPLITTING_THRESHOLD) |
| | Adaptation of the triangular mesh to the underlying volume.
|
| int | evalEdgeDistancePoint (vctl::MCPoint3D *pPoint, mds::img::CPoint3D &Normal, int iMaxDistance) |
| bool | evaluateFeatures (bool bSkipSmall=true) |
| | Evaluates features of all tetrahedra in the mesh.
|
| bool | evaluateSegmentFeatures (bool bSkipSmall=true) |
| | Evaluates features of all segments in the mesh.
|
| void | findIsolatedRegions () |
| | Identifies individual isolated regions of tetrahedra in the pre-classified mesh.
|
| double | getControlSpaceLength (vctl::MCPoint3D &p1, vctl::MCPoint3D &p2) |
| | Returns length of the edge in the control space.
|
| mds::img::CDensityVolume * | getControlSpacePtr () |
| | Returns pointer to the underlying control space volume.
|
| double | getControlSpaceValue (const mds::img::CPoint3D &Point) |
| | Returns subpixel control space value.
|
| double | getCornerMinEdgeLength () |
| | Returns the minimal edge length near corners.
|
| mds::img::CDensityVolume * | getEdgeVolumePtr () |
| | Returns pointer to the underlying edge volume.
|
| vctl::MCTri * | getFirstTriangle () |
| | Returns pointer to the first triangle in the helper list.
|
| int | getNumOfSegments () const |
| | Returns number of regions.
|
| int | getNumOfTriangles () |
| | Returns the number of triangles in the helper list.
|
| tSegments & | getSegments () |
| | Returns vector of image features.
|
| vctl::MCTriS * | getTriangles () |
| | Returns pointer to the helper list of triangles.
|
| double | getVertexNeighbourhood () |
| | Return size of a neighbourhood used to attract new vertex to an image edge.
|
| mds::img::CDensityVolume * | getVolumePtr () |
| | Returns pointer to the underlying volume.
|
| bool | init (double dThreshold=DEFAULT_INIT_THRESHOLD, tSize CellSize=DEFAULT_CELL, tSize NumOfNodes=DEFAULT_NUMBER_OF_NODES) |
| | Initializes the Delaunay triangulation.
|
| bool | isBoundaryTriangle (vctl::MCVertex *p0, vctl::MCVertex *p1, vctl::MCVertex *p2) |
| | Basic test if a given triangle forms boundary between two regions.
|
| bool | isotropicAttractVertex (vctl::MCPoint3D *pPoint) |
| | Modifies position of a given vertex.
|
| bool | isotropicEdgeSplitting (double dThreshold, bool bBoundaryEdges=false) |
| | Helper vertex position accumulator structure used by variational meshing.
|
| bool | isotropicSplitEdge (vctl::MCVertex *pV0, vctl::MCVertex *pV1, double dThreshold, tPoints &EdgePoints, tPoints &Points, bool bBoundary=false) |
| | Anisotropic splitting of a given edge.
|
| bool | isotropicSplitSubEdge (vctl::MCPoint3D &p1, vctl::MCPoint3D &p2, double dThreshold, double dRestrictedZone, tPoints &Points) |
| | Anisotropic splitting of a given edge.
|
| bool | isotropicVertexMoving () |
| | Adaptation of the mesh by means of a vertex moving.
|
| bool | markBoundaryVertices () |
| | Finds all vertices lying close to an image edge.
|
| | MDS_ENTITY_BLOCK_SIZE (4096) |
| | Standard method getEntityBlockSize().
|
| | MDS_ENTITY_COMPRESSION (mds::mod::CC_RAW) |
| | Standard method getEntityCompression().
|
| | MDS_ENTITY_NAME ("TetraMesh") |
| | Standard method getEntityName().
|
| bool | noiseReduction () |
| | Removes noisy (wrong classified) tetrahedra in the mesh.
|
| bool | optimizeByVertexMoving (double dMinQuality) |
| | Optimization of the mesh by means of a vertex moving.
|
| bool | prepareControlSpace (double dK=DEFAULT_K, double dAvgTetrahedronSize=DEFAULT_AVG_TETRA_SIZE) |
| | Makes the control space necessary for anisotropic meshing.
|
| void | reassignRegions () |
| | Eliminates unused indexes of regions shaking down all currently assigned indexes.
|
| bool | regionGrowing (CTetraSimilarityMeasure &Measure, double dBThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| | Simple region growing segmentation.
|
| bool | regionMerging (CTetraSimilarityMeasure &Measure, double dBThreshold=DEFAULT_DISTANCE_THRESHOLD, double dDeltaThreshold=DEFAULT_DELTA_THRESHOLD, tSize NumOfRegions=-1, bool bMergeAdjacent=true) |
| | Aglomerative merging of regions in the mesh.
|
| bool | saveSTL (mds::mod::CChannel &Channel) |
| | Writes the helper list of triangles to a given output channel in STL format.
|
| bool | saveVRML (mds::mod::CChannel &Channel) |
| | Writes the helper list of triangles to a given output channel in VRML format.
|
| template<class S> |
| void | serialize (mds::mod::CChannelSerializer< S > &Writer) |
| | Serializes the tetrahedron mesh.
|
| void | setControlSpace (mds::img::CDensityVolume *pControlSpace) |
| | Selection of the volume for segmentation.
|
| void | setCornerMinEdgeLength (double dValue=DEFAULT_CORNER_MIN_EDGE_LENGTH) |
| | Sets minimal allowed edge length in the triangulation near corners.
|
| void | setEdgeVolume (mds::img::CDensityVolume *pEdgeVolume) |
| | Selection of the volume for segmentation.
|
| void | setNumOfSegments (int i) |
| | Sets the number of regions.
|
| void | setVertexNeighbourhood (tSize Value=DEFAULT_VERTEX_NEIGHBOURHOOD) |
| | Sets size of a neighbourhood used to attract new vertex to an image edge.
|
| void | setVolume (mds::img::CDensityVolume *pVolume) |
| | Selection of the volume for segmentation.
|
| bool | splitEdge (vctl::MCEdge *pEdge, double dThreshold, tPoints &Points) |
| | Splits a given edge.
|
| bool | splitTetrahedron (vctl::MCTetra *pTetrahedron) |
| | Splits a given tetrahedron.
|
| bool | subpixelAttractVertex (vctl::MCPoint3D *pPoint) |
| | Modifies position of a given vertex.
|
| bool | subpixelVertexMoving () |
| | Adaptation of the mesh by means of a vertex moving.
|
| bool | tetrahedronSplitting (CTetraHomogeneityMeasure &Measure) |
| | Adaptation of the triangular mesh to the underlying volume.
|
| bool | variationalMeshing (bool bCheckIsotropicMinEdgeLength=false) |
| | Variational approach to tetrahedral isotropic meshing.
|
| void | visualize (mds::img::CDVolume *pVolume) |
| | Visualizes the triangular mesh.
|
| virtual | ~CTetraMesh () |
| | Virtual destructor.
|
Static Public Member Functions |
| static bool | checkBoundaryFacetFunc (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, vctl::MCPoint3D *p3, CDelaunayTetra *pMesh) |
| | Checks if a given facet forms boundary between two image regions.
|
| static bool | checkIsotropicMinEdgeLengthFunc (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, CDelaunayTetra *pMesh) |
| | Checks minimal edge length in the cavity.
|
| static bool | checkIsotropicMinEdgeLengthFunc2 (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, CDelaunayTetra *pMesh) |
| static bool | checkNoImageEdgeIntersectionFunc (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, CDelaunayTetra *pMesh) |
| | Checks if edge intersects any image edge.
|
| static void | edgeSplittingInsertFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| | Inserts tetrahedron edges to the list of edges.
|
| static void | edgeSplittingRemoveFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| | Inserts tetrahedron edges to the list of edges.
|
| static void | isotropicEdgeSplittingInsertFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| | Inserts tetrahedron edges to the list of edges.
|
| static void | isotropicEdgeSplittingRemoveFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| | Inserts tetrahedron edges to the list of edges.
|
| static void | tetrahedronSplittingInsertFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| | Evaluates tetrahedron homogeneity and inserts tetrahedron to the sorted queue.
|
| static void | tetrahedronSplittingRemoveFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| | Unsorts tetrahedron from the queue.
|
Static Public Attributes |
| static const double | DEFAULT_AVG_TETRA_SIZE = 30.0 |
| static const tSize | DEFAULT_CELL = 3 |
| | Default parameters.
|
| static const tSize | DEFAULT_CELL_MARGIN = 5 |
| static const double | DEFAULT_CORNER_MIN_EDGE_LENGTH = 0.5 |
| static const double | DEFAULT_DELTA_THRESHOLD = 1.5 |
| static const double | DEFAULT_DISTANCE_THRESHOLD = 1.5 |
| static const double | DEFAULT_INIT_THRESHOLD = 0.5 |
| static const double | DEFAULT_K = 1.0 |
| static const double | DEFAULT_SPLITTING_THRESHOLD = 0.5 |
| static const tSize | DEFAULT_VERTEX_NEIGHBOURHOOD = 3 |
| static const double | MIN_TETRAHEDRON_VOLUME = 2.0 |
Protected Types |
| typedef std::vector< vctl::MCPoint3D > | tPoints |
| | Vector of points.
|
Protected Attributes |
| double | m_dCornerMinEdgeLength |
| | ! Minimal edge length near corners.
|
| int | m_iNumOfSegments |
| | Number of segments in the mesh.
|
| CTetraHomogeneityMeasure * | m_pHomogeneityMeasure |
| | Currently used homogeneity measure.
|
| tSegments | m_Segments |
| | Vector of image features extracted for every region.
|
| mds::img::CDensityVolumePtr | m_spControlSpace |
| | Pointer to the control space.
|
| mds::img::CDensityVolumePtr | m_spEdgeVolume |
| | Pointer to the underlying edge volume.
|
| mds::img::CDensityVolumePtr | m_spVolume |
| | Pointer to the underlying volume.
|
| mds::tSize | m_VertexNeighbourhood |
| | Size of a neighbourhood used to attract new vertex to an image edge.
|
Friends |
| class | mds::base::CSharedPtr< CTetraMesh > |