00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
#ifndef __itkCenteredRigid2DTransform_h
00019
#define __itkCenteredRigid2DTransform_h
00020
00021
#include <iostream>
00022
#include "itkRigid2DTransform.h"
00023
00024
namespace itk
00025 {
00026
00070
template <
class TScalarType=
double >
00071 class ITK_EXPORT CenteredRigid2DTransform :
00072
public Rigid2DTransform< TScalarType >
00073 {
00074
public:
00076 typedef CenteredRigid2DTransform
Self;
00077 typedef Rigid2DTransform< TScalarType > Superclass;
00078 typedef SmartPointer<Self> Pointer;
00079 typedef SmartPointer<const Self> ConstPointer;
00080
00082
itkNewMacro(
Self );
00083
00085
itkTypeMacro( CenteredRigid2DTransform,
Rigid2DTransform );
00086
00088
itkStaticConstMacro(SpaceDimension,
unsigned int, 2);
00089
itkStaticConstMacro(OutputSpaceDimension,
unsigned int, 2);
00090
itkStaticConstMacro(ParametersDimension,
unsigned int, 5);
00091
00092
00094
typedef typename Superclass::ScalarType
ScalarType;
00095
00097
typedef typename Superclass::ParametersType
ParametersType;
00098
00100
typedef typename Superclass::JacobianType
JacobianType;
00101
00103
typedef typename Superclass::OffsetType
OffsetType;
00104
00106
typedef typename Superclass::InputPointType
InputPointType;
00107 typedef typename Superclass::OutputPointType
OutputPointType;
00108
00110
typedef typename Superclass::InputVectorType
InputVectorType;
00111 typedef typename Superclass::OutputVectorType
OutputVectorType;
00112
00114
typedef typename Superclass::InputCovariantVectorType
InputCovariantVectorType;
00115 typedef typename Superclass::OutputCovariantVectorType
OutputCovariantVectorType;
00116
00118
typedef typename Superclass::InputVnlVectorType
InputVnlVectorType;
00119 typedef typename Superclass::OutputVnlVectorType
OutputVnlVectorType;
00120
00125
void SetParameters(
const ParametersType & parameters );
00126
00131
const ParametersType & GetParameters(
void ) const;
00132
00134
void SetAngle(TScalarType angle);
00135
void SetAngleInDegrees(TScalarType angle);
00136 itkGetConstReferenceMacro( Angle, TScalarType );
00137
00139
void SetCenter( const
InputPointType & center );
00140 itkGetConstReferenceMacro( Center,
InputPointType );
00141
00143
void SetTranslation( const
OutputVectorType & translation );
00144 itkGetConstReferenceMacro( Translation,
OutputVectorType );
00145
00150 const
JacobianType & GetJacobian(const InputPointType &point ) const;
00151
00154 virtual
void SetIdentity(
void );
00155
00156
00157 protected:
00158 CenteredRigid2DTransform();
00159 ~CenteredRigid2DTransform(){};
00160
00161 CenteredRigid2DTransform(
unsigned int outputSpaceDimension,
unsigned int parametersDimension);
00162
00163 void PrintSelf(std::ostream &os,
Indent indent)
const;
00164
00166
virtual void ComputeMatrixAndOffset(
void);
00167
00168
private:
00169 CenteredRigid2DTransform(
const Self&);
00170
void operator=(
const Self&);
00171
00172 TScalarType m_Angle;
00173
00174
InputPointType m_Center;
00175
00176
OutputVectorType m_Translation;
00177
00178 };
00179
00180
00181 }
00182
00183
00184
#ifndef ITK_MANUAL_INSTANTIATION
00185
#include "itkCenteredRigid2DTransform.txx"
00186
#endif
00187
00188
#endif