ITK
6.0.0
Insight Toolkit
|
#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 the following reference (Alyassin A.M. et al, "Evaluation of new algorithms for the interactive measurement of surface area and volume", Med Phys 21(6) 1994.).
Definition at line 54 of file itkSimplexMeshVolumeCalculator.h.
Classes | |
class | SimplexCellVisitor |
Public Member Functions | |
void | Compute () |
virtual double | GetArea () const |
const char * | GetNameOfClass () const override |
virtual double | GetVolume () const |
virtual void | SetSimplexMesh (InputMeshType *_arg) |
Public Member Functions inherited from itk::Object | |
unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
LightObject::Pointer | CreateAnother () const override |
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 |
Public Member Functions inherited from itk::LightObject | |
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 Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Protected Member Functions | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
SimplexMeshVolumeCalculator ()=default | |
~SimplexMeshVolumeCalculator () override=default | |
Protected Member Functions inherited from itk::Object | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
~Object () override | |
Protected Member Functions inherited from itk::LightObject | |
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 | |
Protected Attributes inherited from itk::LightObject | |
std::atomic< int > | m_ReferenceCount {} |
using itk::SimplexMeshVolumeCalculator< TInputMesh >::CellMultiVisitorPointer = typename CellMultiVisitorType::Pointer |
Definition at line 167 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::CellMultiVisitorType = typename SimplexCellType::MultiVisitor |
Definition at line 166 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::ConstPointer = SmartPointer<const Self> |
Definition at line 67 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::CovariantVectorType = CovariantVector<typename VectorType::ValueType, 3> |
Definition at line 98 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputCellTraitsType = typename InputMeshType::MeshTraits::CellTraits |
Definition at line 81 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputMeshConstPointer = typename InputMeshType::ConstPointer |
Definition at line 77 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputMeshPointer = typename InputMeshType::Pointer |
Definition at line 76 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputMeshType = TInputMesh |
Definition at line 75 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputNeighbors = typename InputMeshType::NeighborListType |
Definition at line 87 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputNeighborsIterator = typename InputMeshType::NeighborListType::iterator |
Definition at line 88 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPixelType = typename InputMeshType::PixelType |
Definition at line 80 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointsContainer = typename InputMeshType::PointsContainer |
Definition at line 83 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointsContainerIterator = typename InputPointsContainer::ConstIterator |
Definition at line 85 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointsContainerPointer = typename InputPointsContainer::ConstPointer |
Definition at line 84 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::InputPointType = typename InputMeshType::PointType |
Definition at line 79 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::Pointer = SmartPointer<Self> |
Smart pointer type alias support
Definition at line 66 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::PointMapPointer = typename PointMapType::Pointer |
Definition at line 95 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::PointMapType = itk::MapContainer<IdentifierType, InputPointType> |
Definition at line 94 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::Self = SimplexMeshVolumeCalculator |
Standard "Self" type alias.
Definition at line 60 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::SimplexCellType = typename InputMeshType::CellType |
Definition at line 90 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::SimplexPolygonType = itk::PolygonCell<SimplexCellType> |
Definition at line 91 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::SimplexVisitorInterfacePointer = typename SimplexVisitorInterfaceType::Pointer |
Definition at line 165 of file itkSimplexMeshVolumeCalculator.h.
Definition at line 163 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::Superclass = Object |
Standard "Superclass" type alias.
Definition at line 63 of file itkSimplexMeshVolumeCalculator.h.
using itk::SimplexMeshVolumeCalculator< TInputMesh >::VectorType = typename InputPointType::VectorType |
Definition at line 97 of file itkSimplexMeshVolumeCalculator.h.
|
protecteddefault |
|
overrideprotecteddefault |
|
private |
Calculate volume of triangle.
void itk::SimplexMeshVolumeCalculator< TInputMesh >::Compute | ( | ) |
Compute the volume of the entire simplex mesh.
|
private |
creates dual triangles for all simplex cells
|
private |
|
private |
part of algorithm
|
virtual |
Return the computed area.
|
overridevirtual |
Reimplemented from itk::Object.
|
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 216 of file itkSimplexMeshVolumeCalculator.h.
|
private |
attribute stores the result of the simplex cell visitor
Definition at line 208 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 217 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 218 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 219 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 225 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 226 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 227 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 229 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 210 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 212 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 213 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 221 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 220 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 222 of file itkSimplexMeshVolumeCalculator.h.
|
private |
Definition at line 223 of file itkSimplexMeshVolumeCalculator.h.