<div dir="ltr"><div>Hi Fabian,</div><div><br></div><div>Calling SetResliceAxesOrigin() is the wrong thing to do here.</div><div><br></div><div>If you want to rotate around a specific point, you need to build a</div><div>transform matrix that does the following:<br></div><div>1) translate by (- P) where P is the desired centre of rotation</div><div>2) rotate</div><div>3) translate by P (the same P as above)</div><div><br></div><div>Define T as the matrix that translates by -P,</div><div>define R as the pure rotation matrix, and</div><div>define U as the matrix that translates by P:</div><div><br></div><div>  M = U R T <br></div><div><br></div><div>The special property of this matrix is that it does not change the</div><div>point that is defined as the centre of rotation:</div><div><br></div><div>  M P == P</div><div><br></div><div>So you should build matrix M and then call SetResliceAxes(M).</div><div><br></div><div> - David</div><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 27, 2016 at 1:26 PM, Fabian Torres <span dir="ltr"><<a href="mailto:fabian.trobles@gmail.com" target="_blank">fabian.trobles@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><pre style="white-space:pre-wrap;color:rgb(0,0,0)">Hi all.

I have a volume and I want to extract the center sagital slice of the
volume and rotate it around the x axis in the center of the image. For this
I'm using vtkImageReslice and vtkTransform.
Everything works fine until I rotate the slice. It is rotating around the
origin of the output image (lower left corner of the image) and not through
the center of it. Can any one explain to me how do I choose the rotation
axis in the transform. here is a brief of my code.

const double MainWindow::sagitalElements[16] = {
0, 0, 1, 0,
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 0, 1
};

volumeData->GetSpacing(spacing);
volumeData->GetOrigin(origin);
volumeData->GetDimensions(dimensions);

centerSlice[0] = floor(dimensions[0]*0.5);
centerSlice[1] = floor(dimensions[1]*0.5);
centerSlice[2] = floor(dimensions[2]*0.5);

positionCenter[0] = origin[0] + spacing[0] * centerSlice[0];
positionCenter[1] = origin[1] + spacing[1] * centerSlice[1];
positionCenter[2] = origin[2] + spacing[2] * centerSlice[2];

resliceAxesSagital->DeepCopy(sagitalElements);

transformSagital->RotateX(rotate);

reslicerSagital->SetInput(volumeData);
reslicerSagital->SetOutputDimensionality(2);
reslicerSagital->SetResliceAxes(resliceAxesSagital);
reslicerSagital->SetResliceAxesOrigin(positionCenter);
reslicerSagital->SetInterpolationModeToLinear();

reslicerSagital->SetResliceTransform(transformSagital);
reslicerSagital->Update();
sliceImageSagital = reslicerSagital->GetOutput();


As I dsaid before the problem is that I want to rotate around the
center of the image and not the origin of the image.


Thanks a lot</pre><span class=""><font color="#888888"><div><br></div>-- <br><div data-smartmail="gmail_signature">Fabián Torres Robles<br>Maestria en Ciencias en Ingeniería Electrónica<br>Ingeniería en Sistemas Electrónicos<br>tel. 58081280, 0445534661338<br>e-mail <a href="mailto:fabian.trobles@gmail.com" target="_blank">fabian.trobles@gmail.com</a>, <a href="mailto:dae.wong@gmail.com" target="_blank">dae.wong@gmail.com</a>  <div style="padding:0px;margin-left:0px;margin-top:0px;overflow:hidden;word-wrap:break-word;color:black;font-size:10px;text-align:left;line-height:130%"></div><div style="padding:0px;margin-left:0px;margin-top:0px;overflow:hidden;word-wrap:break-word;color:black;font-size:10px;text-align:left;line-height:130%"></div></div>
</font></span></div>
</blockquote></div><br></div></div>