<div dir="ltr">Hi Rick,<div><br></div><div>I cannot recommend using SetResliceAxesOrigin() to set the center of rotation.  Instead, it's best to build the 4x4 matrix that does the transformation that you need, and call SetResliceAxes(matrix).</div><div><br></div><div>For rotation around a point, you need a matrix that translates the center-of-rotation to (0,0,0), applies a rotation about (0,0,0), and then translates back again.</div><div><br></div><div> - David</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 25, 2016 at 10:30 AM, Richard Frank <span dir="ltr"><<a href="mailto:rickfrank@me.com" target="_blank">rickfrank@me.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>Hi</div><div><br></div><div>I'm trying to modify the vtkExample to use vtkImageReslice about a point not at the center of the volume.<br></div><div><br></div><div>A link to my code is below, which is the Cxx folder from the Imaging Examples, with modifications to the ImageSlicing sub project.<br></div><div><br></div><div><br></div><div><a href="https://1drv.ms/f/s!AvWAuQy-GUrmgyOyOKmDWSHhZUPk" target="_blank">https://1drv.ms/f/s!AvWAuQy-<wbr>GUrmgyOyOKmDWSHhZUPk</a></div><div><br></div><div>Also, here is a link to my input data, a small mha file which is easy to see:<br></div><div><br></div><div><a href="https://1drv.ms/u/s!AvWAuQy-GUrmg0YOY0ql2vr1StOU" target="_blank">https://1drv.ms/u/s!AvWAuQy-<wbr>GUrmg0YOY0ql2vr1StOU</a></div><div><br></div><div>if you load the file, you will see an axial view. The volume has an origin of (0,0,0). I compute the center of the volume, and then position the actor on that center point (actors are positioned by the center point).</div><div><br></div><div>This is analogous to what our application under development does - we position the slice actor in world coordinates using the DICOM Image Position Patient at the top left (depending on orientation) + center offset of the volume.<br></div><div><br></div><div> In my example code, when you load up for the first time and left click, and "rotate" with the mouse, I draw an angle widget for your convenience whose joint is on the center of rotation. I compute the matrix for the rotation, and set that in the reslice matrix, followed by  the origin. This works perfectly, and the slice rotates about its center.<br></div><div><br></div><div>If you right click, you will change the ctr of rotation in world coordinates. </div><div>ImageReslice-><wbr>SetResliceAxesOrigin(<wbr>rotationCenter[0], rotationCenter[1], rotationCenter[2]);</div><div><br></div><div>When you then rotate with left mouse, the angle widget joint is in the correct place in the view but  the the image rotates about a point which I can't quite determine.<br></div><div><br></div><div>The new center of rotation that the reslice uses seem to be proportionally related to how far away from the center of the image that is right clicked on - the closer to the center of the slice clicked, the less the center of rotation moves away from the click.<br></div><div><br></div><div>It seems like there's something I'm missing about how the center of rotation works. <br></div><div><br></div><div>Any help appreciated.<br></div><div><br></div><div><br></div><div>Thanks<br></div><div><br></div><div>Rick<br></div><div><br></div><div><br></div></div></blockquote></div><br></div>