]> Creatis software - clitk.git/blobdiff - tools/clitkAffineTransformGenericFilter.txx
Merge branch 'master' of git.creatis.insa-lyon.fr:clitk
[clitk.git] / tools / clitkAffineTransformGenericFilter.txx
index ec9db098493cb873f1f0d4478696b48da1e5b0f6..0fa4869f2af12d9f680373060faa16ccba109f85 100644 (file)
@@ -143,14 +143,23 @@ AffineTransformGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
       return;
     }
     itk::Array<double> transformParameters(2 * Dimension);
-    int pos = 0;
-    if (Dimension == 2)
-      transformParameters[pos++] = m_ArgsInfo.rotate_arg[0];
-    else
-      for (unsigned int i = 0; i < 3; i++)
-        transformParameters[pos++] = m_ArgsInfo.rotate_arg[i];
-    for (unsigned int i = 0; i < Dimension && i < 3; i++)
-      transformParameters[pos++] = m_ArgsInfo.translate_arg[i];
+    transformParameters.Fill(0.0);
+    if (m_ArgsInfo.rotate_given)
+    {
+      if (Dimension == 2)
+        transformParameters[0] = m_ArgsInfo.rotate_arg[0];
+      else
+        for (unsigned int i = 0; i < 3; i++)
+          transformParameters[i] = m_ArgsInfo.rotate_arg[i];
+    }
+    if (m_ArgsInfo.translate_given)
+    {
+      int pos = 3;
+      if (Dimension == 2)
+        pos = 1;
+      for (unsigned int i = 0; i < Dimension && i < 3; i++)
+        transformParameters[pos++] = m_ArgsInfo.translate_arg[i];
+    }
     if (Dimension == 4)
     {
       matrix.SetIdentity();
@@ -202,6 +211,12 @@ AffineTransformGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
     typename itk::Matrix<double, Dimension, Dimension> invRotMatrix( clitk::GetRotationalPartMatrix(invMatrix) );
     typename itk::Vector<double,Dimension> invTrans =  clitk::GetTranslationPartMatrix(invMatrix);
 
+    // Display warning
+    if (m_ArgsInfo.spacing_given)
+      std::cout << "Warning --spacing ignored (because --transform_grid_flag)" << std::endl;
+    if (m_ArgsInfo.origin_given)
+      std::cout << "Warning --origin ignored (because --transform_grid_flag)" << std::endl;
+
     // Spacing is influenced by affine transform matrix and input direction
     typename InputImageType::SpacingType outputSpacing;
     outputSpacing = invRotMatrix *
@@ -326,14 +341,23 @@ void AffineTransformGenericFilter<args_info_type>::UpdateWithDimAndVectorType()
       return;
     }
     itk::Array<double> transformParameters(2 * Dimension);
-    int pos = 0;
-    if (Dimension == 2)
-      transformParameters[pos++] = m_ArgsInfo.rotate_arg[0];
-    else
-      for (unsigned int i = 0; i < 3; i++)
-        transformParameters[pos++] = m_ArgsInfo.rotate_arg[i];
-    for (unsigned int i = 0; i < Dimension && i < 3; i++)
-      transformParameters[pos++] = m_ArgsInfo.translate_arg[i];
+    transformParameters.Fill(0.0);
+    if (m_ArgsInfo.rotate_given)
+    {
+      if (Dimension == 2)
+        transformParameters[0] = m_ArgsInfo.rotate_arg[0];
+      else
+        for (unsigned int i = 0; i < 3; i++)
+          transformParameters[i] = m_ArgsInfo.rotate_arg[i];
+    }
+    if (m_ArgsInfo.translate_given)
+    {
+      int pos = 3;
+      if (Dimension == 2)
+        pos = 1;
+      for (unsigned int i = 0; i < Dimension && i < 3; i++)
+        transformParameters[pos++] = m_ArgsInfo.translate_arg[i];
+    }
     if (Dimension == 4)
     {
       matrix.SetIdentity();