Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
itkDiffusionTensor3DRigidTransform.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Diffusion Applications
00004   Module:    $HeadURL: http://svn.slicer.org/Slicer4/trunk/Modules/CLI/ResampleDTIVolume/itkDiffusionTensor3DRigidTransform.h $
00005   Language:  C++
00006   Date:      $Date: 2012-02-02 01:52:52 -0500 (Thu, 02 Feb 2012) $
00007   Version:   $Revision: 19197 $
00008 
00009   Copyright (c) Brigham and Women's Hospital (BWH) All Rights Reserved.
00010 
00011   See License.txt or http://www.slicer.org/copyright/copyright.txt for details.
00012 
00013 ==========================================================================*/
00014 #ifndef __itkDiffusionTensor3DRigidTransform_h
00015 #define __itkDiffusionTensor3DRigidTransform_h
00016 
00017 #include "itkDiffusionTensor3DMatrix3x3Transform.h"
00018 #include <itkRigid3DTransform.h>
00019 
00020 #define PRECISION .001
00021 
00022 namespace itk
00023 {
00028 template <class TData>
00029 class DiffusionTensor3DRigidTransform
00030   : public DiffusionTensor3DMatrix3x3Transform<TData>
00031 {
00032 public:
00033   typedef TData                                            DataType;
00034   typedef DiffusionTensor3DRigidTransform<DataType>        Self;
00035   typedef DiffusionTensor3DMatrix3x3Transform<DataType>    Superclass;
00036   typedef SmartPointer<Self>                               Pointer;
00037   typedef SmartPointer<const Self>                         ConstPointer;
00038   typedef typename Superclass::MatrixTransformType         MatrixTransformType;
00039   typedef typename Superclass::InternalMatrixTransformType InternalMatrixTransformType;
00040   typedef Matrix<double, 4, 4>                             MatrixTransform4x4Type;
00041   typedef Rigid3DTransform<double>                         Rigid3DTransformType;
00042   // /Set the 4x4 Matrix (the last row is ignored and considered to be 0,0,0,1
00043   void SetMatrix4x4( MatrixTransform4x4Type matrix );
00044 
00045   // /Set the transformation matrix from an itk::RigidTransform< double > object
00046   void SetTransform( typename Rigid3DTransformType::Pointer transform );
00047   typename Rigid3DTransformType::Pointer GetRigidTransform();
00048 
00049   itkNewMacro( Self );
00050   // /Set the 3x3 rotation matrix
00051   void SetMatrix3x3( MatrixTransformType & matrix );
00052 
00053   void DisablePrecision();
00054 
00055   itkSetMacro( PrecisionChecking, bool );
00056 protected:
00057   DiffusionTensor3DRigidTransform();
00058   bool m_PrecisionChecking;
00059   double GetDet( MatrixTransformType & matrix );
00060 
00061   void PreCompute();
00062 
00063 };
00064 
00065 } // end itk namespace
00066 
00067 #ifndef ITK_MANUAL_INSTANTIATION
00068 #include "itkDiffusionTensor3DRigidTransform.txx"
00069 #endif
00070 
00071 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines