00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkTetrahedronCell_h
00018 #define __itkTetrahedronCell_h
00019
00020 #include "itkCellInterface.h"
00021 #include "itkTriangleCell.h"
00022 #include "itkTetrahedronCellTopology.h"
00023
00024 namespace itk
00025 {
00026
00040 template < typename TCellInterface >
00041 class ITK_EXPORT TetrahedronCell: public TCellInterface, private TetrahedronCellTopology
00042 {
00043 public:
00045 itkCellCommonTypedefs(TetrahedronCell);
00046 itkCellInheritedTypedefs(TCellInterface);
00047
00049 itkTypeMacro(TetrahedronCell, CellInterface);
00050
00052 typedef VertexCell< TCellInterface > VertexType;
00053 typedef typename VertexType::SelfAutoPointer VertexAutoPointer;
00054
00056 typedef LineCell< TCellInterface > EdgeType;
00057 typedef typename EdgeType::SelfAutoPointer EdgeAutoPointer;
00058
00060 typedef TriangleCell< TCellInterface > FaceType;
00061 typedef typename FaceType::SelfAutoPointer FaceAutoPointer;
00062
00064 itkStaticConstMacro(NumberOfPoints, unsigned int, 4);
00065 itkStaticConstMacro(NumberOfVertices, unsigned int, 4);
00066 itkStaticConstMacro(NumberOfEdges, unsigned int, 6);
00067 itkStaticConstMacro(NumberOfFaces, unsigned int, 4);
00068 itkStaticConstMacro(CellDimension, unsigned int, 3);
00069
00071 virtual CellGeometry GetType(void) const
00072 {return Superclass::TETRAHEDRON_CELL;}
00073 virtual void MakeCopy( CellAutoPointer & ) const;
00074 virtual unsigned int GetDimension(void) const;
00075 virtual unsigned int GetNumberOfPoints(void) const;
00076 virtual CellFeatureCount GetNumberOfBoundaryFeatures(int dimension) const;
00077 virtual bool GetBoundaryFeature(int dimension, CellFeatureIdentifier,
00078 CellAutoPointer &);
00079 virtual void SetPointIds(PointIdConstIterator first);
00080 virtual void SetPointIds(PointIdConstIterator first,
00081 PointIdConstIterator last);
00082 virtual void SetPointId(int localId, PointIdentifier);
00083 virtual PointIdIterator PointIdsBegin(void);
00084 virtual PointIdConstIterator PointIdsBegin(void) const;
00085 virtual PointIdIterator PointIdsEnd(void);
00086 virtual PointIdConstIterator PointIdsEnd(void) const;
00087
00089 virtual CellFeatureCount GetNumberOfVertices(void) const;
00090 virtual CellFeatureCount GetNumberOfEdges(void) const;
00091 virtual CellFeatureCount GetNumberOfFaces(void) const;
00092 virtual bool GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
00093 virtual bool GetEdge(CellFeatureIdentifier, EdgeAutoPointer &);
00094 virtual bool GetFace(CellFeatureIdentifier, FaceAutoPointer &);
00095
00097 itkCellVisitMacro(TETRAHEDRON_CELL);
00098
00099 public:
00100 TetrahedronCell() {}
00101 ~TetrahedronCell() {}
00102
00103 protected:
00105 PointIdentifier m_PointIds[NumberOfPoints];
00106
00107 private:
00108 TetrahedronCell(const Self&);
00109 void operator=(const Self&);
00110
00111 };
00112
00113 }
00114
00115 #ifndef ITK_MANUAL_INSTANTIATION
00116 #include "itkTetrahedronCell.txx"
00117 #endif
00118
00119 #endif