From: Simon Rit Date: Thu, 31 Oct 2013 15:46:55 +0000 (+0100) Subject: Tool to multiply 4x4 matrices X-Git-Tag: v1.4.0~155^2~1 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=f11e54bda6e2ef3175ec13f96a709c3f28621958;p=clitk.git Tool to multiply 4x4 matrices --- diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 06d85a7..e6cdd02 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -120,6 +120,11 @@ IF (CLITK_BUILD_TOOLS) TARGET_LINK_LIBRARIES(clitkMatrixToElastixTransform clitkCommon ) SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkMatrixToElastixTransform) + WRAP_GGO(clitkMatrixMultiply_GGO_C clitkMatrixMultiply.ggo) + ADD_EXECUTABLE(clitkMatrixMultiply clitkMatrixMultiply.cxx ${clitkMatrixMultiply_GGO_C}) + TARGET_LINK_LIBRARIES(clitkMatrixMultiply clitkCommon ) + SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkMatrixMultiply) + WRAP_GGO(clitkMatrixInverse_GGO_C clitkMatrixInverse.ggo) ADD_EXECUTABLE(clitkMatrixInverse clitkMatrixInverse.cxx ${clitkMatrixInverse_GGO_C}) TARGET_LINK_LIBRARIES(clitkMatrixInverse clitkCommon ) diff --git a/tools/clitkMatrixMultiply.cxx b/tools/clitkMatrixMultiply.cxx new file mode 100644 index 0000000..95e1a40 --- /dev/null +++ b/tools/clitkMatrixMultiply.cxx @@ -0,0 +1,59 @@ +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + Authors belong to: + - University of LYON http://www.universite-lyon.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 + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the copyright notices for more information. + + It is distributed under dual licence + + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +===========================================================================**/ + +// clitk +#include "clitkMatrixMultiply_ggo.h" +#include "clitkTransformUtilities.h" +#include "clitkIO.h" +#include "clitkMatrix.h" + +//-------------------------------------------------------------------- +int main(int argc, char * argv[]) +{ + // Init command line + GGO(clitkMatrixMultiply, args_info); + CLITK_INIT; + + // Read matrix + itk::Matrix matrix1, matrix2; + try { + matrix1 = clitk::ReadMatrix3D(args_info.input1_arg); + matrix2 = clitk::ReadMatrix3D(args_info.input2_arg); + } + catch (itk::ExceptionObject & err) { + std::cerr << "Error reading " + << args_info.input1_arg + << " and " + << args_info.input2_arg + << std::endl; + std::cerr << err.GetDescription() << std::endl; + exit(-1); + } + + itk::Matrix matrix(matrix2.GetVnlMatrix() * matrix1.GetVnlMatrix()); + + // Print matrix + std::ofstream os; + clitk::openFileForWriting(os, args_info.output_arg); + os << clitk::Get4x4MatrixDoubleAsString(matrix, 16); + os.close(); + + return EXIT_SUCCESS; +}// end main + +//-------------------------------------------------------------------- diff --git a/tools/clitkMatrixMultiply.ggo b/tools/clitkMatrixMultiply.ggo new file mode 100644 index 0000000..5463bdd --- /dev/null +++ b/tools/clitkMatrixMultiply.ggo @@ -0,0 +1,8 @@ +package "clitkMatrixMultiply" +version "1.0" +purpose "Multiply two 4x4 matrices. In matrice notations, does input2*input" + +option "config" - "Config file" string optional +option "input1" i "Input matrix filename" string required +option "input2" j "Input matrix filename" string required +option "output" o "Output matrix filename" string required