<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=DE-AT link=blue vlink=purple>

<div class=WordSection1>

<p class=MsoNormal>Hi Vtk User,<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><span lang=EN-GB>I want to slice through a volume about an
arbitrary vector.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span lang=EN-GB>I give 2 points p1 and p2, from which i
calculate the vector as shown below. I want to have the axial from point p1 In the
direction of the vector. <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span lang=EN-GB>I do the following transformations: Translation
to origin, rotation to make vector parallel to z axis, rotate about z axis and
finally translate back to the p1 which leads to a <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB>Transformation matrix. Finally i apply the
axial transform matrix to  the transformation matrix and get the transformation
for axial view. I set the transform to my imagereslicer and<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB>Update the imagereslicer and imageviewer.
But I do not get any image as output and i don&#8217;t know where is the
mistake ? Can someone help me, I have copied the code below.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            normal[0] = p2[0]-p1[0];<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            normal[1] =
p2[1]-p1[1];<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            normal[2] =
p2[2]-p1[2];<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            point[0] =
p1[0]; point[1] = p1[1]; point[2] = p1[2];<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:green'><o:p></o:p></span></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:green'>//transformation<o:p></o:p></span></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> t_matrix[16] = {1, 0, 0, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                         0,
1, 0, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                         0,
0, 1, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                     
-point[0], -point[1], -point[2], 1};<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
translation_matrix = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            translation_matrix-&gt;DeepCopy(t_matrix);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:green'>//rotation to make vector parallel to the z axis<o:p></o:p></span></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> diagonal = sqrt (pow(normal[0],2) +
pow(normal[1],2) + pow(normal[2],2) );<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> intermediate_dia = sqrt ( pow(normal[0],2) +
pow(normal[1],2) );<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> cos_theta = normal[2] / diagonal;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> sin_theta = intermediate_dia / diagonal;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> r_matrix[16] = {cos_theta, 0, sin_theta, 0,  <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                               0,
1, 0, 0,  <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                               -sin_theta,
0, cos_theta, 0,  <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                               0,
0, 0, 1};<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
rotation_matrix = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            rotation_matrix-&gt;DeepCopy(r_matrix);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:green'>//rotation in Z axis by 180 degree<o:p></o:p></span></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> cos_theta_z = cos(3.14159);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> sin_theta_z = sin(3.14159);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> r_matrix_z[16] = {    cos_theta_z,
-sin_theta_z, 0, 0,  <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                                     sin_theta_z, 
cos_theta_z, 0, 0,  <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                                     0,
0, 1, 0,  <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                                     0,
0, 0, 1};<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
rotation_matrix_z = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            rotation_matrix_z-&gt;DeepCopy(r_matrix_z);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:green'>//translate back to object position<o:p></o:p></span></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> bt_matrix[16] = {1, 0, 0, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                               0,
1, 0, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                               0,
0, 1, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                               point[0],
point[1], point[2], 1};<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
backtranslation_matrix = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            backtranslation_matrix-&gt;DeepCopy(bt_matrix);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:green'>//get the final transformation matrix to apply on the image<o:p></o:p></span></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
intermediate_transformation_1 = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
intermediate_transformation_2 = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
final_transformation_matrix = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4::Multiply4x4(translation_matrix,
rotation_matrix, intermediate_transformation_1);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4::Multiply4x4(intermediate_transformation_1,
rotation_matrix_z, intermediate_transformation_2); <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4::Multiply4x4(intermediate_transformation_2,
backtranslation_matrix, final_transformation_matrix);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            <span
style='color:blue'>double</span> a_matrix[16] = { 1, 0, 0, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                   0,
1, 0, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                   0,
0, 1, 0, <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>                                   0,
0, 0, 1};<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
axial_matrix = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            axial_matrix-&gt;DeepCopy(a_matrix);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4 *
axial_transformation_matrix = vtkMatrix4x4::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrix4x4::Multiply4x4(final_transformation_matrix,
axial_matrix, axial_transformation_matrix);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            vtkMatrixToLinearTransform 
* axial_transform = vtkMatrixToLinearTransform ::New();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            axial_transform-&gt;SetInput(axial_transformation_matrix);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            axial_transform-&gt;Update();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New";color:green'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New";color:green'>            </span><span
style='font-size:10.0pt;font-family:"Courier New"'>vtkImageReslice*</span><span
style='font-size:10.0pt;font-family:"Courier New"'> <span lang=EN-GB>Imagereslicer
= </span></span><span style='font-size:10.0pt;font-family:"Courier New"'>vtkImageReslice::New();</span><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";color:green'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            Imagereslicer-&gt;SetResliceTransform(axial_transform);<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:35.4pt;text-indent:35.4pt;text-autospace:
none'><span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New"'>Imagereslicer-&gt;</span><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New"'> </span><span
style='font-size:10.0pt;font-family:"Courier New"'>SetResliceAxesOrigin (0, 0,
point[2]);     </span><span lang=EN-GB style='font-size:10.0pt;font-family:
"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            Imagereslicer-&gt;Update();<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:35.4pt;text-indent:35.4pt;text-autospace:
none'><span style='font-size:10.0pt;font-family:"Courier New"'>vtkImageViewer2
* Imageviewer = vtkImageViewer2::New();<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:35.4pt;text-indent:35.4pt;text-autospace:
none'><span style='font-size:10.0pt;font-family:"Courier New"'>Imageviewer -&gt;SetInput(</span><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New"'>Imagereslicer</span><span
style='font-size:10.0pt;font-family:"Courier New"'>-&gt;GetOutput() );</span><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            Imageviewer-&gt;UpdateDisplayExtent();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            Imageviewer()-&gt;Render();<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB
style='font-size:10.0pt;font-family:"Courier New"'>            Imageviewer-&gt;Update();<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New"'>                        </span><span
lang=EN-GB><o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB>Regards, <o:p></o:p></span></p>

<p class=MsoNormal>Kana Arunachalam Kannappan<o:p></o:p></p>

<p class=MsoNormal>Research Associate<o:p></o:p></p>

<p class=MsoNormal>FH OÖ Forschungs &amp; Entwicklungs GmbH<o:p></o:p></p>

<p class=MsoNormal>Stelzhamer Strasse 23,<o:p></o:p></p>

<p class=MsoNormal>4600 Wels,<o:p></o:p></p>

<p class=MsoNormal>Austria.<o:p></o:p></p>

<p class=MsoNormal>Phone: +43 (0)7242 72811 -4420<o:p></o:p></p>

<p class=MsoNormal>kana.arunachalam@fh-wels.at<o:p></o:p></p>

<p class=MsoNormal>www.fh-ooe.at; www.3dct.at<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>