iMSTK
Interactive Medical Simulation Toolkit
|
This filter cuts the triangles of a SurfaceMesh into smaller triangles using input cutting geometry. More...
#include <imstkSurfaceMeshCut.h>
Public Member Functions | |
std::shared_ptr< SurfaceMesh > | getOutputMesh () |
void | setInputMesh (std::shared_ptr< SurfaceMesh > inputSurf) |
![]() | |
void | requestUpdate () override |
Users can implement this for the logic to be run. | |
std::shared_ptr< std::map< int, int > > | getCutVertMap () |
imstkGetMacro (CutData, std::shared_ptr< std::vector< CutData >>) | |
imstkSetMacro (CutData, std::shared_ptr< std::vector< CutData >>) | |
imstkGetMacro (CutGeometry, std::shared_ptr< Geometry >) | |
imstkSetMacro (CutGeometry, std::shared_ptr< Geometry >) | |
imstkGetMacro (Epsilon, double) | |
imstkSetMacro (Epsilon, double) | |
imstkGetMacro (RemoveConstraintVertices, std::shared_ptr< std::unordered_set< size_t >>) | |
imstkGetMacro (AddConstraintVertices, std::shared_ptr< std::unordered_set< size_t >>) | |
![]() | |
std::shared_ptr< Geometry > | getInput (size_t port=0) const |
Returns input geometry given port, returns nullptr if doesn't exist. | |
std::shared_ptr< Geometry > | getOutput (size_t port=0) const |
Returns output geometry given port, returns nullptr if doesn't exist. | |
void | setInput (std::shared_ptr< Geometry > inputGeometry, size_t port=0) |
Set the input at the port. | |
void | update () |
Do the actual algorithm. | |
Protected Member Functions | |
void | refinement (std::shared_ptr< AbstractCellMesh > outputGeom, std::map< int, bool > &cutVerts) override |
Refine the mesh adding vertices and changing connectivity along the cut. More... | |
void | splitVerts (std::shared_ptr< AbstractCellMesh > outputGeom, std::map< int, bool > &cutVerts, std::shared_ptr< Geometry > cuttingGeom) override |
Split the cutting vertices, separating them into two. More... | |
std::shared_ptr< std::vector< CutData > > | generateCutData (std::shared_ptr< Geometry > cuttingGeom, std::shared_ptr< AbstractCellMesh > geomToCut) override |
Generate CutData which defines how the cut should be performed. | |
std::shared_ptr< std::vector< CutData > > | generateImplicitCutData (std::shared_ptr< AnalyticalGeometry > cuttingGeom, std::shared_ptr< SurfaceMesh > geomToCut) |
std::shared_ptr< std::vector< CutData > > | generateSurfaceMeshCutData (std::shared_ptr< SurfaceMesh > cuttingGeom, std::shared_ptr< SurfaceMesh > geomToCut) |
![]() | |
int | ptBoundarySign (const Vec3d &pt, std::shared_ptr< Geometry > geometry) |
Determine the sign of the point -1 if inside, 1 if outside, 0 if on boundary defined by epsilon. | |
template<int N> | |
bool | vertexOnBoundary (std::shared_ptr< VecDataArray< int, N >> cells, std::set< int > &cellSet) |
bool | pointProjectionInSurface (const Vec3d &pt, std::shared_ptr< SurfaceMesh > surface) |
![]() | |
void | setOutput (std::shared_ptr< Geometry > inputGeometry, const size_t port=0) |
Set the output at the port. | |
template<typename T > | |
void | setRequiredInputType (const size_t port) |
Declares the type for the port with the given number, also defines that the give port is required for the filter to run correctly. | |
template<typename T > | |
void | setOptionalInputType (const size_t port) |
Declares the type for the port with the given number, the data for this port is optional and may be omitted. | |
virtual bool | areInputsValid () |
Check inputs are correct. More... | |
void | setNumInputPorts (const size_t numPorts) |
Get/Set the amount of input ports. | |
imstkGetMacro (NumInputPorts, size_t) | |
void | setNumOutputPorts (const size_t numPorts) |
Get/Set the amount of output ports. | |
imstkGetMacro (NumOutputPorts, size_t) | |
Additional Inherited Members | |
![]() | |
using | GeometryCheck = std::function< bool(Geometry *)> |
using | TypeCheckContainer = std::unordered_map< size_t, GeometryCheck > |
![]() | |
std::shared_ptr< std::vector< CutData > > | m_CutData = nullptr |
std::shared_ptr< std::map< int, int > > | m_CutVertMap |
std::shared_ptr< Geometry > | m_CutGeometry = nullptr |
std::shared_ptr< std::unordered_set< size_t > > | m_RemoveConstraintVertices = nullptr |
std::shared_ptr< std::unordered_set< size_t > > | m_AddConstraintVertices = nullptr |
double | m_Epsilon = 0.001 |
![]() | |
TypeCheckContainer | m_requiredTypeChecks |
TypeCheckContainer | m_optionalTypeChecks |
This filter cuts the triangles of a SurfaceMesh into smaller triangles using input cutting geometry.
Definition at line 67 of file imstkSurfaceMeshCut.h.
|
overrideprotectedvirtual |
Refine the mesh adding vertices and changing connectivity along the cut.
Geometry | to cut |
vertices | on cutting path and whether they should be split |
Implements imstk::MeshCut.
Definition at line 37 of file imstkSurfaceMeshCut.cpp.
|
overrideprotectedvirtual |
Split the cutting vertices, separating them into two.
Geometry | to cut |
vertices | on cutting path and whether they should be split |
Geometry | to cut with |
Implements imstk::MeshCut.
Definition at line 201 of file imstkSurfaceMeshCut.cpp.