/*========================================================================= * * Copyright UMC Utrecht and contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *=========================================================================*//*========================================================================= Program: Insight Segmentation & Registration Toolkit Module: $RCSfile: itkThinPlateSplineKernelTransform2.h,v $ Language: C++ Date: $Date: 2006-11-28 14:22:18 $ Version: $Revision: 1.1 $ Copyright (c) Insight Software Consortium. All rights reserved. See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information.=========================================================================*/#ifndef __itkThinPlateSplineKernelTransform2_h#define __itkThinPlateSplineKernelTransform2_h#include"itkKernelTransform2.h"namespaceitk{template<classTScalarType,// Data type for scalars (float or double)unsignedintNDimensions=3>// Number of dimensionsclassThinPlateSplineKernelTransform2:publicKernelTransform2<TScalarType,NDimensions>{public:typedefThinPlateSplineKernelTransform2Self;typedefKernelTransform2<TScalarType,NDimensions>Superclass;typedefSmartPointer<Self>Pointer;typedefSmartPointer<constSelf>ConstPointer;itkNewMacro(Self);itkTypeMacro(ThinPlateSplineKernelTransform2,KernelTransform2);typedeftypenameSuperclass::ScalarTypeScalarType;typedeftypenameSuperclass::ParametersTypeParametersType;typedeftypenameSuperclass::JacobianTypeJacobianType;itkStaticConstMacro(SpaceDimension,unsignedint,Superclass::SpaceDimension);typedeftypenameSuperclass::InputPointTypeInputPointType;typedeftypenameSuperclass::OutputPointTypeOutputPointType;typedeftypenameSuperclass::InputVectorTypeInputVectorType;typedeftypenameSuperclass::OutputVectorTypeOutputVectorType;typedeftypenameSuperclass::InputCovariantVectorTypeInputCovariantVectorType;typedeftypenameSuperclass::OutputCovariantVectorTypeOutputCovariantVectorType;typedeftypenameSuperclass::PointsIteratorPointsIterator;voidSetSigma(doublesigma){};// this is only to match the compact supported classprotected:ThinPlateSplineKernelTransform2(){this->m_FastComputationPossible=true;}virtual~ThinPlateSplineKernelTransform2(){}typedeftypenameSuperclass::GMatrixTypeGMatrixType;voidComputeG(constInputVectorType&x,GMatrixType&GMatrix)const;virtualvoidComputeDeformationContribution(constInputPointType&inputPoint,OutputPointType&result)const;private:ThinPlateSplineKernelTransform2(constSelf&);// purposely not implementedvoidoperator=(constSelf&);// purposely not implemented};}// namespace itk#include"itkThinPlateSplineKernelTransform2.cpp"#endif // __itkThinPlateSplineKernelTransform2_h