ITK  4.1.0
Insight Segmentation and Registration Toolkit
itkFixedCenterOfRotationAffineTransform.h
Go to the documentation of this file.
00001 /*=========================================================================
00002  *
00003  *  Copyright Insight Software Consortium
00004  *
00005  *  Licensed under the Apache License, Version 2.0 (the "License");
00006  *  you may not use this file except in compliance with the License.
00007  *  You may obtain a copy of the License at
00008  *
00009  *         http://www.apache.org/licenses/LICENSE-2.0.txt
00010  *
00011  *  Unless required by applicable law or agreed to in writing, software
00012  *  distributed under the License is distributed on an "AS IS" BASIS,
00013  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  *  See the License for the specific language governing permissions and
00015  *  limitations under the License.
00016  *
00017  *=========================================================================*/
00018 #ifndef __itkFixedCenterOfRotationAffineTransform_h
00019 #define __itkFixedCenterOfRotationAffineTransform_h
00020 
00021 #include "itkScalableAffineTransform.h"
00022 
00023 namespace itk
00024 {
00033 template<
00034   class TScalarType = double,   // Data type for scalars (e.g. float or double)
00035   unsigned int NDimensions = 3 >
00036 // Number of dimensions in the input space
00037 class ITK_EXPORT FixedCenterOfRotationAffineTransform:
00038   public ScalableAffineTransform< TScalarType, NDimensions >
00039 {
00040 public:
00042   typedef FixedCenterOfRotationAffineTransform                Self;
00043   typedef ScalableAffineTransform< TScalarType, NDimensions > Superclass;
00044   typedef SmartPointer< Self >                                Pointer;
00045   typedef SmartPointer< const Self >                          ConstPointer;
00046 
00048   itkTypeMacro(FixedCenterOfRotationAffineTransform, ScalableAffineTransform);
00049 
00051   itkNewMacro(Self);
00052 
00054   itkStaticConstMacro(InputSpaceDimension, unsigned int, NDimensions);
00055   itkStaticConstMacro(OutputSpaceDimension, unsigned int, NDimensions);
00056   itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions);
00057   itkStaticConstMacro( ParametersDimension, unsigned int,
00058                        NDimensions * ( NDimensions + 2 ) );
00060 
00062   typedef typename Superclass::ParametersType            ParametersType;
00063   typedef typename Superclass::JacobianType              JacobianType;
00064   typedef typename Superclass::ScalarType                ScalarType;
00065   typedef typename Superclass::InputVectorType           InputVectorType;
00066   typedef typename Superclass::OutputVectorType          OutputVectorType;
00067   typedef typename Superclass::InputCovariantVectorType  InputCovariantVectorType;
00068   typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType;
00069   typedef typename Superclass::InputVnlVectorType        InputVnlVectorType;
00070   typedef typename Superclass::OutputVnlVectorType       OutputVnlVectorType;
00071   typedef typename Superclass::InputPointType            InputPointType;
00072   typedef typename Superclass::OutputPointType           OutputPointType;
00073   typedef typename Superclass::MatrixType                MatrixType;
00074   typedef typename Superclass::InverseMatrixType         InverseMatrixType;
00075   typedef typename Superclass::CenterType                CenterType;
00076   typedef typename Superclass::TranslationType           TranslationType;
00077   typedef typename Superclass::OffsetType                OffsetType;
00078 
00080   void SetCenterOfRotationComponent(const InputPointType & cor)
00081   { this->SetCenter(cor); }
00082   InputPointType GetCenterOfRotationComponent(void) const
00083   { return this->GetCenter(); }
00085 
00088   void SetMatrixComponent(const MatrixType & matrix)
00089   { this->SetMatrix(matrix); }
00090 
00092   const MatrixType & GetMatrixComponent() const
00093   { return this->GetMatrix(); }
00094 
00096   void SetOffsetComponent(const OffsetType & offset)
00097   { this->SetTranslation(offset); }
00098 
00100   const OffsetType & GetOffsetComponent(void) const
00101   { return this->GetTranslation(); }
00102 protected:
00103 
00105   FixedCenterOfRotationAffineTransform(const MatrixType & matrix,
00106                                        const OutputVectorType & offset);
00107   FixedCenterOfRotationAffineTransform(unsigned int outputSpaceDimension,
00108                                        unsigned int parametersDimension);
00109   FixedCenterOfRotationAffineTransform();
00111 
00113   virtual ~FixedCenterOfRotationAffineTransform();
00114 private:
00115   FixedCenterOfRotationAffineTransform(const Self & other);
00116   const Self & operator=(const Self &);
00117 }; //class FixedCenterOfRotationAffineTransform
00118 }  // namespace itk
00120 
00121 // Define instantiation macro for this template.
00122 #define ITK_TEMPLATE_FixedCenterOfRotationAffineTransform(_, EXPORT, TypeX, TypeY)     \
00123   namespace itk                                                                        \
00124   {                                                                                    \
00125   _( 2 ( class EXPORT FixedCenterOfRotationAffineTransform< ITK_TEMPLATE_2 TypeX > ) ) \
00126   namespace Templates                                                                  \
00127   {                                                                                    \
00128   typedef FixedCenterOfRotationAffineTransform< ITK_TEMPLATE_2 TypeX >                 \
00129   FixedCenterOfRotationAffineTransform##TypeY;                                       \
00130   }                                                                                    \
00131   }
00132 
00133 #if ITK_TEMPLATE_EXPLICIT
00134 #include "Templates/itkFixedCenterOfRotationAffineTransform+-.h"
00135 #endif
00136 
00137 #if ITK_TEMPLATE_TXX
00138 #include "itkFixedCenterOfRotationAffineTransform.hxx"
00139 #endif
00140 
00141 #endif /* __itkFixedCenterOfRotationAffineTransform_h */
00142