go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkEulerTransform.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 #ifndef __itkEulerTransform_H__
19 #define __itkEulerTransform_H__
20 
24 
25 namespace itk
26 {
27 
34 template< unsigned int Dimension >
36 {
37 public:
38 
39  template< class TScalarType >
40  class Dummy
41  {
42 public:
43 
46 
47  };
48 
49 };
50 
57 template< >
58 class EulerGroup< 2 >
59 {
60 public:
61 
62  template< class TScalarType >
63  class Dummy
64  {
65 public:
66 
69 
70  };
71 
72 };
73 
80 template< >
81 class EulerGroup< 3 >
82 {
83 public:
84 
85  template< class TScalarType >
86  class Dummy
87  {
88 public:
89 
92 
93  };
94 
95 };
96 
103 template< class TScalarType, unsigned int Dimension >
105 {
106 public:
107 
110  itkStaticConstMacro( SpaceDimension, unsigned int, Dimension );
111 
112  // This declaration of 'Euler' does not work with the GCC compiler
113  // typedef EulerGroup< itkGetStaticConstMacro( SpaceDimension ) > Euler;
114  // The following trick works though:
115  template< unsigned int D >
117  {
118 public:
119 
121  };
122 
125 
126  typedef typename Euler::template Dummy< ScalarType > EulerDummy;
127  typedef typename EulerDummy::EulerTransform_tmp EulerTransform_tmp;
128 
129 };
130 
140 template< class TScalarType, unsigned int Dimension >
142  public EulerGroupTemplate<
143  TScalarType, Dimension >::EulerTransform_tmp
144 {
145 public:
146 
149  typedef typename EulerGroupTemplate<
150  TScalarType, Dimension >
151  ::EulerTransform_tmp Superclass;
153  typedef SmartPointer< const Self > ConstPointer;
154 
156  itkNewMacro( Self );
157 
160 
162  itkStaticConstMacro( SpaceDimension, unsigned int, Dimension );
163 
167  typedef typename Superclass::ScalarType ScalarType;
168  typedef typename Superclass::ParametersType ParametersType;
169  typedef typename Superclass::NumberOfParametersType NumberOfParametersType;
170  typedef typename Superclass::JacobianType JacobianType;
171  typedef typename Superclass::OffsetType OffsetType;
172  typedef typename Superclass::InputPointType InputPointType;
173  typedef typename Superclass::OutputPointType OutputPointType;
174  typedef typename Superclass::InputVectorType InputVectorType;
175  typedef typename Superclass::OutputVectorType OutputVectorType;
176  typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType;
177  typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType;
178  typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
179  typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
180 
181  typedef typename Superclass
182  ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType;
183  typedef typename Superclass::SpatialJacobianType SpatialJacobianType;
184  typedef typename Superclass
185  ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType;
186  typedef typename Superclass::SpatialHessianType SpatialHessianType;
187  typedef typename Superclass
188  ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType;
189  typedef typename Superclass::InternalMatrixType InternalMatrixType;
190 
194  virtual void SetComputeZYX( const bool arg )
195  {
196  if( SpaceDimension == 3 )
197  {
198  typedef AdvancedEuler3DTransform< ScalarType > Euler3DTransformType;
199  typename Euler3DTransformType::Pointer transform
200  = dynamic_cast< Euler3DTransformType * >( this );
201  if( transform )
202  {
203  transform->Euler3DTransformType::SetComputeZYX( arg );
204  }
205  }
206  }
207 
208 
212  virtual bool GetComputeZYX( void ) const
213  {
214  if( SpaceDimension == 3 )
215  {
216  typedef AdvancedEuler3DTransform< ScalarType > Euler3DTransformType;
217  typename Euler3DTransformType::ConstPointer transform
218  = dynamic_cast< const Euler3DTransformType * >( this );
219  if( transform )
220  {
221  return transform->Euler3DTransformType::GetComputeZYX();
222  }
223  }
224  return false;
225  }
226 
227 
228 protected:
229 
232 
233 private:
234 
235  EulerTransform( const Self & ); // purposely not implemented
236  void operator=( const Self & ); // purposely not implemented
237 
238 };
239 
240 } // end namespace itk
241 
242 #endif // end #ifndef __itkEulerTransform_H__
itk::EulerGroupTemplate::ScalarType
TScalarType ScalarType
Definition: itkEulerTransform.h:109
itk::EulerTransform::OutputVnlVectorType
Superclass::OutputVnlVectorType OutputVnlVectorType
Definition: itkEulerTransform.h:179
itk::EulerTransform::~EulerTransform
~EulerTransform()
Definition: itkEulerTransform.h:231
itk::EulerTransform::EulerTransform
EulerTransform(const Self &)
itk::EulerTransform::ParametersType
Superclass::ParametersType ParametersType
Definition: itkEulerTransform.h:168
SmartPointer< Self >
itk::EulerTransform::ScalarType
Superclass::ScalarType ScalarType
Definition: itkEulerTransform.h:167
itk::EulerGroupTemplate::Self
EulerGroupTemplate Self
Definition: itkEulerTransform.h:108
itk::EulerGroup::Dummy::EulerTransform_tmp
AdvancedMatrixOffsetTransformBase< TScalarType, Dimension, Dimension > EulerTransform_tmp
Definition: itkEulerTransform.h:45
itk::AdvancedRigid2DTransform
AdvancedRigid2DTransform of a vector space (e.g. space coordinates)
Definition: itkAdvancedRigid2DTransform.h:78
itk::EulerTransform::JacobianType
Superclass::JacobianType JacobianType
Definition: itkEulerTransform.h:170
itk::EulerTransform::GetComputeZYX
virtual bool GetComputeZYX(void) const
Definition: itkEulerTransform.h:212
itk::EulerTransform::JacobianOfSpatialJacobianType
Superclass ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
Definition: itkEulerTransform.h:185
itk::AdvancedMatrixOffsetTransformBase
Definition: itkAdvancedMatrixOffsetTransformBase.h:99
itk::EulerGroupTemplate::EulerGroupWrap::Euler
EulerGroup< D > Euler
Definition: itkEulerTransform.h:120
itk::EulerTransform::InternalMatrixType
Superclass::InternalMatrixType InternalMatrixType
Definition: itkEulerTransform.h:189
itk::EulerGroupTemplate::EulerGroupWrap
Definition: itkEulerTransform.h:117
itk::EulerTransform::InputPointType
Superclass::InputPointType InputPointType
Definition: itkEulerTransform.h:172
itk::EulerTransform::NonZeroJacobianIndicesType
Superclass ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
Definition: itkEulerTransform.h:182
itk::EulerGroupTemplate::itkStaticConstMacro
itkStaticConstMacro(SpaceDimension, unsigned int, Dimension)
itk::EulerTransform::ConstPointer
SmartPointer< const Self > ConstPointer
Definition: itkEulerTransform.h:153
itk::EulerTransform::InputVnlVectorType
Superclass::InputVnlVectorType InputVnlVectorType
Definition: itkEulerTransform.h:178
itk::EulerTransform::NumberOfParametersType
Superclass::NumberOfParametersType NumberOfParametersType
Definition: itkEulerTransform.h:169
itk::EulerTransform::operator=
void operator=(const Self &)
itk::EulerGroup::Dummy
Definition: itkEulerTransform.h:41
itk::EulerTransform::OffsetType
Superclass::OffsetType OffsetType
Definition: itkEulerTransform.h:171
itkAdvancedEuler3DTransform.h
itk::EulerGroup< 3 >::Dummy::EulerTransform_tmp
AdvancedEuler3DTransform< TScalarType > EulerTransform_tmp
Definition: itkEulerTransform.h:91
itk::AdvancedEuler3DTransform
AdvancedEuler3DTransform of a vector space (e.g. space coordinates)
Definition: itkAdvancedEuler3DTransform.h:67
itk::EulerGroupTemplate::EulerGroupWrapInstance
EulerGroupWrap< Dimension > EulerGroupWrapInstance
Definition: itkEulerTransform.h:123
itk::EulerGroup
This class only contains a dummy class.
Definition: itkEulerTransform.h:36
itk::EulerTransform::OutputPointType
Superclass::OutputPointType OutputPointType
Definition: itkEulerTransform.h:173
itk::EulerTransform::OutputVectorType
Superclass::OutputVectorType OutputVectorType
Definition: itkEulerTransform.h:175
itk::EulerTransform::SpatialJacobianType
Superclass::SpatialJacobianType SpatialJacobianType
Definition: itkEulerTransform.h:183
itk::EulerGroupTemplate::EulerDummy
Euler::template Dummy< ScalarType > EulerDummy
Definition: itkEulerTransform.h:126
itk::EulerTransform::itkStaticConstMacro
itkStaticConstMacro(SpaceDimension, unsigned int, Dimension)
itk::EulerTransform::SetComputeZYX
virtual void SetComputeZYX(const bool arg)
Definition: itkEulerTransform.h:194
itk::EulerTransform
This class combines the Euler2DTransform with the Euler3DTransform.
Definition: itkEulerTransform.h:144
itk
Definition: itkAdvancedImageToImageMetric.h:40
itk::EulerTransform::SpatialHessianType
Superclass::SpatialHessianType SpatialHessianType
Definition: itkEulerTransform.h:186
itk::EulerTransform::Pointer
SmartPointer< Self > Pointer
Definition: itkEulerTransform.h:152
itk::EulerGroupTemplate
This class templates the EulerGroup over its dimension.
Definition: itkEulerTransform.h:105
itk::EulerTransform::Superclass
EulerGroupTemplate< TScalarType, Dimension >::EulerTransform_tmp Superclass
Definition: itkEulerTransform.h:151
itk::EulerTransform::EulerTransform
EulerTransform()
Definition: itkEulerTransform.h:230
itk::EulerTransform::Self
EulerTransform Self
Definition: itkEulerTransform.h:148
TScalarType
itk::EulerGroupTemplate::Euler
EulerGroupWrapInstance::Euler Euler
Definition: itkEulerTransform.h:124
itk::EulerTransform::OutputCovariantVectorType
Superclass::OutputCovariantVectorType OutputCovariantVectorType
Definition: itkEulerTransform.h:177
itkAdvancedRigid2DTransform.h
itk::EulerGroupTemplate::EulerTransform_tmp
EulerDummy::EulerTransform_tmp EulerTransform_tmp
Definition: itkEulerTransform.h:127
itk::EulerTransform::InputVectorType
Superclass::InputVectorType InputVectorType
Definition: itkEulerTransform.h:174
itkAdvancedMatrixOffsetTransformBase.h
itk::EulerGroup< 2 >::Dummy::EulerTransform_tmp
AdvancedRigid2DTransform< TScalarType > EulerTransform_tmp
Definition: itkEulerTransform.h:68
itk::EulerTransform::JacobianOfSpatialHessianType
Superclass ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
Definition: itkEulerTransform.h:188
itk::EulerTransform::InputCovariantVectorType
Superclass::InputCovariantVectorType InputCovariantVectorType
Definition: itkEulerTransform.h:176


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.8.18 elastix logo