|
Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
|
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
1.7.4