00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkTubeSpatialObjectPoint_h
00019 #define __itkTubeSpatialObjectPoint_h
00020
00021 #include "itkSpatialObjectPoint.h"
00022 #include "itkCovariantVector.h"
00023 #include "vnl/vnl_vector_fixed.h"
00024
00025 namespace itk
00026 {
00027
00036 template < unsigned int TPointDimension = 3 >
00037 class TubeSpatialObjectPoint
00038 : public SpatialObjectPoint<TPointDimension>
00039 {
00040
00041 public:
00042
00043 typedef TubeSpatialObjectPoint Self;
00044 typedef SpatialObjectPoint<TPointDimension> Superclass;
00045 typedef Point< double, TPointDimension > PointType;
00046 typedef Vector<double, TPointDimension > VectorType;
00047 typedef CovariantVector<double, TPointDimension > CovariantVectorType;
00048
00051 TubeSpatialObjectPoint( void );
00052
00054 virtual ~TubeSpatialObjectPoint( void );
00055
00057 const VectorType & GetTangent( void ) const;
00058
00060 void SetTangent(const VectorType & newT);
00061 void SetTangent(const double t0, const double t1);
00062 void SetTangent(const double t0, const double t1, const double t2);
00064
00066 const CovariantVectorType & GetNormal1( void ) const;
00067
00069 void SetNormal1(const CovariantVectorType & newV1);
00070 void SetNormal1(const double v10, const double v11);
00071 void SetNormal1(const double v10, const double v11, const double v12);
00073
00075 const CovariantVectorType & GetNormal2( void ) const;
00076
00078 void SetNormal2(const CovariantVectorType & newV2);
00079 void SetNormal2(const double v20, const double v21);
00080 void SetNormal2(const double v20, const double v21, const double v22);
00082
00084 float GetRadius( void ) const;
00085
00087 void SetRadius(const float newR);
00088
00090 unsigned short int GetNumDimensions( void ) const;
00091
00093 Self & operator=(const TubeSpatialObjectPoint & rhs);
00094
00095 protected:
00096
00097 VectorType m_T;
00098 CovariantVectorType m_Normal1;
00099 CovariantVectorType m_Normal2;
00100
00102 float m_R;
00103
00105 unsigned short int m_NumDimensions;
00106
00108 void PrintSelf( std::ostream & os, Indent indent) const;
00109 };
00110
00111 }
00112
00113 #ifndef ITK_MANUAL_INSTANTIATION
00114 #include "itkTubeSpatialObjectPoint.txx"
00115 #endif
00116
00117 #endif // __itkTubeSpatialObjectPoint_h
00118