]> Creatis software - gdcm.git/blobdiff - src/gdcmOrientation.cxx
New 'quicker' code releases some BinEntries :-(
[gdcm.git] / src / gdcmOrientation.cxx
index 236899b9e0c8a37b36f67a48f6ba6c3d3d6c04f4..cdac91f811dc2bff968b2dbbae065db6e80dd39f 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmOrientation.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/07/24 02:49:25 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2005/09/05 08:25:01 $
+  Version:   $Revision: 1.5 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -19,6 +19,7 @@
 #include "gdcmOrientation.h"
 #include "gdcmFile.h"
 #include "gdcmDebug.h"
+#include <math.h> // for sqrt
 
 namespace gdcm 
 {
@@ -35,20 +36,20 @@ namespace gdcm
  *           (Axial, Coronal, Sagital) of the image
  * \note Should be run on the first gdcm::File of a 'coherent' Serie
  * @return orientation code
- *   #   0 :   Not Applicable (neither 0020,0037 Image Orientation Patient 
- *   #                         nor     0020,0032Image Position     found )
- *   #   1 :   Axial
- *   #  -1 :   Axial invert
- *   #   2 :   Coronal
- *   #  -2 :   Coronal invert
- *   #   3 :   Sagital
- *   #  -3 :   Sagital invert
- *   #   4 :   Heart Axial
- *   #  -4 :   Heart Axial invert
- *   #   5 :   Heart Coronal
- *   #  -5 :   Heart Coronal invert
- *   #   6 :   Heart Sagital
- *   #  -6 :   Heart Sagital invert
+ *   #   0 : Not Applicable (neither 0020,0037 Image Orientation Patient 
+ *   #                       nor     0020,0032 Image Position           found)
+ *   #   1 : Axial
+ *   #  -1 : Axial invert
+ *   #   2 : Coronal
+ *   #  -2 : Coronal invert
+ *   #   3 : Sagital
+ *   #  -3 : Sagital invert
+ *   #   4 : Heart Axial
+ *   #  -4 : Heart Axial invert
+ *   #   5 : Heart Coronal
+ *   #  -5 : Heart Coronal invert
+ *   #   6 : Heart Sagital
+ *   #  -6 : Heart Sagital invert
  */
 double Orientation::TypeOrientation( File *f )
 {
@@ -56,7 +57,7 @@ double Orientation::TypeOrientation( File *f )
    bool succ = f->GetImageOrientationPatient( iop );
    if ( !succ )
    {
-      gdcmErrorMacro( "No Image Orientation (0020,0037) was found in the file, cannot proceed." )
+      gdcmErrorMacro( "No Image Orientation (0020,0037) found in the file, cannot proceed." )
       return 0;
    }
 
@@ -98,21 +99,20 @@ double Orientation::TypeOrientation( File *f )
    }
    return res.first;
 /*
-//             i=0
-//             res=[0,99999]  ## [ <result> , <memory of the last succes calculus> ]
-//             for plane in dicPlane:
-//                 i=i+1
-//                 refA=plane[0]
-//                 refB=plane[1]
-//                 res=self.VerfCriterion(  i , self.CalculLikelyhood2Vec(refA,refB,ori1,ori2) , res )
-//                 res=self.VerfCriterion( -i , self.CalculLikelyhood2Vec(refB,refA,ori1,ori2) , res )
-//             return res[0]
+//  i=0
+//  res=[0,99999]  ## [ <result> , <memory of the last succes calculus> ]
+//  for plane in dicPlane:
+//      i=i+1
+//      refA=plane[0]
+//      refB=plane[1]
+//      res=self.VerfCriterion(  i , self.CalculLikelyhood2Vec(refA,refB,ori1,ori2) , res )
+//      res=self.VerfCriterion( -i , self.CalculLikelyhood2Vec(refB,refA,ori1,ori2) , res )
+//  return res[0]
 */
-
 }
 
 Res 
-Orientation::VerfCriterion(int typeCriterion, double criterionNew, Res const & in)
+Orientation::VerfCriterion(int typeCriterion, double criterionNew, Res const &in)
 {
    Res res;
    double criterion = in.second;
@@ -133,7 +133,7 @@ Orientation::VerfCriterion(int typeCriterion, double criterionNew, Res const & i
    return res;
 } 
 
-inline double square_dist(vector3D const &v1, vector3D const & v2)
+inline double square_dist(vector3D const &v1, vector3D const &v2)
 {
   double res;
   res = (v1.x - v2.x)*(v1.x - v2.x) +
@@ -159,8 +159,8 @@ inline double square_dist(vector3D const &v1, vector3D const & v2)
 //------------------------- Other : -------------------------------------
 // The calculus is based with vectors normalice
 double
-Orientation::CalculLikelyhood2Vec(vector3D const & refA, vector3D const & refB, 
-                                  vector3D const & ori1, vector3D const & ori2 )
+Orientation::CalculLikelyhood2Vec(vector3D const &refA, vector3D const &refB, 
+                                  vector3D const &ori1, vector3D const &ori2 )
 {
 
    vector3D ori3 = ProductVectorial(ori1,ori2);