/vol/vipdata/irtk/packages/transformation/include/irtkFluidFreeFormTransformation.h

00001 /*=========================================================================
00002 
00003   Library   : Image Registration Toolkit (IRTK)
00004   Module    : $Id: irtkFluidFreeFormTransformation.h 2 2008-12-23 12:40:14Z dr $
00005   Copyright : Imperial College, Department of Computing
00006               Visual Information Processing (VIP), 2008 onwards
00007   Date      : $Date: 2008-12-23 12:40:14 +0000 (Tue, 23 Dec 2008) $
00008   Version   : $Revision: 2 $
00009   Changes   : $Author: dr $
00010 
00011 =========================================================================*/
00012 
00013 #ifndef _IRTKFLUIDFREEFORMTRANSFORMATION_H
00014 
00015 #define _IRTKFLUIDFREEFORMTRANSFORMATION_H
00016 
00017 #include <irtkGeometry.h>
00018 
00026 class irtkFluidFreeFormTransformation : public irtkMultiLevelFreeFormTransformation
00027 {
00028 
00029 public:
00030 
00032   irtkFluidFreeFormTransformation();
00033 
00035   irtkFluidFreeFormTransformation(const irtkRigidTransformation &);
00036 
00038   irtkFluidFreeFormTransformation(const irtkAffineTransformation &);
00039 
00041   irtkFluidFreeFormTransformation(const irtkFluidFreeFormTransformation &);
00042 
00044   virtual void Transform(double &, double &, double &, double = 0);
00045 
00047   virtual void Displacement(double& x, double& y, double& z, double = 0);
00048 
00050   virtual void GlobalTransform(double &, double &, double &, double = 0);
00051 
00053   virtual void LocalTransform (double &, double &, double &, double = 0);
00054 
00056   virtual void GlobalDisplacement(double &, double &, double &, double = 0);
00057 
00059   virtual void LocalDisplacement(double &, double &, double &, double = 0);
00060 
00062   virtual void Transform(int, double &, double &, double &, double = 0);
00063 
00065   virtual void LocalTransform (int, double &, double &, double &, double = 0);
00066 
00068   virtual void LocalDisplacement(int, double &, double &, double &, double = 0);
00069 
00071   virtual void Jacobian(irtkMatrix &, double, double, double, double = 0);
00072 
00074   virtual void LocalJacobian(irtkMatrix &, double, double, double, double = 0);
00075 
00077   virtual double Inverse(double &, double &, double &, double = 0, double = 0.01);
00078 
00080   virtual double Inverse(int, double &, double &, double &, double = 0, double = 0.01);
00081 
00083   virtual const char *NameOfClass();
00084 
00086   virtual irtkCifstream& Read(irtkCifstream&);
00087 
00089   virtual irtkCofstream& Write(irtkCofstream&);
00090 };
00091 
00092 inline const char *irtkFluidFreeFormTransformation::NameOfClass()
00093 {
00094   return "irtkFluidFreeFormTransformation";
00095 
00096 }
00097 
00098 #endif