X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkTransformUtilities.cxx;h=832d5983eed109898fe427337ec9b4f6dd0a8483;hb=d55f025b18f68066a52b8f33c2dc6481e82c2580;hp=069fc70554022422781eb7bdabad1b454d1f9f01;hpb=573d80d0f7a17607d2ee883c21c940c0ba020282;p=clitk.git diff --git a/common/clitkTransformUtilities.cxx b/common/clitkTransformUtilities.cxx index 069fc70..832d598 100644 --- a/common/clitkTransformUtilities.cxx +++ b/common/clitkTransformUtilities.cxx @@ -21,6 +21,22 @@ namespace clitk { +//-------------------------------------------------------------------- +template < > +itk::Matrix +GetForwardAffineMatrix<2>(itk::Array transformParameters) +{ + return GetForwardAffineMatrix2D(transformParameters); +} + +//-------------------------------------------------------------------- +template < > +itk::Matrix +GetForwardAffineMatrix<3>(itk::Array transformParameters) +{ + return GetForwardAffineMatrix3D(transformParameters); +} + //-------------------------------------------------------------------- template < > itk::Matrix @@ -37,4 +53,46 @@ GetBackwardAffineMatrix<3>(itk::Array transformParameters) return GetBackwardAffineMatrix3D(transformParameters); } +//-------------------------------------------------------------------- +template <> +itk::Matrix GetRotationMatrix<2>(itk::Array rotationParameters) +{ + return GetRotationMatrix2D(rotationParameters); +} + +//-------------------------------------------------------------------- +template <> +itk::Matrix GetRotationMatrix<3>(itk::Array rotationParameters) +{ + return GetRotationMatrix3D(rotationParameters); +} + +//-------------------------------------------------------------------- +itk::Matrix ReadMatrix3D(std::string fileName) +{ + // read input matrix + std::ifstream is; + openFileForReading(is, fileName); + std::vector nb; + double x; + skipComment(is); + is >> x; + while (is && !is.eof()) { + nb.push_back(x); + skipComment(is); + is >> x; + } + + if(nb.size() != 16) + itkGenericExceptionMacro(<< "Could not read 4x4 matrix in " << fileName); + + //copy it to the matrix + itk::Matrix matrix; + 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; +} + }