Orfeo Toolbox  3.16
itkScaleSkewVersor3DTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkScaleSkewVersor3DTransform.h,v $
5  Language: C++
6  Date: $Date: 2009-11-24 15:25:11 $
7  Version: $Revision: 1.16 $
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 __itkScaleSkewVersor3DTransform_h
19 #define __itkScaleSkewVersor3DTransform_h
20 
21 #include <iostream>
23 
24 namespace itk
25 {
26 
48 template < class TScalarType=double > // Data type for scalars:float or double
50  public VersorRigid3DTransform< TScalarType >
51 {
52 public:
58 
60  itkNewMacro( Self );
61 
64 
66  itkStaticConstMacro(InputSpaceDimension, unsigned int, 3);
67  itkStaticConstMacro(OutputSpaceDimension, unsigned int, 3);
68  itkStaticConstMacro(ParametersDimension, unsigned int, 15);
69 
71  typedef typename Superclass::ParametersType ParametersType;
72  typedef typename Superclass::JacobianType JacobianType;
73  typedef typename Superclass::ScalarType ScalarType;
74  typedef typename Superclass::InputPointType InputPointType;
75  typedef typename Superclass::OutputPointType OutputPointType;
76  typedef typename Superclass::InputVectorType InputVectorType;
77  typedef typename Superclass::OutputVectorType OutputVectorType;
78  typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
79  typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
80  typedef typename Superclass::InputCovariantVectorType
82  typedef typename Superclass::OutputCovariantVectorType
85  typedef typename Superclass::InverseMatrixType InverseMatrixType;
86  typedef typename Superclass::CenterType CenterType;
87  typedef typename Superclass::OffsetType OffsetType;
88  typedef typename Superclass::TranslationType TranslationType;
89 
90  typedef typename Superclass::VersorType VersorType;
91  typedef typename Superclass::AxisType AxisType;
92  typedef typename Superclass::AngleType AngleType;
93 
95  typedef Vector<TScalarType, 3>
98 
101  typedef typename TranslationType::ValueType TranslationValueType;
102 
103  typedef typename Superclass::AxisValueType AxisValueType;
104  typedef typename Superclass::ParameterValueType ParameterValueType;
105 
106 
110  virtual void SetMatrix(const MatrixType &matrix);
111 
120  virtual void SetParameters( const ParametersType & parameters );
121  virtual const ParametersType& GetParameters(void) const;
122 
123  void SetScale( const ScaleVectorType & scale );
124  itkGetConstReferenceMacro( Scale, ScaleVectorType );
125 
126  void SetSkew( const SkewVectorType & skew );
127  itkGetConstReferenceMacro( Skew, SkewVectorType );
128 
129  void SetIdentity();
130 
135  const JacobianType & GetJacobian(const InputPointType &point ) const;
136 
137 protected:
140  const OutputVectorType &offset);
141  ScaleSkewVersor3DTransform(unsigned int outputDims,
142  unsigned int paramDims);
144 
145  void PrintSelf(std::ostream &os, Indent indent) const;
146 
147  void SetVarScale(const ScaleVectorType & scale)
148  { m_Scale = scale; }
149 
150  void SetVarSkew(const SkewVectorType & skew)
151  { m_Skew = skew; }
152 
154  void ComputeMatrix(void);
155  void ComputeMatrixParameters(void);
156 
157 private:
158  ScaleSkewVersor3DTransform(const Self&); //purposely not implemented
159  void operator=(const Self&); //purposely not implemented
160 
163 
166 
167 }; //class ScaleSkewVersor3DTransform
168 
169 
170 } // namespace itk
171 
172 // Define instantiation macro for this template.
173 #define ITK_TEMPLATE_ScaleSkewVersor3DTransform(_, EXPORT, x, y) namespace itk { \
174  _(1(class EXPORT ScaleSkewVersor3DTransform< ITK_TEMPLATE_1 x >)) \
175  namespace Templates { typedef ScaleSkewVersor3DTransform< ITK_TEMPLATE_1 x > \
176  ScaleSkewVersor3DTransform##y; } \
177  }
178 
179 #if ITK_TEMPLATE_EXPLICIT
180 # include "Templates/itkScaleSkewVersor3DTransform+-.h"
181 #endif
182 
183 #if ITK_TEMPLATE_TXX
185 #endif
186 
187 
188 #endif /* __ScaleSkewVersor3DTransform_h */

Generated at Sun Feb 3 2013 00:05:08 for Orfeo Toolbox with doxygen 1.8.1.1