33#ifndef itkAdvancedIdentityTransform_h
34#define itkAdvancedIdentityTransform_h
39#include "itkCovariantVector.h"
40#include <vnl/vnl_vector_fixed.h>
42#include "itkArray2D.h"
45#include "itkObjectFactory.h"
71template <
class TScalarType,
unsigned int NDimensions = 3>
98 using typename Superclass::ParametersType;
99 using typename Superclass::NumberOfParametersType;
100 using typename Superclass::TransformCategoryEnum;
103 using typename Superclass::JacobianType;
156 OutputCovariantVectorType
171 InverseTransformBasePointer
174 return this->New().GetPointer();
192 TransformCategoryEnum
195 return TransformCategoryEnum::Linear;
200 const ParametersType &
203 return this->m_FixedParameters;
213 const ParametersType &
216 return this->m_Parameters;
231 j = this->m_LocalJacobian;
232 nonZeroJacobianIndices = this->m_NonZeroJacobianIndices;
240 sj = this->m_SpatialJacobian;
248 sh = this->m_SpatialHessian;
258 jsj = this->m_JacobianOfSpatialJacobian;
259 nonZeroJacobianIndices = this->m_NonZeroJacobianIndices;
270 sj = this->m_SpatialJacobian;
271 jsj = this->m_JacobianOfSpatialJacobian;
272 nonZeroJacobianIndices = this->m_NonZeroJacobianIndices;
282 jsh = this->m_JacobianOfSpatialHessian;
283 nonZeroJacobianIndices = this->m_NonZeroJacobianIndices;
296 sh = this->m_SpatialHessian;
297 jsh = this->m_JacobianOfSpatialHessian;
298 nonZeroJacobianIndices = this->m_NonZeroJacobianIndices;
307 this->m_LocalJacobian = JacobianType(NDimensions, 1, 0.0);
310 this->m_SpatialJacobian.SetIdentity();
313 this->m_NonZeroJacobianIndices.resize(ParametersDimension);
314 std::iota(m_NonZeroJacobianIndices.begin(), m_NonZeroJacobianIndices.end(), 0u);
317 this->m_HasNonZeroSpatialHessian =
false;
318 this->m_HasNonZeroJacobianOfSpatialHessian =
false;
319 this->m_JacobianOfSpatialJacobian.resize(ParametersDimension);
320 this->m_JacobianOfSpatialHessian.resize(ParametersDimension);
330 using Superclass::TransformVector;
331 using Superclass::TransformCovariantVector;
333 JacobianType m_LocalJacobian{};