Hi Michiel,<br><br>Based on my understanding (may not be correct), the Euler3D angles are rotations about the x,y and z axis respectively. These angles are what you got from the registration algorithm as rx, ry, rz.<br><br>
In <a href="http://en.wikipedia.org/wiki/Rotation_matrix">http://en.wikipedia.org/wiki/Rotation_matrix</a><span class="mw-headline" id="Rotation_matrix_given_an_axis_and_an_angle">, if you scroll down to the section on &quot;Rotation matrix given an axis and an angle&quot;, you will find the formula for finding 3 matrices Rx(rx), Ry(ry), Ry(rz). Basically, you are rotating about u = [1,0,0], [0,1,0] and [0,0,1] respectively.<br>
<br>The final rotation matrix is the product R = Rx . Ry. Rz which is what you need to enter into the transform.<br><br><br>Kishore<br></span><br><div class="gmail_quote">2010/3/9 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><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>I have 3 rotation angles, that I got from a registration algorithm.<br>rx = 0.0664    ry = -0.0625    rz = -0.0078<br>
Now I would like to apply to rotation.<br><br>The Euler3D transform needs a rotation matrix. How can that matrix be calculated?<br>

This is what I&#39;ve come up with so far, but it doesn&#39;t do anything:<br><br><br>  typedef itk::Euler3DTransform&lt;double&gt;TransformType2;<br>  TransformType2::Pointer transform2 =TransformType2::New();<br><br>// Rotation matrix:<br>


<br>//  Rx(č)                x                y cos theta - z sin theta      z cos theta + y sin theta<br>//  Ry(č)     x cos theta + z sin theta                y                -x sin theta + z cos theta<br>//  Rz(č)     x cos theta - y sin theta    y cos theta + x sin theta                z<br>


<br>  typedef itk::Matrix&lt;double&gt; MatrixType;<br>  MatrixType rotMatrix;     <br><br>  //   column  row<br>  rotMatrix[0][0] = 1;<br>  rotMatrix[0][1] =  cos( atof(argv[7]) ) + sin( atof(argv[7]) );<br>  rotMatrix[0][2] =  cos( atof(argv[9]) ) - sin( atof(argv[9]) );<br>


  <br>  rotMatrix[1][0] =  cos( atof(argv[7]) ) - sin( atof(argv[7]) );<br>  rotMatrix[1][1] = 1;<br>  rotMatrix[1][2] =  cos( atof(argv[7]) ) + sin( atof(argv[7]) );<br><br>  rotMatrix[2][0] =  cos( atof(argv[7]) ) + sin( atof(argv[7]) );<br>


  rotMatrix[2][1] = -cos( atof(argv[7]) ) + sin( atof(argv[7]) );<br>  rotMatrix[2][2] = 1;<br><br>  transform-&gt;SetMatrix( rotMatrix);<br><br><br>I&#39;m not to sure about the &#39;1&#39; entries too, since they should by x, y, or z...<br>


<br>cheers,<br><br>Michael<br>
<br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br>