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  * Copyright UMC Utrecht and contributors
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 /*=========================================================================
19 
20  Program: Insight Segmentation & Registration Toolkit
21  Module: $RCSfile: itkElasticBodySplineKernelTransform2.h,v $
22  Language: C++
23  Date: $Date: 2003/09/10 14:29:06 $
24  Version: $Revision: 1.29 $
25 
26  Copyright (c) Insight Software Consortium. All rights reserved.
27  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
28 
29  This software is distributed WITHOUT ANY WARRANTY; without even
30  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
31  PURPOSE. See the above copyright notices for more information.
32 
33 =========================================================================*/
34 #ifndef __itkElasticBodySplineKernelTransform2_h
35 #define __itkElasticBodySplineKernelTransform2_h
36 
37 #include "itkKernelTransform2.h"
38 
39 namespace itk
40 {
41 
54 template< class TScalarType = double, // Data type for scalars (float or double)
55 unsigned int NDimensions = 3 >
56 // Number of dimensions
58  public KernelTransform2< TScalarType, NDimensions >
59 {
60 public:
61 
64  typedef KernelTransform2< TScalarType,
65  NDimensions > Superclass;
66 
68  typedef SmartPointer< const Self > ConstPointer;
69 
72 
74  itkNewMacro( Self );
75 
77  typedef typename Superclass::ScalarType ScalarType;
78 
81 
84 
86  itkStaticConstMacro( SpaceDimension, unsigned int, Superclass::SpaceDimension );
87 
91  //itkSetMacro( Alpha, TScalarType ); Cant use the macro because the matrices must be recomputed
92  virtual void SetAlpha( TScalarType Alpha )
93  {
94  this->m_Alpha = Alpha;
95  this->m_LMatrixComputed = false;
96  this->m_LInverseComputed = false;
97  this->m_WMatrixComputed = false;
98  }
99 
100 
102  itkGetConstMacro( Alpha, TScalarType );
103 
105  virtual void SetPoissonRatio( const TScalarType Nu )
106  {
107  if( Nu > -1.0 && Nu < 0.5 )
108  {
109  this->SetAlpha( 12.0 * ( 1.0 - Nu ) - 1.0 );
110  }
111  }
112 
113 
114  virtual const TScalarType GetPoissonRatio( void ) const
115  {
116  return 1.0 - ( this->m_Alpha + 1.0 ) / 12.0;
117  }
118 
119 
128 
129 protected:
130 
133  void PrintSelf( std::ostream & os, Indent indent ) const;
134 
138 
147  void ComputeG( const InputVectorType & x, GMatrixType & GMatrix ) const;
148 
152  TScalarType m_Alpha;
153 
154 private:
155 
156  ElasticBodySplineKernelTransform2( const Self & ); // purposely not implemented
157  void operator=( const Self & ); // purposely not implemented
158 
159 };
160 
161 } // namespace itk
162 
163 #ifndef ITK_MANUAL_INSTANTIATION
164 #include "itkElasticBodySplineKernelTransform2.hxx"
165 #endif
166 
167 #endif // __itkElasticBodySplineKernelTransform2_h
Superclass::OutputPointType OutputPointType
Superclass::OutputCovariantVectorType OutputCovariantVectorType
Superclass::InputCovariantVectorType InputCovariantVectorType
itkStaticConstMacro(SpaceDimension, unsigned int, Superclass::SpaceDimension)
Superclass::InputVectorType InputVectorType
vnl_matrix_fixed< TScalarType, NDimensions, NDimensions > GMatrixType
void PrintSelf(std::ostream &os, Indent indent) const
Superclass::OutputVectorType OutputVectorType
Superclass::InputPointType InputPointType
Superclass::ParametersType ParametersType
Superclass::ScalarType ScalarType
Superclass::InputCovariantVectorType InputCovariantVectorType
Superclass::JacobianType JacobianType
void ComputeG(const InputVectorType &x, GMatrixType &GMatrix) const
virtual const TScalarType GetPoissonRatio(void) const
KernelTransform2< TScalarType, NDimensions > Superclass
Superclass::OutputCovariantVectorType OutputCovariantVectorType


Generated on 04-09-2015 for elastix by doxygen 1.8.9.1 elastix logo