00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkQuadraticEdgeCell_h
00018 #define __itkQuadraticEdgeCell_h
00019
00020 #include "itkCellInterface.h"
00021 #include "itkCellBoundary.h"
00022 #include "itkVertexCell.h"
00023
00024 namespace itk
00025 {
00026
00044 template < typename TCellInterface >
00045 class QuadraticEdgeCell: public TCellInterface
00046 {
00047 public:
00049 itkCellCommonTypedefs(QuadraticEdgeCell);
00050 itkCellInheritedTypedefs(TCellInterface);
00051
00053 itkTypeMacro(QuadraticEdgeCell, CellInterface);
00054
00056 typedef VertexBoundary< TCellInterface > VertexType;
00057 typedef typename VertexType::SelfAutoPointer VertexAutoPointer;
00058
00060 itkStaticConstMacro(NumberOfPoints, unsigned int, 3);
00061 itkStaticConstMacro(NumberOfVertices, unsigned int, 2);
00062 itkStaticConstMacro(CellDimension, unsigned int, 1);
00063
00065 virtual CellGeometry GetType(void) const
00066 {return Superclass::QUADRATIC_EDGE_CELL;}
00067 virtual void MakeCopy( CellAutoPointer & ) const;
00068 virtual unsigned int GetDimension(void) const;
00069 virtual unsigned int GetNumberOfPoints(void) const;
00070 virtual CellFeatureCount GetNumberOfBoundaryFeatures(int dimension) const;
00071 virtual bool GetBoundaryFeature(int dimension, CellFeatureIdentifier,CellAutoPointer &);
00072 virtual void SetPointIds(PointIdConstIterator first);
00073 virtual void SetPointIds(PointIdConstIterator first,
00074 PointIdConstIterator last);
00075 virtual void SetPointId(int localId, PointIdentifier);
00076 virtual PointIdIterator PointIdsBegin(void);
00077 virtual PointIdConstIterator PointIdsBegin(void) const;
00078 virtual PointIdIterator PointIdsEnd(void);
00079 virtual PointIdConstIterator PointIdsEnd(void) const;
00080
00082 virtual CellFeatureCount GetNumberOfVertices(void) const;
00083 virtual bool GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
00084
00086 itkCellVisitMacro(QUADRATIC_EDGE_CELL);
00087
00088 QuadraticEdgeCell() {}
00089 ~QuadraticEdgeCell() {}
00090
00093 virtual void EvaluateShapeFunctions(
00094 const ParametricCoordArrayType & parametricCoordinates,
00095 ShapeFunctionsArrayType & weights) const;
00096
00097
00098 protected:
00100 PointIdentifier m_PointIds[NumberOfPoints];
00101
00102 private:
00103 QuadraticEdgeCell(const Self&);
00104 void operator=(const Self&);
00105 };
00106
00107
00113 template <typename TCellInterface>
00114 class QuadraticEdgeBoundary:
00115 public CellBoundary< QuadraticEdgeCell< TCellInterface > >
00116 {
00117 public:
00119 itkCellCommonTypedefs(QuadraticEdgeBoundary);
00120
00122 itkTypeMacro(QuadraticEdgeBoundary, CellBoundary);
00123 };
00124
00125 }
00126
00127 #ifndef ITK_MANUAL_INSTANTIATION
00128 #include "itkQuadraticEdgeCell.txx"
00129 #endif
00130
00131 #endif