18 #ifndef itkMatrixOffsetTransformBase_h
19 #define itkMatrixOffsetTransformBase_h
105 template <
typename TParametersValueType =
double,
unsigned int NInputDimensions = 3,
unsigned int NOutputDimensions = 3>
107 :
public Transform<TParametersValueType, NInputDimensions, NOutputDimensions>
126 static constexpr
unsigned int InputSpaceDimension = NInputDimensions;
127 static constexpr
unsigned int OutputSpaceDimension = NOutputDimensions;
128 static constexpr
unsigned int ParametersDimension = NOutputDimensions * (NInputDimensions + 1);
212 return Self::TransformCategoryEnum::Linear;
230 this->ComputeOffset();
231 this->ComputeMatrixParameters();
232 m_MatrixMTime.Modified();
245 virtual const MatrixType &
263 this->ComputeTranslation();
274 const OutputVectorType &
306 this->ComputeOffset();
318 const InputPointType &
333 m_Translation = translation;
334 this->ComputeOffset();
346 const OutputVectorType &
349 return m_Translation;
357 SetParameters(
const ParametersType & parameters)
override;
360 const ParametersType &
361 GetParameters()
const override;
365 SetFixedParameters(
const FixedParametersType &)
override;
368 const FixedParametersType &
369 GetFixedParameters()
const override;
383 Compose(
const Self * other,
bool pre =
false);
394 TransformPoint(
const InputPointType & point)
const override;
396 using Superclass::TransformVector;
399 TransformVector(
const InputVectorType & vect)
const override;
402 TransformVector(
const InputVnlVectorType & vect)
const override;
404 OutputVectorPixelType
405 TransformVector(
const InputVectorPixelType & vect)
const override;
407 using Superclass::TransformCovariantVector;
409 OutputCovariantVectorType
410 TransformCovariantVector(
const InputCovariantVectorType & vec)
const override;
412 OutputVectorPixelType
413 TransformCovariantVector(
const InputVectorPixelType & vect)
const override;
415 using Superclass::TransformDiffusionTensor3D;
417 OutputDiffusionTensor3DType
418 TransformDiffusionTensor3D(
const InputDiffusionTensor3DType & tensor)
const override;
420 OutputVectorPixelType
421 TransformDiffusionTensor3D(
const InputVectorPixelType & tensor)
const override;
423 using Superclass::TransformSymmetricSecondRankTensor;
424 OutputSymmetricSecondRankTensorType
425 TransformSymmetricSecondRankTensor(
const InputSymmetricSecondRankTensorType & inputTensor)
const override;
427 OutputVectorPixelType
428 TransformSymmetricSecondRankTensor(
const InputVectorPixelType & inputTensor)
const override;
441 ComputeJacobianWithRespectToParameters(
const InputPointType & p, JacobianType & jacobian)
const override;
448 ComputeJacobianWithRespectToPosition(
const InputPointType & x, JacobianPositionType & jac)
const override;
449 using Superclass::ComputeJacobianWithRespectToPosition;
455 ComputeInverseJacobianWithRespectToPosition(
const InputPointType & x,
456 InverseJacobianPositionType & jac)
const override;
457 using Superclass::ComputeInverseJacobianWithRespectToPosition;
478 GetInverse(Self * inverse)
const;
482 InverseTransformBasePointer
483 GetInverseTransform()
const override;
499 const InverseMatrixType &
500 GetInverseMatrix()
const;
520 PrintSelf(std::ostream & os,
Indent indent)
const override;
522 const InverseMatrixType &
525 return m_InverseMatrix;
530 m_InverseMatrix = matrix;
531 m_InverseMatrixMTime.Modified();
536 if (m_MatrixMTime != m_InverseMatrixMTime)
547 ComputeMatrixParameters();
556 m_MatrixMTime.Modified();
560 ComputeTranslation();
565 m_Translation = translation;
583 itkGetConstMacro(Singular,
bool);
600 #ifndef ITK_MANUAL_INSTANTIATION
601 # include "itkMatrixOffsetTransformBase.hxx"