itkScaleVersor3DTransform.h
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 <iostream>
00021 #include "itkVersorRigid3DTransform.h"
00022
00023 namespace itk
00024 {
00025
00045 template < class TScalarType=double >
00046 class ITK_EXPORT ScaleVersor3DTransform : public VersorRigid3DTransform< TScalarType >
00047 {
00048 public:
00050 typedef ScaleVersor3DTransform Self;
00051 typedef VersorRigid3DTransform< TScalarType > Superclass;
00052 typedef SmartPointer<Self> Pointer;
00053 typedef SmartPointer<const Self> ConstPointer;
00054
00056 itkNewMacro( Self );
00057
00059 itkTypeMacro( ScaleVersor3DTransform, VersorRigid3DTransform );
00060
00062 itkStaticConstMacro(InputSpaceDimension, unsigned int, 3);
00063 itkStaticConstMacro(OutputSpaceDimension, unsigned int, 3);
00064 itkStaticConstMacro(ParametersDimension, unsigned int, 9);
00066
00068 typedef typename Superclass::ParametersType ParametersType;
00069 typedef typename Superclass::JacobianType JacobianType;
00070 typedef typename Superclass::ScalarType ScalarType;
00071 typedef typename Superclass::InputPointType InputPointType;
00072 typedef typename Superclass::OutputPointType OutputPointType;
00073 typedef typename Superclass::InputVectorType InputVectorType;
00074 typedef typename Superclass::OutputVectorType OutputVectorType;
00075 typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
00076 typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
00077 typedef typename Superclass::InputCovariantVectorType
00078 InputCovariantVectorType;
00079 typedef typename Superclass::OutputCovariantVectorType
00080 OutputCovariantVectorType;
00081 typedef typename Superclass::MatrixType MatrixType;
00082 typedef typename Superclass::InverseMatrixType InverseMatrixType;
00083 typedef typename Superclass::CenterType CenterType;
00084 typedef typename Superclass::OffsetType OffsetType;
00085 typedef typename Superclass::TranslationType TranslationType;
00086
00087 typedef typename Superclass::VersorType VersorType;
00088 typedef typename Superclass::AxisType AxisType;
00089 typedef typename Superclass::AngleType AngleType;
00090
00092 typedef Vector<TScalarType, 3> ScaleVectorType;
00093
00097 virtual void SetMatrix(const MatrixType &matrix);
00098
00106 virtual void SetParameters( const ParametersType & parameters );
00107 virtual const ParametersType& GetParameters(void) const;
00109
00110 void SetScale( const ScaleVectorType & scale );
00111 itkGetConstReferenceMacro( Scale, ScaleVectorType );
00112
00113 void SetIdentity();
00114
00119 const JacobianType & GetJacobian(const InputPointType &point ) const;
00120
00121 protected:
00122 ScaleVersor3DTransform();
00123 ScaleVersor3DTransform(const MatrixType &matrix,
00124 const OutputVectorType &offset);
00125 ScaleVersor3DTransform(unsigned int outputDims,
00126 unsigned int paramDims);
00127 ~ScaleVersor3DTransform()
00128 {
00129 };
00130
00131 void PrintSelf(std::ostream &os, Indent indent) const;
00132
00133 void SetVarScale(const ScaleVectorType & scale)
00134 {
00135 m_Scale = scale;
00136 }
00137
00139 void ComputeMatrix(void);
00140 void ComputeMatrixParameters(void);
00142
00143 private:
00144 ScaleVersor3DTransform(const Self&);
00145 void operator=(const Self&);
00146
00148 ScaleVectorType m_Scale;
00149
00150 };
00151
00152
00153 }
00154
00155
00156 #ifndef ITK_MANUAL_INSTANTIATION
00157 #include "itkScaleVersor3DTransform.txx"
00158 #endif
00159
00160 #endif
00161