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);
00063
00065 const CovariantVectorType & GetNormal1( void ) const;
00066
00068 void SetNormal1(const CovariantVectorType & newV1);
00069 void SetNormal1(const double v10, const double v11);
00070 void SetNormal1(const double v10, const double v11, const double v12);
00071
00073 const CovariantVectorType & GetNormal2( void ) const;
00074
00076 void SetNormal2(const CovariantVectorType & newV2);
00077 void SetNormal2(const double v20, const double v21);
00078 void SetNormal2(const double v20, const double v21, const double v22);
00079
00081 float GetRadius( void ) const;
00082
00084 void SetRadius(const float newR);
00085
00087 unsigned short int GetNumDimensions( void ) const;
00088
00090 Self & operator=(const TubeSpatialObjectPoint & rhs);
00091
00092 protected:
00093
00094 VectorType m_T;
00095 CovariantVectorType m_Normal1;
00096 CovariantVectorType m_Normal2;
00097
00099 float m_R;
00100
00102 unsigned short int m_NumDimensions;
00103
00105 void PrintSelf( std::ostream & os, Indent indent) const;
00106 };
00107
00108 }
00109
00110 #ifndef ITK_MANUAL_INSTANTIATION
00111 #include "itkTubeSpatialObjectPoint.txx"
00112 #endif
00113
00114 #endif // __itkTubeSpatialObjectPoint_h