X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkTransformUtilities.cxx;h=832d5983eed109898fe427337ec9b4f6dd0a8483;hb=543b72e23ad001ac2a7743b9beacf48e2d0054ac;hp=ef210d70ae3318c5dbb778557787d9d86b51677e;hpb=04c6115880edf1a2f5511debafe7667cf9d0531c;p=clitk.git diff --git a/common/clitkTransformUtilities.cxx b/common/clitkTransformUtilities.cxx index ef210d7..832d598 100644 --- a/common/clitkTransformUtilities.cxx +++ b/common/clitkTransformUtilities.cxx @@ -67,4 +67,32 @@ itk::Matrix GetRotationMatrix<3>(itk::Array rotationParame 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; +} + }