go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkElasticBodyReciprocalSplineKernelTransform2.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkElasticBodyReciprocalSplineKernelTransform2.h,v $
5  Language: C++
6  Date: $Date: 2006/04/17 01:50:19 $
7  Version: $Revision: 1.8 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
17 #ifndef __itkElasticBodyReciprocalSplineKernelTransform2_h
18 #define __itkElasticBodyReciprocalSplineKernelTransform2_h
19 
20 #include "itkKernelTransform2.h"
21 
22 
23 namespace itk
24 {
25 
38 template <class TScalarType = double, // Data type for scalars (float or double)
39  unsigned int NDimensions = 3> // Number of dimensions
41  public KernelTransform2< TScalarType, NDimensions>
42 {
43 public:
46  typedef KernelTransform2< TScalarType,
47  NDimensions> Superclass;
48 
49  typedef SmartPointer<Self> Pointer;
50  typedef SmartPointer<const Self> ConstPointer;
51 
54 
56  itkNewMacro( Self );
57 
59  typedef typename Superclass::ScalarType ScalarType;
60 
63 
66 
68  itkStaticConstMacro(SpaceDimension, unsigned int,Superclass::SpaceDimension);
69 
73  //itkSetMacro( Alpha, TScalarType ); Cant use the macro because the matrices must be recomputed
74  virtual void SetAlpha(TScalarType Alpha) {
75  this->m_Alpha=Alpha;
76  this->m_LMatrixComputed=false;
77  this->m_LInverseComputed=false;
78  this->m_WMatrixComputed=false;
79  }
80 
82  itkGetConstMacro( Alpha, TScalarType );
83 
85  virtual void SetPoissonRatio( const TScalarType Nu )
86  {
87  if ( Nu > -1.0 && Nu < 0.5 )
88  {
89  this->SetAlpha( 8.0 * ( 1.0 - Nu ) - 1.0 );
90  }
91  }
92 
93  virtual const TScalarType GetPoissonRatio( void ) const
94  {
95  return 1.0 - ( this->m_Alpha + 1.0 ) / 8.0;
96  }
97 
106 
107 
108 protected:
111  void PrintSelf(std::ostream& os, Indent indent) const;
112 
116 
125  void ComputeG(const InputVectorType& x, GMatrixType & GMatrix) const;
126 
128  TScalarType m_Alpha;
129 
130  private:
131  ElasticBodyReciprocalSplineKernelTransform2(const Self&); //purposely not implemented
132  void operator=(const Self&); //purposely not implemented
133 
134 };
135 
136 } // namespace itk
137 
138 #ifndef ITK_MANUAL_INSTANTIATION
139 #include "itkElasticBodyReciprocalSplineKernelTransform2.txx"
140 #endif
141 
142 #endif // __itkElasticBodyReciprocalSplineKernelTransform2_h
Superclass::OutputPointType OutputPointType
vnl_matrix_fixed< TScalarType, NDimensions, NDimensions > GMatrixType
Superclass::InputVectorType InputVectorType
Superclass::OutputVectorType OutputVectorType
Superclass::InputPointType InputPointType
Superclass::ParametersType ParametersType
Superclass::ScalarType ScalarType
Superclass::JacobianType JacobianType


Generated on 06-12-2013 for elastix by doxygen 1.8.5 elastix logo