18 #ifndef sitkTransform_h
19 #define sitkTransform_h
31 template <
typename TScalar>
36 template <
typename TScalar,
unsigned int NDimension>
43 class PimpleTransformBase;
99 template <
unsigned int NDimension>
103 static_assert(NDimension == 2 || NDimension == 3,
"Only 2D and 3D transforms are supported");
104 if (compositeTransform ==
nullptr)
108 this->InternalInitialization<NDimension>(
sitkComposite, compositeTransform);
166 GetDimension()
const;
174 SetParameters(
const std::vector<double> & parameters);
176 GetParameters()
const;
181 GetNumberOfParameters()
const;
187 SetFixedParameters(
const std::vector<double> & parameters);
189 GetFixedParameters()
const;
194 GetNumberOfFixedParameters()
const;
201 TransformPoint(
const std::vector<double> &
point)
const;
215 TransformVector(
const std::vector<double> & vector,
const std::vector<double> &
point)
const;
276 GetTransformEnum()
const;
279 explicit Transform(PimpleTransformBase * pimpleTransform);
285 SetPimpleTransform(std::unique_ptr<PimpleTransformBase> && pimpleTransform);
288 template <
unsigned int VDimension>
296 template <
typename TransformType>
300 TransformType * t =
dynamic_cast<TransformType *
>(transform);
309 template <
class TransformType>
311 InternalInitialization(TransformType * t);
316 template <
unsigned int>
318 InternalBSplineInitialization(
Image & img);
320 template <
typename TDisplacementType>
322 InternalDisplacementInitialization(
Image & img);
324 template <
class TMemberFunctionPo
inter>
327 using ObjectType = typename ::detail::FunctionTraits<TMemberFunctionPointer>::ClassType;
329 template <
typename TImageType>
330 TMemberFunctionPointer
333 return &ObjectType::template InternalDisplacementInitialization<TImageType>;
355 #endif // sitkTransform_h