go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkAdvancedVersorTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkAdvancedVersorTransform.h,v $
5  Language: C++
6  Date: $Date: 2006-08-09 04:35:32 $
7  Version: $Revision: 1.17 $
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 __itkAdvancedVersorTransform_h
18 #define __itkAdvancedVersorTransform_h
19 
20 #include <iostream>
22 #include "vnl/vnl_quaternion.h"
23 #include "itkVersor.h"
24 
25 namespace itk
26 {
27 
49 template< class TScalarType = double >
50 //Data type for scalars (float or double)
51 class ITK_EXPORT AdvancedVersorTransform : public AdvancedRigid3DTransform< TScalarType >
52 {
53 public:
54 
58  typedef SmartPointer< Self > Pointer;
59  typedef SmartPointer< const Self > ConstPointer;
60 
63 
65  itkNewMacro( Self );
66 
68  itkStaticConstMacro( SpaceDimension, unsigned int, 3 );
69  itkStaticConstMacro( InputSpaceDimension, unsigned int, 3 );
70  itkStaticConstMacro( OutputSpaceDimension, unsigned int, 3 );
71  itkStaticConstMacro( ParametersDimension, unsigned int, 3 );
72 
92 
93  typedef typename Superclass
96  typedef typename Superclass
99  typedef typename Superclass
102 
104  typedef vnl_quaternion< TScalarType > VnlQuaternionType;
105 
107  typedef Versor< TScalarType > VersorType;
108  typedef typename VersorType::VectorType AxisType;
109  typedef typename VersorType::ValueType AngleType;
110 
119  void SetParameters( const ParametersType & parameters );
120 
122  const ParametersType & GetParameters( void ) const;
123 
125  void SetRotation( const VersorType & versor );
126 
127  void SetRotation( const AxisType & axis, AngleType angle );
128 
129  itkGetConstReferenceMacro( Versor, VersorType );
130 
132  virtual void SetIdentity( void );
133 
135  virtual void GetJacobian(
136  const InputPointType &,
137  JacobianType &,
138  NonZeroJacobianIndicesType & ) const;
139 
140 protected:
141 
143  AdvancedVersorTransform( const MatrixType & matrix,
144  const OutputVectorType & offset );
145  AdvancedVersorTransform( unsigned int paramDims );
147 
150 
153  virtual void SetRotationMatrix( const MatrixType & matrix )
154  { this->Superclass::SetRotationMatrix( matrix ); }
155 
156  void SetVarVersor( const VersorType & newVersor )
157  { m_Versor = newVersor; }
158 
160  void PrintSelf( std::ostream & os, Indent indent ) const;
161 
164  void ComputeMatrix( void );
165 
166  void ComputeMatrixParameters( void );
167 
168 private:
169 
171  AdvancedVersorTransform( const Self & other ); // Not implemented
172 
174  const Self & operator=( const Self & ); // Not implemented
175 
178 
179 };
180 
181 //class AdvancedVersorTransform
182 
183 } // namespace itk
184 
185 #ifndef ITK_MANUAL_INSTANTIATION
186 #include "itkAdvancedVersorTransform.hxx"
187 #endif
188 
189 #endif /* __itkAdvancedVersorTransform_h */
Superclass::NumberOfParametersType NumberOfParametersType
AdvancedRigid3DTransform< TScalarType > Superclass
Superclass::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
Superclass::OutputPointType OutputPointType
Superclass::OutputCovariantVectorType OutputCovariantVectorType
Superclass::SpatialJacobianType SpatialJacobianType
Superclass::InverseMatrixType InverseMatrixType
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
Superclass::OutputVectorType OutputVectorType
Superclass::InputCovariantVectorType InputCovariantVectorType
Superclass::InternalMatrixType InternalMatrixType
AdvancedRigid3DTransform of a vector space (e.g. space coordinates)
SmartPointer< const Self > ConstPointer
Superclass::ParametersType ParametersType
void SetVarVersor(const VersorType &newVersor)
Superclass::JacobianType JacobianType
Superclass::InputVnlVectorType InputVnlVectorType
Superclass::ParametersType ParametersType
virtual void SetRotationMatrix(const MatrixType &matrix)
Superclass::SpatialHessianType SpatialHessianType
Superclass::OutputVnlVectorType OutputVnlVectorType
Superclass::OutputVectorType OutputVectorType
Superclass::InputPointType InputPointType
Superclass::InputPointType InputPointType
Superclass::InputVectorType InputVectorType
vnl_quaternion< TScalarType > VnlQuaternionType
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType


Generated on 11-03-2014 for elastix by doxygen 1.8.6 elastix logo