]> Creatis software - clitk.git/blobdiff - common/clitkTransformUtilities.h
Merge branch 'master' of git.creatis.insa-lyon.fr:clitk
[clitk.git] / common / clitkTransformUtilities.h
index b9a540a672a23602a33a8b919ed208eba4156823..cbc30b97ac806aa0cd3c91d531dc4cac082bd2e8 100644 (file)
@@ -23,7 +23,8 @@
 #include "itkPoint.h"
 #include "clitkImageCommon.h"
 #include "clitkCommon.h"
+#include <vtkMatrix4x4.h>
+#include <vtkSmartPointer.h>
  
 namespace clitk
 {
@@ -32,6 +33,7 @@ namespace clitk
   //============================================================================
   itk::Matrix<double, 3, 3> GetForwardAffineMatrix2D(itk::Array<double> transformParameters);
   itk::Matrix<double, 4, 4> GetForwardAffineMatrix3D(itk::Array<double> transformParameters);
+  template <unsigned int Dimension > itk::Matrix<double, Dimension+1, Dimension+1> GetForwardAffineMatrix(itk::Array<double> transformParameters);
 
   itk::Matrix<double, 3, 3> GetBackwardAffineMatrix2D(itk::Array<double> transformParameters);
   itk::Matrix<double, 4, 4> GetBackwardAffineMatrix3D(itk::Array<double> transformParameters);
@@ -277,6 +279,29 @@ namespace clitk
     return matrix; 
   }
  
+  inline vtkMatrix4x4* ReadVTKMatrix3D(std::string fileName) {
+    // read input matrix
+    std::ifstream is;
+    openFileForReading(is, fileName);
+    std::vector<double> nb;
+    double x;
+    skipComment(is);
+    is >> x;
+    while (!is.eof()) {
+      nb.push_back(x);
+      skipComment(is);
+      is >> x;
+    }
+
+    vtkSmartPointer<vtkMatrix4x4> matrix = vtkSmartPointer<vtkMatrix4x4>::New();
+    unsigned int index=0;
+    for (unsigned int i=0;i<4;i++)
+      for (unsigned int j=0;j<4;j++)
+         matrix->SetElement(i,j, nb[index++]);
+
+    return matrix;
+  }
+
   inline itk::Matrix<double, 3, 3> ReadMatrix2D(std::string fileName)
   {
     // read input matrix