00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkIdentityTransform_h
00018
#define __itkIdentityTransform_h
00019
00020
#include "itkObject.h"
00021
#include "itkPoint.h"
00022
#include "itkVector.h"
00023
#include "itkCovariantVector.h"
00024
#include "vnl/vnl_vector_fixed.h"
00025
#include "itkArray.h"
00026
#include "itkArray2D.h"
00027
#include "itkTransform.h"
00028
00029
#include "itkObjectFactory.h"
00030
00031
00032
namespace itk
00033 {
00034
00054
template <
class TScalarType,
00055
unsigned int NDimensions=3>
00056 class ITK_EXPORT IdentityTransform :
public Transform<TScalarType,NDimensions,NDimensions>
00057 {
00058
public:
00060 typedef IdentityTransform
Self;
00061 typedef Transform<TScalarType,NDimensions,NDimensions> Superclass;
00062 typedef SmartPointer< Self > Pointer;
00063 typedef SmartPointer< const Self > ConstPointer;
00064
00066
itkNewMacro(
Self);
00067
00069
itkTypeMacro( IdentityTransform,
Transform );
00070
00072
itkStaticConstMacro(InputSpaceDimension,
unsigned int, NDimensions);
00073
itkStaticConstMacro(OutputSpaceDimension,
unsigned int, NDimensions);
00074
00076
typedef TScalarType
ScalarType;
00077
00079
typedef typename Superclass::ParametersType
ParametersType;
00080
00082
typedef typename Superclass::JacobianType
JacobianType;
00083
00085
typedef Vector<TScalarType,
00086
itkGetStaticConstMacro(InputSpaceDimension)>
InputVectorType;
00087 typedef Vector<TScalarType,
00088
itkGetStaticConstMacro(OutputSpaceDimension)>
OutputVectorType;
00089
00091
typedef CovariantVector<TScalarType,
00092
itkGetStaticConstMacro(InputSpaceDimension)>
InputCovariantVectorType;
00093
typedef CovariantVector<TScalarType,
00094 itkGetStaticConstMacro(OutputSpaceDimension)>
OutputCovariantVectorType;
00095
00097
typedef vnl_vector_fixed<TScalarType,
00098
itkGetStaticConstMacro(InputSpaceDimension)>
InputVnlVectorType;
00099
typedef vnl_vector_fixed<TScalarType,
00100
itkGetStaticConstMacro(OutputSpaceDimension)>
OutputVnlVectorType;
00101
00103 typedef Point<TScalarType,
00104
itkGetStaticConstMacro(InputSpaceDimension)>
InputPointType;
00105
typedef Point<TScalarType,
00106
itkGetStaticConstMacro(OutputSpaceDimension)>
OutputPointType;
00107
00109
virtual OutputPointType TransformPoint(
const InputPointType &point )
const
00110 {
return point; }
00111
00113
virtual OutputVectorType TransformVector(
const InputVectorType &
vector)
const
00114 {
return vector; }
00115
00117
virtual OutputVnlVectorType TransformVector(
const InputVnlVectorType &
vector)
const
00118 {
return vector; }
00119
00121
virtual OutputCovariantVectorType TransformCovariantVector(
00122 const InputCovariantVectorType &
vector)
const
00123
{
return vector; }
00124
00129
void SetIdentity(
void ) { }
00130
00131
00134 virtual void SetParameters(
const ParametersType &) {};
00135
00164
virtual const JacobianType & GetJacobian(
const InputPointType & )
const
00165
{
00166 m_Jacobian = JacobianType(NDimensions,1);
00167 m_Jacobian.Fill(0.0);
00168
return m_Jacobian;
00169 }
00170
00171
00172
00173
protected:
00174 IdentityTransform():
Transform<TScalarType,NDimensions,NDimensions>(NDimensions,1) {};
00175
virtual ~IdentityTransform() {};
00176
00177
00178
private:
00179 IdentityTransform(
const Self&);
00180 void operator=(
const Self&);
00181
00182
00183 };
00184
00185 }
00186
00187
00188
#endif
00189
00190
00191