18 #ifndef __itkScalableAffineTransform_h
19 #define __itkScalableAffineTransform_h
34 class TScalarType = double,
35 unsigned int NDimensions = 3 >
54 itkStaticConstMacro(InputSpaceDimension,
unsigned int, NDimensions);
55 itkStaticConstMacro(OutputSpaceDimension,
unsigned int, NDimensions);
56 itkStaticConstMacro(SpaceDimension,
unsigned int, NDimensions);
57 itkStaticConstMacro( ParametersDimension,
unsigned int,
58 NDimensions * ( NDimensions + 1 ) );
89 void SetIdentity(
void);
95 { this->SetScale(scale); }
98 virtual void SetScale(
const double scale[NDimensions]);
100 virtual void SetScaleComponent(
const double scale[NDimensions])
101 { this->SetScale(scale); }
104 virtual const double * GetScale()
const
106 virtual const double * GetScaleComponent()
const
111 bool GetInverse(Self *inverse)
const;
114 virtual InverseTransformBasePointer GetInverseTransform()
const;
119 itkLegacyMacro(
void SetMatrixComponent(
const MatrixType & matrix));
123 itkLegacyMacro(
const MatrixType & GetMatrixComponent()
const);
127 itkLegacyMacro(
void SetOffsetComponent(
const OffsetType & offset) );
131 itkLegacyMacro(
const OffsetType & GetOffsetComponent(
void)
const );
142 const OutputVectorType & offset);
144 unsigned int parametersDimension);
149 void ComputeMatrix();
155 void PrintSelf(std::ostream & s,
Indent indent)
const;
157 void SetVarScale(
const double *scale)
158 {
for (
int i = 0; i < InputSpaceDimension; i++ ) { m_Scale[i] = scale[i]; } }
162 const Self & operator=(
const Self &);
164 double m_Scale[NDimensions];
170 #define ITK_TEMPLATE_ScalableAffineTransform(_, EXPORT, TypeX, TypeY) \
173 _( 2 ( class EXPORT ScalableAffineTransform< ITK_TEMPLATE_2 TypeX > ) ) \
174 namespace Templates \
176 typedef ScalableAffineTransform< ITK_TEMPLATE_2 TypeX > \
177 ScalableAffineTransform##TypeY; \
181 #if ITK_TEMPLATE_EXPLICIT
182 #include "Templates/itkScalableAffineTransform+-.h"
186 #include "itkScalableAffineTransform.hxx"