17 #ifndef __itkAdvancedTranslationTransform_h
18 #define __itkAdvancedTranslationTransform_h
22 #include "itkExceptionObject.h"
23 #include "itkMatrix.h"
36 class TScalarType =
double,
37 unsigned int NDimensions = 3 >
57 itkStaticConstMacro( SpaceDimension,
unsigned int, NDimensions );
58 itkStaticConstMacro( ParametersDimension,
unsigned int, NDimensions );
72 typedef Vector< TScalarType, itkGetStaticConstMacro( SpaceDimension ) >
InputVectorType;
73 typedef Vector< TScalarType, itkGetStaticConstMacro( SpaceDimension ) >
OutputVectorType;
80 typedef vnl_vector_fixed< TScalarType, itkGetStaticConstMacro( SpaceDimension ) >
InputVnlVectorType;
81 typedef vnl_vector_fixed< TScalarType, itkGetStaticConstMacro( SpaceDimension ) >
OutputVnlVectorType;
84 typedef Point< TScalarType, itkGetStaticConstMacro( SpaceDimension ) >
InputPointType;
85 typedef Point< TScalarType, itkGetStaticConstMacro( SpaceDimension ) >
OutputPointType;
106 void SetParameters(
const ParametersType & parameters );
109 virtual const ParametersType & GetParameters(
void )
const;
115 { m_Offset = offset;
return; }
118 void Compose(
const Self * other,
bool pre = 0 );
124 void Translate(
const OutputVectorType & offset,
bool pre = 0 );
130 OutputPointType TransformPoint(
const InputPointType & point )
const;
132 OutputVectorType TransformVector(
const InputVectorType & vector )
const;
134 OutputVnlVectorType TransformVector(
const InputVnlVectorType & vector )
const;
136 OutputCovariantVectorType TransformCovariantVector(
137 const InputCovariantVectorType & vector )
const;
142 inline InputPointType BackTransform(
const OutputPointType & point )
const;
144 inline InputVectorType BackTransform(
const OutputVectorType & vector )
const;
146 inline InputVnlVectorType BackTransform(
const OutputVnlVectorType & vector )
const;
148 inline InputCovariantVectorType BackTransform(
149 const OutputCovariantVectorType & vector )
const;
155 bool GetInverse( Self * inverse )
const;
158 virtual void GetJacobian(
159 const InputPointType &,
161 NonZeroJacobianIndicesType & )
const;
164 virtual void GetSpatialJacobian(
165 const InputPointType &,
166 SpatialJacobianType & )
const;
169 virtual void GetSpatialHessian(
170 const InputPointType &,
171 SpatialHessianType & )
const;
174 virtual void GetJacobianOfSpatialJacobian(
175 const InputPointType &,
176 JacobianOfSpatialJacobianType &,
177 NonZeroJacobianIndicesType & )
const;
180 virtual void GetJacobianOfSpatialJacobian(
181 const InputPointType &,
182 SpatialJacobianType &,
183 JacobianOfSpatialJacobianType &,
184 NonZeroJacobianIndicesType & )
const;
187 virtual void GetJacobianOfSpatialHessian(
188 const InputPointType &,
189 JacobianOfSpatialHessianType &,
190 NonZeroJacobianIndicesType & )
const;
195 virtual void GetJacobianOfSpatialHessian(
196 const InputPointType & ipp,
197 SpatialHessianType & sh,
198 JacobianOfSpatialHessianType & jsh,
199 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const;
202 void SetIdentity(
void );
206 {
return NDimensions; }
235 this->m_FixedParameters.SetSize( 0 );
236 return this->m_FixedParameters;
245 void PrintSelf( std::ostream & os, Indent indent )
const;
250 void operator=(
const Self & );
266 template<
class TScalarType,
unsigned int NDimensions >
271 return point - m_Offset;
276 template<
class TScalarType,
unsigned int NDimensions >
286 template<
class TScalarType,
unsigned int NDimensions >
296 template<
class TScalarType,
unsigned int NDimensions >
307 #ifndef ITK_MANUAL_INSTANTIATION
308 #include "itkAdvancedTranslationTransform.hxx"