go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkElasticBodySplineKernelTransform2.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkElasticBodySplineKernelTransform2.h,v $
5  Language: C++
6  Date: $Date: 2003/09/10 14:29:06 $
7  Version: $Revision: 1.29 $
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 __itkElasticBodySplineKernelTransform2_h
18 #define __itkElasticBodySplineKernelTransform2_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( 12.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 ) / 12.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 
130  TScalarType m_Alpha;
131 
132  private:
133  ElasticBodySplineKernelTransform2(const Self&); //purposely not implemented
134  void operator=(const Self&); //purposely not implemented
135 
136 };
137 
138 } // namespace itk
139 
140 #ifndef ITK_MANUAL_INSTANTIATION
141 #include "itkElasticBodySplineKernelTransform2.txx"
142 #endif
143 
144 #endif // __itkElasticBodySplineKernelTransform2_h
Superclass::OutputPointType OutputPointType
Superclass::OutputCovariantVectorType OutputCovariantVectorType
KernelTransform2< TScalarType, NDimensions > Superclass
Superclass::InputCovariantVectorType InputCovariantVectorType
vnl_matrix_fixed< TScalarType, NDimensions, NDimensions > GMatrixType
Superclass::InputVectorType InputVectorType
Superclass::OutputVectorType OutputVectorType
Superclass::InputPointType InputPointType
Superclass::ParametersType ParametersType
Superclass::ScalarType ScalarType
Superclass::InputCovariantVectorType InputCovariantVectorType
Superclass::JacobianType JacobianType
virtual const TScalarType GetPoissonRatio(void) const
Superclass::OutputCovariantVectorType OutputCovariantVectorType


Generated on 04-01-2014 for elastix by doxygen 1.8.5 elastix logo