18 #ifndef sitkTransform_h
19 #define sitkTransform_h
30 template<
typename TScalar >
class TransformBaseTemplate;
40 class PimpleTransformBase;
94 template<
unsigned int NDimension>
96 : m_PimpleTransform( nullptr )
98 static_assert( NDimension == 2 || NDimension == 3,
"Only 2D and 3D transforms are supported" );
99 if ( compositeTransform ==
nullptr )
103 this->InternalInitialization<NDimension>(
sitkComposite, compositeTransform );
157 unsigned int GetDimension( )
const;
164 void SetParameters (
const std::vector<double>& parameters );
165 std::vector<double> GetParameters( )
const;
169 unsigned int GetNumberOfParameters( )
const;
174 void SetFixedParameters (
const std::vector<double>& parameters );
175 std::vector<double> GetFixedParameters( )
const;
179 unsigned int GetNumberOfFixedParameters( )
const;
185 std::vector< double > TransformPoint(
const std::vector< double > &point )
const;
198 std::vector< double > TransformVector(
const std::vector< double > &vector,
const std::vector< double > &point)
const;
203 virtual bool IsLinear()
const;
205 virtual void SetIdentity();
217 virtual bool SetInverse();
228 std::string ToString( )
const;
232 virtual std::string GetName()
const;
255 explicit Transform( PimpleTransformBase *pimpleTransform );
260 virtual void SetPimpleTransform( PimpleTransformBase *pimpleTransform );
264 template<
unsigned int VDimension>
271 template<
typename TransformType >
272 void operator() ( )
const
274 TransformType *t =
dynamic_cast<TransformType*
>(transform);
283 template<
class TransformType>
284 void InternalInitialization( TransformType *t );
288 template<
unsigned int >
289 void InternalBSplineInitialization(
Image & img );
291 template<
typename TDisplacementType >
292 void InternalDisplacementInitialization(
Image & img );
294 template <
class TMemberFunctionPo
inter >
297 using ObjectType = typename ::detail::FunctionTraits<TMemberFunctionPointer>::ClassType;
299 template<
typename TImageType >
300 TMemberFunctionPointer operator() ( )
const
302 return &ObjectType::template InternalDisplacementInitialization< TImageType >;
322 #endif // sitkTransform_h