Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
#ifndef CLITKTRANSFORMUTILITIES_H
#define CLITKTRANSFORMUTILITIES_H
#include "itkPoint.h"
#include "clitkImageCommon.h"
#include "clitkCommon.h"
-
+#define VTK_EXCLUDE_STRSTREAM_HEADERS
+#include <vtkMatrix4x4.h>
+#include <vtkSmartPointer.h>
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);
template <unsigned int Dimension > itk::Matrix<double, Dimension+1, Dimension+1> GetBackwardAffineMatrix(itk::Array<double> transformParameters);
itk::Matrix<double, 3, 3> GetRotationMatrix3D(itk::Array<double> rotationParameters);
+ itk::Matrix<double, 2, 2> GetRotationMatrix2D(itk::Array<double> rotationParameters);
+ template <unsigned int Dimension> itk::Matrix<double, Dimension, Dimension> GetRotationMatrix(itk::Array<double> rotationParameters);
itk::Point<double, 3> GetRotatedPoint3D(itk::Array<double> rotationParameters, itk::Point<double, 3> input);
itk::Matrix<double, 4, 4> GetCenteredRotationMatrix3D(itk::Array<double> rotationParameters,itk::Point<double,3> centerOfRotation);
// itk::Matrix<double, 4, 4> GetComposedMatrix3D(itk::Matrix<double, 4, 4> firstTransform, itk::Matrix<double, 4, 4> secondTransform);
matrix[2][2]= cos(rotationParameters[0])*cos(rotationParameters[1]);
return matrix;
}
-
-
-
+
+ inline itk::Matrix<double, 2, 2> GetRotationMatrix2D(itk::Array<double> rotationParameters)
+ {
+ itk::Matrix<double, 2, 2> matrix;
+ matrix[0][0] = cos(rotationParameters[0]);
+ matrix[1][0] = sin(rotationParameters[0]);
+ matrix[0][1] = -matrix[1][0];
+ matrix[1][1] = matrix[0][0];
+ return matrix;
+ }
+
//========================================================================================
inline itk::Point<double, 3> GetRotatedPoint3D(itk::Array<double> rotationParameters, itk::Point<double, 3> input)
{
return matrix;
}
- inline itk::Matrix<double, 4, 4> ReadMatrix3D(std::string fileName)
- {
+ itk::Matrix<double, 4, 4> ReadMatrix3D(std::string fileName);
+
+ inline vtkMatrix4x4* ReadVTKMatrix3D(std::string fileName) {
// read input matrix
std::ifstream is;
openFileForReading(is, fileName);
while (!is.eof()) {
nb.push_back(x);
skipComment(is);
- is >> x;
+ is >> x;
}
-
- //copy it to the matrix
- itk::Matrix<double, 4, 4> matrix;
+
+ 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[i][j]=nb[index++];
- return matrix;
+ matrix->SetElement(i,j, nb[index++]);
+
+ return matrix;
}
-
+
inline itk::Matrix<double, 3, 3> ReadMatrix2D(std::string fileName)
{
// read input matrix