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 float GetMedialness( void ) const;
00088
00090 void SetMedialness(const float newMedialness);
00091
00093 float GetRidgeness( void ) const;
00094
00096 void SetRidgeness(const float newRidgeness);
00097
00099 float GetBranchness( void ) const;
00100
00102 void SetBranchness(const float newBranchness);
00103
00105 bool GetMark( void ) const;
00106
00108 void SetMark(const bool newMark);
00109
00111 float GetAlpha1( void ) const;
00112
00114 void SetAlpha1(const float newAlpha);
00115
00117 float GetAlpha2( void ) const;
00118
00120 void SetAlpha2(const float newAlpha);
00121
00123 float GetAlpha3( void ) const;
00124
00126 void SetAlpha3(const float newAlpha);
00127
00129 unsigned short int GetNumDimensions( void ) const;
00130
00132 Self & operator=(const TubeSpatialObjectPoint & rhs);
00133
00134 protected:
00135
00136 VectorType m_T;
00137 CovariantVectorType m_Normal1;
00138 CovariantVectorType m_Normal2;
00139
00141 float m_Alpha1;
00142
00144 float m_Alpha2;
00145
00147 float m_Alpha3;
00148
00150 float m_R;
00151
00153 float m_Medialness;
00154
00156 float m_Ridgeness;
00157
00159 float m_Branchness;
00160
00162 bool m_Mark;
00163
00165 unsigned short int m_NumDimensions;
00166
00168 void PrintSelf( std::ostream & os, Indent indent) const;
00169 };
00170
00171 }
00172
00173 #ifndef ITK_MANUAL_INSTANTIATION
00174 #include "itkTubeSpatialObjectPoint.txx"
00175 #endif
00176
00177 #endif // __itkTubeSpatialObjectPoint_h