KWStyle - itkVersorRigid3DTransform.h
 
Matrix View
Description

1 /*=========================================================================
2
3   Program:   Insight Segmentation & Registration Toolkit
4   Module:    $RCSfile: itkVersorRigid3DTransform.h.html,v $
5   Language:  C++
6   Date:      $Date: 2006/01/17 19:15:49 $
7   Version:   $Revision: 1.4 $
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
18 #ifndef __itkVersorRigid3DTransform_h
19 #define __itkVersorRigid3DTransform_h
20
21 #include <iostream>
22 #include "itkVersorTransform.h"
23
24 namespace itk
25 {
26
27 /** \class VersorRigid3DTransform
28  *
29  * \brief VersorRigid3DTransform of a vector space (e.g. space coordinates)
30  *
31  * This transform applies a rotation and translation to the space
32  *
33  * \ingroup Transforms
34  */
35 LEN template < class TScalarType=double >    // Data type for scalars (float or double)
36 class ITK_EXPORT VersorRigid3DTransform : 
37 IND ******public VersorTransform< TScalarType > 
38 {
39 public:
40   /** Standard class typedefs. */
41   typedef VersorRigid3DTransform            Self;
42   typedef VersorTransform< TScalarType >    Superclass;
43   typedef SmartPointer<Self>                Pointer;
44   typedef SmartPointer<const Self>          ConstPointer;
45     
46   /** New macro for creation of through a Smart Pointer. */
47   itkNewMacro( Self );
48
49   /** Run-time type information (and related methods). */
50   itkTypeMacro( VersorRigid3DTransform, VersorTransform );
51
52   /** Dimension of parameters. */
53   itkStaticConstMacro(SpaceDimension, unsigned int, 3);
54   itkStaticConstMacro(InputSpaceDimension, unsigned int, 3);
55   itkStaticConstMacro(OutputSpaceDimension, unsigned int, 3);
56   itkStaticConstMacro(ParametersDimension, unsigned int, 6);
57
58 IND ****/** Parameters Type   */
59   typedef typename Superclass::ParametersType         ParametersType;
60   typedef typename Superclass::JacobianType           JacobianType;
61   typedef typename Superclass::ScalarType             ScalarType;
62   typedef typename Superclass::InputPointType         InputPointType;
63   typedef typename Superclass::OutputPointType        OutputPointType;
64   typedef typename Superclass::InputVectorType        InputVectorType;
65   typedef typename Superclass::OutputVectorType       OutputVectorType;
66   typedef typename Superclass::InputVnlVectorType     InputVnlVectorType;
67   typedef typename Superclass::OutputVnlVectorType    OutputVnlVectorType;
68   typedef typename Superclass::InputCovariantVectorType 
69 IND ******************************************************InputCovariantVectorType;
70   typedef typename Superclass::OutputCovariantVectorType      
71 IND ******************************************************OutputCovariantVectorType;
72   typedef typename Superclass::MatrixType             MatrixType;
73   typedef typename Superclass::InverseMatrixType      InverseMatrixType;
74   typedef typename Superclass::CenterType             CenterType;
75   typedef typename Superclass::OffsetType             OffsetType;
76   typedef typename Superclass::TranslationType        TranslationType;
77
78   /** Versor type. */
79   typedef typename Superclass::VersorType             VersorType;
80   typedef typename Superclass::AxisType               AxisType;
81   typedef typename Superclass::AngleType              AngleType;
82   
83   /** Set the transformation from a container of parameters
84    * This is typically used by optimizers.
85    * There are 6 parameters. The first three represent the
86    * versor, the last three represent the translation. */
87   void SetParameters( const ParametersType & parameters );
88   virtual const ParametersType& GetParameters(void) const;
89
90   /** This method computes the Jacobian matrix of the transformation.
91    * given point or vector, returning the transformed point or
92    * vector. The rank of the Jacobian will also indicate if the 
93    * transform is invertible at this point. */
94   const JacobianType & GetJacobian(const InputPointType  &point ) const;
95
96 protected:
97   VersorRigid3DTransform(unsigned int outputSpaceDim,
98                          unsigned int paramDim);
99   VersorRigid3DTransform(const MatrixType & matrix,
100                          const OutputVectorType & offset);
101   VersorRigid3DTransform();
102   ~VersorRigid3DTransform(){};
103
104   void PrintSelf(std::ostream &os, Indent indent) const;
105
106   /** This method must be made protected here because it is not a safe way of
107    * initializing the Versor */
108   virtual void SetRotationMatrix(const MatrixType & matrix)
109     { this->Superclass::SetRotationMatrix( matrix ); }
110  
111 private:
112   VersorRigid3DTransform(const Self&); //purposely not implemented
113   void operator=(const Self&); //purposely not implemented
114
115 }; //class VersorRigid3DTransform
116
117
118 }  // namespace itk
119
120
121 #ifndef ITK_MANUAL_INSTANTIATION
122 #include "itkVersorRigid3DTransform.txx"
123 #endif
124
125 #endif /* __itkVersorRigid3DTransform_h */
126

Generated by KWStyle 1.0b on Tuesday January,17 at 02:14:53PM
© Kitware Inc.