NAMIC Wiki:DTI:ITK-SymmetricTensorTraits::Header

From NAMIC Wiki
Jump to: navigation, search
Home < NAMIC Wiki:DTI:ITK-SymmetricTensorTraits::Header

Header for proposed itkSymmetricTensorTraits.

 /*=========================================================================
 
   Program:   Insight Segmentation & Registration Toolkit
   Module:    $RCSfile: itkSymmetricTensorTraits.h,v $
   Language:  C++
   Date:      $Date$
   Version:   $Revision$
 
   Copyright (c) Insight Software Consortium. All rights reserved.
   See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
 
      This software is distributed WITHOUT ANY WARRANTY; without even
      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
 
 #ifndef __itkSymmetricTensorTraits_h
 #define __itkSymmetricTensorTraits_h
 
 #include "itkFixedArray.h"
 
 namespace itk
 {
 /** \class itkSymmetricTensorTraits
  *
  */
 template<typename TRealType, unsigned int VTensorDimension>
 class ITK_EXPORT SymmetricTensorTraits
 {
 public:
   static const unsigned int NTensorDimension = VTensorDimension;
   static const unsigned int NVectorDimension =
   VTensorDimension * (VTensorDimension+1) / 2;
 
   /** Standard class typedefs. */
   typedef SymmetricTensorTraits Self;
   typedef FixedArray<TRealType,NVectorDimension> SymmetricTensorBaseType;
 
   /// Perform eigenvalue computation.
   static void ComputeEigenvalues( const SymmetricTensorBaseType& tensor,
 				  double (&lambda)[VTensorDimension] );
 };
 
 /// Specialization for 3D tensors.
 template<typename TRealType>
 class ITK_EXPORT SymmetricTensorTraits<TRealType,3>
 {
 public:
   static const unsigned int NTensorDimension = 3;
   static const unsigned int NVectorDimension = 6;
 
   /** Standard class typedefs. */
   typedef SymmetricTensorTraits Self;
   typedef FixedArray<TRealType,NVectorDimension> SymmetricTensorBaseType;
 
   /// Perform eigenvalue computation.
   static void ComputeEigenvalues( const SymmetricTensorBaseType& tensor,
 				  double (&lambda)[3] );
 };
 
 } // end namespace itk
 
 #ifndef ITK_MANUAL_INSTANTIATION
 #include "itkSymmetricTensorTraits.txx"
 #endif
 
 #endif