#ifndef __CPM__DATASTRUCTURES__SIMPLEXMESH__H__ #define __CPM__DATASTRUCTURES__SIMPLEXMESH__H__ #include #include namespace cpm { namespace DataStructures { /** */ template< typename P, unsigned int K, unsigned int D = 3, typename T = itk::DefaultStaticMeshTraits< P, D, D > > class SimplexMesh : public cpPlugins::Extensions::QuadEdgeMesh< P, D, T > { public: typedef SimplexMesh Self; typedef cpPlugins::Extensions::QuadEdgeMesh< P, D, T > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; // Input templates itkStaticConstMacro( Order, unsigned int, K ); /// Types from superclass typedef typename Superclass::BoundaryAssignmentsContainer BoundaryAssignmentsContainer; typedef typename Superclass::BoundaryAssignmentsContainerPointer BoundaryAssignmentsContainerPointer; typedef typename Superclass::BoundingBoxType BoundingBoxType; typedef typename Superclass::CellAutoPointer CellAutoPointer; typedef typename Superclass::CellsContainer CellsContainer; typedef typename Superclass::CellDataContainer CellDataContainer; typedef typename Superclass::CellFeatureCount CellFeatureCount; typedef typename Superclass::CellFeatureIdentifier CellFeatureIdentifier; typedef typename Superclass::CellIdentifier CellIdentifier; typedef typename Superclass::CellLinksContainer CellLinksContainer; typedef typename Superclass::CellMultiVisitorType CellMultiVisitorType; typedef typename Superclass::CellPixelType CellPixelType; typedef typename Superclass::CellType CellType; typedef typename Superclass::PointIdentifier PointIdentifier; typedef typename Superclass::PointsContainer PointsContainer; typedef typename Superclass::PointType PointType; typedef typename Superclass::TPrimalEdge TPrimalEdge; typedef typename Superclass::TDualEdge TDualEdge; typedef typename Superclass::VectorType VectorType; typedef typename VectorType::ValueType ValueType; typedef typename Superclass::TQuadEdgeCell TQuadEdgeCell; typedef itk::Vector< P, K + 1 > BarycenterVector; public: itkNewMacro( Self ); itkTypeMacro( SimplexMesh, QuadEdgeMesh ); public: bool ComputeSimplexParameters( const PointIdentifier& pId, VectorType& A, VectorType& B, VectorType& C, VectorType& N, BarycenterVector& barycenter, ValueType& r, ValueType& d, ValueType& dp, ValueType& phi ) const; bool VerifySimplexOrder( ) const; bool OperatorDeleteEdge( const PointIdentifier& a, const PointIdentifier& b ); protected: SimplexMesh( ); virtual ~SimplexMesh( ); virtual VectorType _ComputePointNormal( const TPrimalEdge* e ) const; private: SimplexMesh( const Self& ); // Not implemented void operator=( const Self& ); // Not implemented }; } // ecapseman } // ecapseman #include #endif // __CPM__DATASTRUCTURES__SIMPLEXMESH__H__ // eof - $RCSfile$