#include <itkSimplexMeshVolumeCalculator.h>
Adapted from itkSimplexMeshToTriangleFilter to calculate the volume of a simplex mesh using the barycenters and normals. call Compute() to calculate the volume and GetVolume() to get the value. For an example see itkDeformableSimplexMesh3DFilter.cxx (Thomas Boettger. Division Medical and Biological Informatics, German Cancer Research Center, Heidelberg.)
The original implementation has been replaced with an algorithm based on the discrete form of the divergence theorem. The general assumption here is that the model is of closed surface. For more details see [2].
Definition at line 52 of file itkSimplexMeshVolumeCalculator.h.
Classes | |
class | SimplexCellVisitor |
Public Types | |
using | CellMultiVisitorPointer = typename CellMultiVisitorType::Pointer |
using | CellMultiVisitorType = typename SimplexCellType::MultiVisitor |
using | ConstPointer = SmartPointer<const Self> |
using | CovariantVectorType = CovariantVector<typename VectorType::ValueType, 3> |
using | InputCellTraitsType = typename InputMeshType::MeshTraits::CellTraits |
using | InputMeshConstPointer = typename InputMeshType::ConstPointer |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | InputNeighbors = typename InputMeshType::NeighborListType |
using | InputNeighborsIterator = typename InputMeshType::NeighborListType::iterator |
using | InputPixelType = typename InputMeshType::PixelType |
using | InputPointsContainer = typename InputMeshType::PointsContainer |
using | InputPointsContainerIterator = typename InputPointsContainer::ConstIterator |
using | InputPointsContainerPointer = typename InputPointsContainer::ConstPointer |
using | InputPointType = typename InputMeshType::PointType |
using | Pointer = SmartPointer<Self> |
using | PointMapPointer = typename PointMapType::Pointer |
using | PointMapType = itk::MapContainer<IdentifierType, InputPointType> |
using | Self = SimplexMeshVolumeCalculator |
using | SimplexCellType = typename InputMeshType::CellType |
using | SimplexPolygonType = itk::PolygonCell<SimplexCellType> |
using | SimplexVisitorInterfacePointer = typename SimplexVisitorInterfaceType::Pointer |
using | SimplexVisitorInterfaceType |
using | Superclass = Object |
using | VectorType = typename InputPointType::VectorType |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = Object |
using | Superclass = LightObject |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = LightObject |
Public Member Functions | |
void | Compute () |
virtual::itk::LightObject::Pointer | CreateAnother () const |
virtual double | GetArea () const |
const char * | GetNameOfClass () const override |
virtual double | GetVolume () const |
virtual void | SetSimplexMesh (InputMeshType *_arg) |
![]() | |
unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
virtual void | DebugOff () const |
virtual void | DebugOn () const |
Command * | GetCommand (unsigned long tag) |
bool | GetDebug () const |
MetaDataDictionary & | GetMetaDataDictionary () |
const MetaDataDictionary & | GetMetaDataDictionary () const |
virtual ModifiedTimeType | GetMTime () const |
virtual const TimeStamp & | GetTimeStamp () const |
bool | HasObserver (const EventObject &event) const |
void | InvokeEvent (const EventObject &) |
void | InvokeEvent (const EventObject &) const |
virtual void | Modified () const |
void | Register () const override |
void | RemoveAllObservers () |
void | RemoveObserver (unsigned long tag) const |
void | SetDebug (bool debugFlag) const |
void | SetReferenceCount (int) override |
void | UnRegister () const noexcept override |
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
virtual void | SetObjectName (std::string _arg) |
virtual const std::string & | GetObjectName () const |
![]() | |
Pointer | Clone () const |
virtual void | Delete () |
virtual int | GetReferenceCount () const |
void | Print (std::ostream &os, Indent indent=0) const |
Static Public Member Functions | |
static Pointer | New () |
![]() | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
![]() | |
static void | BreakOnError () |
static Pointer | New () |
Protected Member Functions | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
SimplexMeshVolumeCalculator ()=default | |
~SimplexMeshVolumeCalculator () override=default | |
![]() | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
~Object () override | |
![]() | |
virtual LightObject::Pointer | InternalClone () const |
LightObject () | |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
virtual | ~LightObject () |
Private Member Functions | |
void | CalculateTriangleVolume (InputPointType p1, InputPointType p2, InputPointType p3) |
void | CreateTriangles () |
void | Finalize () |
IdentifierType | FindCellId (IdentifierType id1, IdentifierType id2, IdentifierType id3) |
void | Initialize () |
Private Attributes | |
double | m_Area { 0.0 } |
PointMapPointer | m_Centers {} |
double | m_Kx { 0.0 } |
double | m_Ky { 0.0 } |
double | m_Kz { 0.0 } |
IndexValueType | m_Muncx { 0 } |
IndexValueType | m_Muncy { 0 } |
IndexValueType | m_Muncz { 0 } |
SizeValueType | m_NumberOfTriangles { 0 } |
InputMeshPointer | m_SimplexMesh {} |
double | m_Volume { 0.0 } |
double | m_VolumeX { 0.0 } |
double | m_VolumeY { 0.0 } |
double | m_VolumeZ { 0.0 } |
double | m_Wxy { 0.0 } |
double | m_Wxyz { 0.0 } |
double | m_Wxz { 0.0 } |
double | m_Wyz { 0.0 } |
Additional Inherited Members | |
![]() | |
std::atomic< int > | m_ReferenceCount {} |
using itk::SimplexMeshVolumeCalculator< TInputMesh >::CellMultiVisitorPointer = typename CellMultiVisitorType::Pointer |
Definition at line 164 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::CellMultiVisitorType = typename SimplexCellType::MultiVisitor |
Definition at line 163 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::ConstPointer = SmartPointer<const Self> |
Definition at line 65 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::CovariantVectorType = CovariantVector<typename VectorType::ValueType, 3> |
Definition at line 96 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputCellTraitsType = typename InputMeshType::MeshTraits::CellTraits |
Definition at line 79 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputMeshConstPointer = typename InputMeshType::ConstPointer |
Definition at line 75 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputMeshPointer = typename InputMeshType::Pointer |
Definition at line 74 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputMeshType = TInputMesh |
Definition at line 73 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputNeighbors = typename InputMeshType::NeighborListType |
Definition at line 85 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputNeighborsIterator = typename InputMeshType::NeighborListType::iterator |
Definition at line 86 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPixelType = typename InputMeshType::PixelType |
Definition at line 78 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointsContainer = typename InputMeshType::PointsContainer |
Definition at line 81 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointsContainerIterator = typename InputPointsContainer::ConstIterator |
Definition at line 83 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointsContainerPointer = typename InputPointsContainer::ConstPointer |
Definition at line 82 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointType = typename InputMeshType::PointType |
Definition at line 77 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::Pointer = SmartPointer<Self> |
Smart pointer type alias support
Definition at line 64 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::PointMapPointer = typename PointMapType::Pointer |
Definition at line 93 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::PointMapType = itk::MapContainer<IdentifierType, InputPointType> |
Definition at line 92 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::Self = SimplexMeshVolumeCalculator |
Standard "Self" type alias.
Definition at line 58 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::SimplexCellType = typename InputMeshType::CellType |
Definition at line 88 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::SimplexPolygonType = itk::PolygonCell<SimplexCellType> |
Definition at line 89 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::SimplexVisitorInterfacePointer = typename SimplexVisitorInterfaceType::Pointer |
Definition at line 162 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::SimplexVisitorInterfaceType |
Definition at line 159 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::Superclass = Object |
Standard "Superclass" type alias.
Definition at line 61 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::VectorType = typename InputPointType::VectorType |
Definition at line 95 of file itkSimplexMeshVolumeCalculator.h.
|
protecteddefault |
Referenced by GetNameOfClass().
|
overrideprotecteddefault |
|
private |
Calculate volume of triangle.
void itk::SimplexMeshVolumeCalculator< TInputMesh >::Compute | ( | ) |
Compute the volume of the entire simplex mesh.
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::Object.
|
private |
creates dual triangles for all simplex cells
|
private |
|
private |
part of algorithm
|
virtual |
Return the computed area.
|
overridevirtual |
Reimplemented from itk::Object.
References SimplexMeshVolumeCalculator().
|
virtual |
Return the computed volume.
|
private |
|
static |
Method of creation through the object factory.
|
overrideprotectedvirtual |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::Object.
|
virtual |
Set the input mesh.
|
private |
Definition at line 213 of file itkSimplexMeshVolumeCalculator.h.
|
private |
attribute stores the result of the simplex cell visitor
Definition at line 205 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 214 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 215 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 216 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 222 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 223 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 224 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 226 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 207 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 209 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 210 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 211 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 212 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 218 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 217 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 219 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 220 of file itkSimplexMeshVolumeCalculator.h.