iMSTK
Interactive Medical Simulation Toolkit
Public Member Functions | List of all members
imstk::VolumetricMesh< N > Class Template Reference

Base class for all volume mesh types. More...

#include <imstkVolumetricMesh.h>

Inheritance diagram for imstk::VolumetricMesh< N >:
Inheritance graph
[legend]
Collaboration diagram for imstk::VolumetricMesh< N >:
Collaboration graph
[legend]

Public Member Functions

virtual std::shared_ptr< SurfaceMeshextractSurfaceMesh ()
 Compute the conforming surface mesh.
 
- Public Member Functions inherited from imstk::CellMesh< N >
void initialize (std::shared_ptr< VecDataArray< double, 3 >> vertices, std::shared_ptr< VecDataArray< int, N >> indices)
 Initializes the rest of the data structures given vertex positions and connectivity.
 
int getCellVertexCount () const override
 Number of verticies associated with the cell type.
 
void clear () override
 Clears all the mesh data.
 
void computeVertexToCellMap () override
 Computes neighboring cells for all vertices.
 
void computeVertexNeighbors () override
 Computes neighboring vertices for all vertices.
 
virtual Eigen::Vector< double, N > computeBarycentricWeights (const int imstkNotUsed(cellId), const Vec3d &imstkNotUsed(pos)) const
 compute the barycentric weights of a given point in 3D space for a given the cell
 
Vec3d computeWorldPosition (const int cellId, const Eigen::Matrix< double, N, 1 > &bary) const
 compute the world position of a point in 3D given the cellId and a set of barycentric coordinates
 
std::shared_ptr< AbstractDataArraygetAbstractCells () const override
 Get cells as abstract array. Overridden by derived classes to return cells as point indices.
 
int getNumCells () const override
 Returns the number of cells.
 
std::unique_ptr< CellMesh< N > > clone ()
 Polymorphic clone, hides the declaration in superclass return own type.
 
void setCells (std::shared_ptr< VecDataArray< int, N >> indices)
 Get/Set cell connectivity.
 
std::shared_ptr< VecDataArray< int, N > > getCells () const
 
- Public Member Functions inherited from imstk::AbstractCellMesh
bool isMesh () const override
 Returns true if the geometry is a mesh, else returns false.
 
void print () const override
 Print the surface mesh.
 
const std::vector< std::unordered_set< int > > & getVertexToCellMap () const
 Returns map of vertices to cells that contain the vertex (reverse linkage)
 
const std::vector< int > getCellsForVertex (const int vertexId)
 Returns cells that contain the vertex, will calculate vertex cells if necessary. More...
 
const std::vector< std::unordered_set< int > > & getVertexNeighbors () const
 Returns map of vertices to neighboring vertices.
 
const std::unordered_map< std::string, std::shared_ptr< AbstractDataArray > > & getCellAttributes () const
 Get the cell attributes map.
 
void setCellAttribute (const std::string &arrayName, std::shared_ptr< AbstractDataArray > arr)
 
std::shared_ptr< AbstractDataArraygetCellAttribute (const std::string &name) const
 
bool hasCellAttribute (const std::string &arrayName) const
 Check if a specific data array exists.
 
void setCellAttributes (std::unordered_map< std::string, std::shared_ptr< AbstractDataArray >> attributes)
 Set the cell attributes map.
 
void setCellScalars (const std::string &arrayName, std::shared_ptr< AbstractDataArray > scalars)
 Get/Set the active scalars.
 
void setCellScalars (const std::string &arrayName)
 
std::string getActiveCellScalars () const
 
std::shared_ptr< AbstractDataArraygetCellScalars () const
 
void setCellNormals (const std::string &arrayName, std::shared_ptr< VecDataArray< double, 3 >> normals)
 Get/Set the active normals.
 
void setCellNormals (const std::string &arrayName)
 
std::string getActiveCellNormals () const
 
std::shared_ptr< VecDataArray< double, 3 > > getCellNormals () const
 
void setCellTangents (const std::string &arrayName, std::shared_ptr< VecDataArray< double, 3 >> tangents)
 Get/Set the active tangents.
 
void setCellTangents (const std::string &arrayName)
 
std::string getActiveCellTangents () const
 
std::shared_ptr< VecDataArray< double, 3 > > getCellTangents () const
 
- Public Member Functions inherited from imstk::PointSet
void initialize (std::shared_ptr< VecDataArray< double, 3 >> positions)
 Initializes the data structure given vertex positions.
 
virtual void computeBoundingBox (Vec3d &lowerCorner, Vec3d &upperCorner, const double paddingPercent=0.0) override
 Compute the bounding box for the entire mesh.
 
void setInitialVertexPositions (std::shared_ptr< VecDataArray< double, 3 >> vertices)
 Sets initial positions from an array.
 
std::shared_ptr< VecDataArray< double, 3 > > getInitialVertexPositions () const
 Returns the vector of initial positions of the mesh vertices.
 
Vec3d & getInitialVertexPosition (const size_t vertNum)
 Returns the initial position of a vertex given its index.
 
void setVertexPositions (std::shared_ptr< VecDataArray< double, 3 >> positions)
 Sets current vertex positions of the mesh.
 
std::shared_ptr< VecDataArray< double, 3 > > getVertexPositions (DataType type=DataType::PostTransform) const
 Returns the vector of current positions of the mesh vertices.
 
void setVertexPosition (const size_t vertNum, const Vec3d &pos)
 Set the current position of a vertex given its index to certain position (this is not a thread-safe method)
 
int getNumVertices () const
 Returns the number of total vertices in the mesh.
 
void setVertexAttribute (const std::string &arrayName, std::shared_ptr< AbstractDataArray > arr)
 Set a data array holding some per vertex data.
 
std::shared_ptr< AbstractDataArraygetVertexAttribute (const std::string &arrayName) const
 Get a specific data array. If the array name cannot be found, nullptr is returned.
 
bool hasVertexAttribute (const std::string &arrayName) const
 Check if a specific data array exists.
 
void setVertexAttributes (std::unordered_map< std::string, std::shared_ptr< AbstractDataArray >> attributes)
 Set the vertex attributes map.
 
const std::unordered_map< std::string, std::shared_ptr< AbstractDataArray > > & getVertexAttributes () const
 Get the vertex attributes map.
 
void updatePostTransformData () const override
 Applies the geometries member transform to produce currPositions.
 
std::unique_ptr< PointSetclone ()
 Polymorphic clone, hides the declaration in superclass return own type.
 
const Vec3d & getVertexPosition (const size_t vertNum, DataType type=DataType::PostTransform) const
 Returns the position of a vertex given its index.
 
Vec3d & getVertexPosition (const size_t vertNum, DataType type=DataType::PostTransform)
 
void setVertexScalars (const std::string &arrayName, std::shared_ptr< AbstractDataArray > scalars)
 Get/Set the active scalars.
 
void setVertexScalars (const std::string &arrayName)
 
std::string getActiveVertexScalars () const
 
std::shared_ptr< AbstractDataArraygetVertexScalars () const
 
void setVertexNormals (const std::string &arrayName, std::shared_ptr< VecDataArray< double, 3 >> normals)
 Get/Set the active normals.
 
void setVertexNormals (const std::string &arrayName)
 
std::string getActiveVertexNormals () const
 
std::shared_ptr< VecDataArray< double, 3 > > getVertexNormals () const
 
void setVertexTangents (const std::string &arrayName, std::shared_ptr< VecDataArray< float, 3 >> tangents)
 Get/Set the active tangents.
 
void setVertexTangents (const std::string &arrayName)
 
std::string getActiveVertexTangents () const
 
std::shared_ptr< VecDataArray< float, 3 > > getVertexTangents () const
 
void setVertexTCoords (const std::string &arrayName, std::shared_ptr< VecDataArray< float, 2 >> tcoords)
 Get/Set the active tcoords.
 
void setVertexTCoords (const std::string &arrayName)
 
std::string getActiveVertexTCoords () const
 
std::shared_ptr< VecDataArray< float, 2 > > getVertexTCoords () const
 
- Public Member Functions inherited from imstk::Geometry
 Geometry (const Geometry &other)
 
void operator= (const Geometry &other)
 
virtual const std::string getTypeName () const =0
 Returns the string representing the type name of the geometry. More...
 
 SIGNAL (Geometry, modified)
 
virtual double getVolume ()
 Returns the volume of the geometry (if valid)
 
virtual Vec3d getCenter ()
 Returns the bounding box center.
 
void transform (const Mat4d &T, TransformType type=TransformType::ConcatenateToTransform)
 Applies a rigid transform to the geometry.
 
std::unique_ptr< Geometryclone ()
 polymorphic clone function, utilize this to get a copy of the geometry without casting to the expected geometry type
 
const std::string & getName () const
 Get the name of the geometry.
 
void setName (const std::string &name)
 
size_t getGlobalId () const
 Get the global (unique) index of the geometry.
 
void postModified ()
 Post modified event.
 
void translate (const Vec3d &t, TransformType type=TransformType::ConcatenateToTransform)
 Translate the geometry in Cartesian space.
 
void translate (double x, double y, double z, TransformType type=TransformType::ConcatenateToTransform)
 
void rotate (const Quatd &q, TransformType type=TransformType::ConcatenateToTransform)
 Rotate the geometry in Cartesian space.
 
void rotate (const Mat3d &m, TransformType type=TransformType::ConcatenateToTransform)
 
void rotate (const Vec3d &axis, double radians, TransformType type=TransformType::ConcatenateToTransform)
 
void scale (const Vec3d &scaling, TransformType type=TransformType::ConcatenateToTransform)
 Scale in Cartesian directions.
 
void scale (const double scaling, TransformType type=TransformType::ConcatenateToTransform)
 
Vec3d getTranslation () const
 Get/Set translation.
 
void setTranslation (const Vec3d &t)
 
void setTranslation (const double x, const double y, const double z)
 
Mat3d getRotation () const
 Get/Set rotation.
 
void setRotation (const Mat3d &m)
 
void setRotation (const Quatd &q)
 
void setRotation (const Vec3d &axis, const double angle)
 
Vec3d getScaling () const
 Get/Set scaling.
 
void setScaling (const Vec3d &s)
 
void setScaling (const double s)
 
const Mat4d & getTransform () const
 Get/Set the transform.
 
void setTransform (const Mat4d &m)
 
- Public Member Functions inherited from imstk::EventObject
template<typename T >
void postEvent (const T &e)
 Emits the event Direct observers will be immediately called, in sync Queued observers will receive the Command in their queue for later execution, reciever must implement doEvent.
 
template<typename T >
void queueEvent (const T &e)
 Queues event directly to this.
 
void doEvent ()
 Do an event, if none exists return.
 
void doAllEvents ()
 Do all the events in the event queue.
 
void foreachEvent (std::function< void(Command cmd)> func)
 Thread safe loop over all event commands, one can implement a custom handler.
 
void rforeachEvent (std::function< void(Command cmd)> func)
 thread safe reverse loop over all event commands, one can implement a custom handler
 
void clearEvents ()
 Removes all events from queue cleans up copies of the event.
 

Additional Inherited Members

- Public Types inherited from imstk::CellMesh< N >
using VertexDataType = VecDataArray< double, 3 >
 
using CellIndexType = VecDataArray< int, N >
 
using CellType = Eigen::Matrix< int, N, 1 >
 
- Public Types inherited from imstk::Geometry
enum  TransformType { ApplyToData, ConcatenateToTransform }
 Enumeration for the transformation to apply ApplyToTransform to apply the transformation to the data ConcatenateToTransform to apply the transformation to the transform matrix.
 
enum  DataType { PreTransform, PostTransform }
 Enumeration for the data to retrieve PreTransform for data where transform matrix is not applied PostTransform for data where transform matrix is applied.
 
- Public Types inherited from imstk::EventObject
using Observer = std::tuple< bool, std::weak_ptr< EventObject >, std::function< void(Event *)> >
 
- Static Public Member Functions inherited from imstk::Geometry
static size_t getNumGlobalIds ()
 Get number of ids/geometries.
 
- Static Public Attributes inherited from imstk::CellMesh< N >
static constexpr int CellVertexCount = N
 
- Protected Member Functions inherited from imstk::AbstractCellMesh
void setCellActiveAttribute (std::string &activeAttributeName, std::string attributeName, const int expectedNumComponents, const ScalarTypeId expectedScalarType)
 
- Protected Member Functions inherited from imstk::PointSet
void applyTransform (const Mat4d &m) override
 Applies transformation m directly the initial and post transform data.
 
void setActiveVertexAttribute (std::string &activeAttributeName, const std::string attributeName, const int expectedNumComponents, const ScalarTypeId expectedScalarType)
 Sets the active vertex attribute name as long as the # components is satisfied. Throws message and casts if incorrect scalar type is provided.
 
- Static Protected Member Functions inherited from imstk::Geometry
static size_t getUniqueId ()
 Get a unique ID for the new generated geometry object.
 
- Protected Attributes inherited from imstk::CellMesh< N >
std::shared_ptr< VecDataArray< int, N > > m_indices = nullptr
 
- Protected Attributes inherited from imstk::AbstractCellMesh
std::vector< std::unordered_set< int > > m_vertexToCells
 Map of vertices to neighbor cells.
 
std::vector< std::unordered_set< int > > m_vertexToNeighborVertex
 Map of vertices to neighbor vertices. More...
 
std::unordered_map< std::string, std::shared_ptr< AbstractDataArray > > m_cellAttributes
 
std::string m_activeCellNormals = ""
 
std::string m_activeCellTangents = ""
 
std::string m_activeCellScalars = ""
 
- Protected Attributes inherited from imstk::PointSet
std::shared_ptr< VecDataArray< double, 3 > > m_initialVertexPositions
 
std::shared_ptr< VecDataArray< double, 3 > > m_vertexPositions
 
std::unordered_map< std::string, std::shared_ptr< AbstractDataArray > > m_vertexAttributes
 
std::string m_activeVertexNormals = ""
 
std::string m_activeVertexScalars = ""
 
std::string m_activeVertexTangents = ""
 
std::string m_activeVertexTCoords = ""
 
Vec3d m_lowerCorner
 
Vec3d m_upperCorner
 
- Protected Attributes inherited from imstk::Geometry
bool m_transformApplied = true
 
bool m_boundsDirty = true
 
Mat4d m_transform = Mat4d::Identity()
 Transformation matrix.
 
size_t m_globalId
 Unique ID assigned to each geometry upon construction.
 
std::string m_name = "unnamed"
 
- Protected Attributes inherited from imstk::EventObject
ParallelUtils::SpinLock eventQueueLock
 
std::deque< CommandeventQueue
 
std::vector< std::pair< std::string, std::vector< Observer > > > queuedObservers
 
std::vector< std::pair< std::string, std::vector< Observer > > > directObservers
 
- Static Protected Attributes inherited from imstk::Geometry
static std::atomic< size_t > s_numGlobalIds = { 0 }
 Total number of geometries that have been created in this program.
 

Detailed Description

template<int N>
class imstk::VolumetricMesh< N >

Base class for all volume mesh types.

Definition at line 21 of file imstkVolumetricMesh.h.


The documentation for this class was generated from the following file: