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 "vnl/vnl_vector_fixed.h"
00023
00024 namespace itk
00025 {
00026
00035 template < unsigned int TPointDimension = 3 >
00036 class ITK_EXPORT TubeSpatialObjectPoint
00037 : public SpatialObjectPoint<TPointDimension>
00038 {
00039
00040 public:
00041
00042 typedef TubeSpatialObjectPoint Self;
00043 typedef SpatialObjectPoint<TPointDimension> Superclass;
00044 typedef SmartPointer<Self> Pointer;
00045 typedef const SmartPointer< const Self > ConstPointer;
00046 typedef Point< double, TPointDimension > PointType;
00047 typedef vnl_vector< double > VectorType;
00048 typedef VectorType * VectorPointer;
00049
00050 itkNewMacro( TubeSpatialObjectPoint );
00051
00052 itkTypeMacro( TubeSpatialObjectPoint, SpatialObjectPoint );
00053
00055 VectorPointer GetTangent( void );
00056
00058 void SetTangent(const VectorType & newT);
00059 void SetTangent(const double t0, const double t1);
00060 void SetTangent(const double t0, const double t1, const double t2);
00061
00063 VectorPointer GetV1( void );
00064
00066 void SetV1(const VectorType & newV1);
00067 void SetV1(const double v10, const double v11);
00068 void SetV1(const double v10, const double v11, const double v12);
00069
00071 VectorPointer GetV2( void );
00072
00074 void SetV2(const VectorType & newV2);
00075 void SetV2(const double v20, const double v21);
00076 void SetV2(const double v20, const double v21, const double v22);
00077
00079 float GetRadius( void ) const;
00080
00082 void SetRadius(const float newR);
00083
00085 float GetMedialness( void ) const;
00086
00088 void SetMedialness(const float newMedialness);
00089
00091 float GetRidgeness( void ) const;
00092
00094 void SetRidgeness(const float newRidgeness);
00095
00097 float GetBranchness( void ) const;
00098
00100 void SetBranchness(const float newBranchness);
00101
00103 bool GetMark( void ) const;
00104
00106 void SetMark(const bool newMark);
00107
00109 float GetAlpha1( void ) const;
00110
00112 void SetAlpha1(const float newAlpha);
00113
00115 float GetAlpha2( void ) const;
00116
00118 void SetAlpha2(const float newAlpha);
00119
00121 float GetAlpha3( void ) const;
00122
00124 void SetAlpha3(const float newAlpha);
00125
00127 unsigned short int GetNumDimensions( void ) const;
00128
00130 Self & operator=(const TubeSpatialObjectPoint & rhs);
00131
00132 protected:
00133
00135 TubeSpatialObjectPoint( void );
00136
00138 ~TubeSpatialObjectPoint( void );
00139
00141 unsigned int m_ID;
00142
00143 VectorType * m_T;
00144 VectorType * m_V1;
00145 VectorType * m_V2;
00146
00148 float m_Alpha1;
00149
00151 float m_Alpha2;
00152
00154 float m_Alpha3;
00155
00157 float m_R;
00158
00160 float m_Medialness;
00161
00163 float m_Ridgeness;
00164
00166 float m_Branchness;
00167
00169 bool m_Mark;
00170
00172 unsigned short int m_NumDimensions;
00173
00175 void PrintSelf( std::ostream & os, Indent indent) const;
00176 };
00177
00178 }
00179
00180 #ifndef ITK_MANUAL_INSTANTIATION
00181 #include "itkTubeSpatialObjectPoint.txx"
00182 #endif
00183
00184 #endif // __itkTubeSpatialObjectPoint_h