<br>ah just after posting I found it (figures!)<br><br>complete and correct code now:<br><br>  const ImageType::DirectionType &amp; direction = image-&gt;GetDirection()<br>  std::cout &lt;&lt; &quot;direction: &quot; &lt;&lt; std::endl &lt;&lt; direction &lt;&lt; std::endl &lt;&lt; std::endl;<br>

<br>  float angleX, angleY, angleZ;<br>  angleX = angleY = angleZ = 1  *   vnl_math::pi / 180.0;             // in this case: rotation = 1 degree<br><br>  const double cx = vcl_cos(angleX);<br>  const double sx = vcl_sin(angleX);<br>

<br>  typedef itk::Matrix&lt;double,3,3&gt; Matrix;<br>  Matrix RotationX;<br>  Matrix FinalRotation = image-&gt;GetDirection();<br><br>  std::cout &lt;&lt; &quot;sin: &quot; &lt;&lt; sx &lt;&lt; &quot; Cos: &quot; &lt;&lt; cx &lt;&lt; std::endl;<br>

  <br>  RotationX[0][0] = 1; RotationX[0][1] =   0; RotationX[0][2] = 0;  <br>  RotationX[1][0] = 0; RotationX[1][1] =  cx; RotationX[1][2] = sx;  <br>  RotationX[2][0] = 0; RotationX[2][1] = -sx; RotationX[2][2] = cx;<br>

<br>  FinalRotation = direction*RotationX;<br><br>  std::cout &lt;&lt; &quot;image-&gt;GetDirection(): &quot; &lt;&lt; std::endl &lt;&lt; image-&gt;GetDirection() &lt;&lt; std::endl;<br>  std::cout &lt;&lt; &quot;RotationX: &quot; &lt;&lt; std::endl &lt;&lt; RotationX &lt;&lt; std::endl;<br>

  std::cout &lt;&lt; &quot;FinalRotation: &quot; &lt;&lt; std::endl &lt;&lt; FinalRotation &lt;&lt; std::endl;<br>  <br>  image-&gt;SetDirection(FinalRotation);<br><br>  std::cout &lt;&lt; &quot;image-&gt;GetDirection(): &quot; &lt;&lt; std::endl &lt;&lt; image-&gt;GetDirection() &lt;&lt; std::endl;<br>

<br><br>cheers, Michael<br><br><br><br><br><br><div class="gmail_quote">On Tue, Mar 30, 2010 at 12:10 PM, michiel mentink <span dir="ltr">&lt;<a href="mailto:michael.mentink@st-hughs.ox.ac.uk">michael.mentink@st-hughs.ox.ac.uk</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello Frederic,<br><br>thanks for your suggestion.<br><br>although my code was working, I tried your suggestion. Unfortunately, it produces<br>

<br>error: no match for ‘operator*’ in ‘image.itk::SmartPointer&lt;TObjectType&gt;::operator-&gt; [with TObjectType = itk::Image&lt;float, 3u&gt;]()-&gt;itk::ImageBase&lt;VImageDimension&gt;::GetDirection [with unsigned int VImageDimension = 3u] * RotationX’<br>


<br><br>Anyway, I forgot to mention to use:<br><br>  float angleX, angleY, angleZ;<br>  angleX = angleY = angleZ = 1 * (3.14/180);<br><br>(multiply by pi and divide by 180 degrees, because ITK internally works with radians instead of degrees)<br>


<br>Which leads me to the question: vnl has a pi constant, and I remember vaguely having seen it somewhere as vnl::PI or something.<br>Does anyone know how to convince vnl to hand me pi constant?<br><br>cheers, Michael<div>

<div></div><div class="h5"><br>
<br><br><br><div class="gmail_quote">On Tue, Mar 30, 2010 at 11:55 AM, Frederic Perez <span dir="ltr">&lt;<a href="mailto:fredericpcx@gmail.com" target="_blank">fredericpcx@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


Hello Michiel,<br><br>perhaps you could use a const Matrix object after all, since it looks to me that FinalRotation is first built with image-&gt;GetDirection() but this value is not actually used, and that the signature of itk::Image&#39;s is SetDirection(const DirectionType direction).<br>




<br>So here you are, my quickly written proposal (caution, I haven&#39;t compiled it):<br><br><div class="gmail_quote"><div>  float angleX, angleY, angleZ;<br>  angleX = angleY = angleZ = 5;<br><br>  const double cx = vcl_cos(angleX);<br>




  const double sx = vcl_sin(angleX);<div>  <br>  typedef itk::Matrix&lt;double,3,3&gt; Matrix;<br>  Matrix RotationX;<br></div></div>  <span style="background-color: rgb(255, 204, 204);">// Matrix FinalRotation = image-&gt;GetDirection(); -- Commented now  <br>




</span><div><div><br>  RotationX[0][0] = 1; RotationX[0][1] =   0;  RotationX[0][2] = 0;  <br>  RotationX[1][0] = 0; RotationX[1][1] =  cx; RotationX[1][2] = sx;  <br>

  RotationX[2][0] = 0; RotationX[2][1] = -sx; RotationX[2][2] = cx;<br><br></div></div>  <span style="background-color: rgb(255, 255, 153);">const Matrix FinalRotation = direction*RotationX;</span><div><br><br>
  std::cout &lt;&lt; &quot;image-&gt;GetDirection(): &quot; &lt;&lt; std::endl &lt;&lt; image-&gt;GetDirection() &lt;&lt; std::endl;<br>



  std::cout &lt;&lt; &quot;RotationX: &quot; &lt;&lt; std::endl &lt;&lt; RotationX &lt;&lt; std::endl;<br>  std::cout &lt;&lt; &quot;FinalRotation: &quot; &lt;&lt; std::endl &lt;&lt; FinalRotation &lt;&lt; std::endl;<br>





  <br>
  image-&gt;SetDirection(FinalRotation);<br><br>  std::cout &lt;&lt; &quot;image-&gt;GetDirection(): &quot; &lt;&lt; std::endl &lt;&lt; image-&gt;GetDirection() &lt;&lt; std::endl;<br><br></div>Cheers,<br><br>Frederic<br>


</div>

<br><div style="display: inline;"></div>
</blockquote></div><br>
</div></div></blockquote></div><br>