Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkScaleVersor3DTransform_h
00018 #define __itkScaleVersor3DTransform_h
00019
00020 #include "itkVersorRigid3DTransform.h"
00021
00022 namespace itk
00023 {
00024
00044 template < class TScalarType=double >
00045 class ITK_EXPORT ScaleVersor3DTransform : public VersorRigid3DTransform< TScalarType >
00046 {
00047 public:
00049 typedef ScaleVersor3DTransform Self;
00050 typedef VersorRigid3DTransform< TScalarType > Superclass;
00051 typedef SmartPointer<Self> Pointer;
00052 typedef SmartPointer<const Self> ConstPointer;
00053
00055 itkNewMacro( Self );
00056
00058 itkTypeMacro( ScaleVersor3DTransform, VersorRigid3DTransform );
00059
00061 itkStaticConstMacro(InputSpaceDimension, unsigned int, 3);
00062 itkStaticConstMacro(OutputSpaceDimension, unsigned int, 3);
00063 itkStaticConstMacro(ParametersDimension, unsigned int, 9);
00065
00067 typedef typename Superclass::ParametersType ParametersType;
00068 typedef typename Superclass::JacobianType JacobianType;
00069 typedef typename Superclass::ScalarType ScalarType;
00070 typedef typename Superclass::InputPointType InputPointType;
00071 typedef typename Superclass::OutputPointType OutputPointType;
00072 typedef typename Superclass::InputVectorType InputVectorType;
00073 typedef typename Superclass::OutputVectorType OutputVectorType;
00074 typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
00075 typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
00076 typedef typename Superclass::InputCovariantVectorType
00077 InputCovariantVectorType;
00078 typedef typename Superclass::OutputCovariantVectorType
00079 OutputCovariantVectorType;
00080 typedef typename Superclass::MatrixType MatrixType;
00081 typedef typename Superclass::InverseMatrixType InverseMatrixType;
00082 typedef typename Superclass::CenterType CenterType;
00083 typedef typename Superclass::OffsetType OffsetType;
00084 typedef typename Superclass::TranslationType TranslationType;
00085
00086 typedef typename Superclass::VersorType VersorType;
00087 typedef typename Superclass::AxisType AxisType;
00088 typedef typename Superclass::AngleType AngleType;
00089
00091 typedef Vector<TScalarType, 3> ScaleVectorType;
00092
00096 virtual void SetMatrix(const MatrixType &matrix);
00097
00105 virtual void SetParameters( const ParametersType & parameters );
00106 virtual const ParametersType& GetParameters(void) const;
00108
00111 void SetScale( const ScaleVectorType & scale );
00112 itkGetConstReferenceMacro( Scale, ScaleVectorType );
00114
00117 void SetIdentity();
00118
00123 const JacobianType & GetJacobian(const InputPointType &point ) const;
00124
00125 protected:
00126 ScaleVersor3DTransform();
00127 ScaleVersor3DTransform(const MatrixType &matrix,
00128 const OutputVectorType &offset);
00129 ScaleVersor3DTransform(unsigned int outputDims,
00130 unsigned int paramDims);
00131 ~ScaleVersor3DTransform();
00132
00133 void PrintSelf(std::ostream &os, Indent indent) const;
00134
00135 void SetVarScale(const ScaleVectorType & scale)
00136 {
00137 m_Scale = scale;
00138 }
00139
00141 void ComputeMatrix(void);
00142 void ComputeMatrixParameters(void);
00144
00145 private:
00146 ScaleVersor3DTransform(const Self&);
00147 void operator=(const Self&);
00148
00150 ScaleVectorType m_Scale;
00151
00152 };
00153
00154
00155 }
00156
00157
00158 #ifndef ITK_MANUAL_INSTANTIATION
00159 #include "itkScaleVersor3DTransform.txx"
00160 #endif
00161
00162 #endif
00163