[vtkusers] vtkTransform... (BUG or what ?)

Sebastien Auclair sxa at fluent.com
Thu Mar 27 16:09:29 EST 2003


Greetings !

For those of you who just joined us,.... we have a little mystery here.
We're trying to explain why the following code produces such strange results
:
#####################################################
from vtkpython import *
b = vtkTransform()
b.RotateZ(0)
b.RotateX(90)
b.RotateY(90)
print b.GetOrientation()
(90.0, -0.0, 90.0)
#####################################################
It should be (90.0, 90.0, 0) and not (90.0, -0.0, 90.0) !!!!

If the input is (89, 89, 1), then the result is correct.
But (90, 87, 1) produces (90, 0, 88).

Is this a bug ?

Result are the same in C++.
Observed in VTK4.0 and VTK4.2
Win2K.

Thanks !
________________________________________
Seb

----- Original Message -----
From: "Glen Lehmann" <glehmann at imaging.robarts.ca>
To: "Sebastien Auclair" <sxa at fluent.com>
Cc: <vtkusers at public.kitware.com>
Sent: Thursday, March 27, 2003 3:58 PM
Subject: Re: [vtkusers] vtkTransform and Rotations !!


> Here's the test I just ran using VTK 4.2.0 and last night's cvs build;
>
>  >>> b = vtkTransform()
>  >>> b.RotateZ(0)
>  >>> b.RotateX(90)
>  >>> b.RotateY(90)
>  >>> print b.GetOrientation()
> (90.0, -0.0, 90.0)
>
> I'm afraid I may not be able to offer any further advice to you,
> Sebastien.  For the sake of the rest of the list, perhaps you could
> provide some info about your OS, vtk vesion, python version, etc...
>
> Best of luck,
> Glen
>
>
> Sebastien Auclair wrote:
>
> >Glen,
> >
> >I just tested your python code (in python) and its not working !
> >
> >Try again but with the initial values i introduced (90, 90, 0) :
> >
> >
> >
> >>>>from vtkpython import *
> >>>>a = vtkTransform()
> >>>>a.RotateZ(0)
> >>>>a.RotateX(90)
> >>>>a.RotateY(90)
> >>>>print a.GetOrientation()
> >>>>
> >>>>
> >(90.0, 0.0, 90.0)
> >
> >
> >
> >Thanks !
> >_________________________________
> >Seb
> >
> >
> >----- Original Message -----
> >From: "Glen Lehmann" <glehmann at imaging.robarts.ca>
> >To: "Sebastien Auclair" <sxa at fluent.com>
> >Cc: <vtkusers at public.kitware.com>
> >Sent: Thursday, March 27, 2003 3:33 PM
> >Subject: Re: [vtkusers] vtkTransform and Rotations !!
> >
> >
> >
> >
> >>I suspect it's because you've explicitly set the PostMultiply Flag,
> >>which will of course chage the order the rotations are applied.  Using
> >>the default PreMultiply, here's the output of a python test I just ran.
> >>
> >> >>> from vtkpython import *
> >> >>> a = vtkTransform()
> >> >>> a.RotateZ(90)
> >> >>> a.RotateX(40)
> >> >>> a.RotateY(10)
> >> >>> print a.GetOrientation()
> >>(40.0, 10.0, 90.0)
> >>
> >>Sebastien Auclair wrote:
> >>
> >>
> >>
> >>>Hum... That too isn't working....
> >>>
> >>>Then i get :
> >>>
> >>>X= 1.27222e-014
> >>>Y= 90
> >>>Z= -90
> >>>...again from initial angles:
> >>>X=90
> >>>Y=90
> >>>Z=0
> >>>
> >>>Thanks !
> >>>____________________________________
> >>>Seb
> >>>
> >>>----- Original Message -----
> >>>From: "Glen Lehmann" <glehmann at imaging.robarts.ca>
> >>>To: "Sebastien Auclair" <sxa at fluent.com>
> >>>Cc: <vtkusers at public.kitware.com>
> >>>Sent: Thursday, March 27, 2003 3:16 PM
> >>>Subject: Re: [vtkusers] vtkTransform and Rotations !!
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>Hi Sebastien,
> >>>>
> >>>>vtkTransform performs rotations in the ZXY order.  If you do something
> >>>>
> >>>>
> >>>>
> >>>>
> >>>like;
> >>>
> >>>
> >>>
> >>>
> >>>>newTransform->RotateZ(Rz);
> >>>>newTransform->RotateX(Rx);
> >>>>newTransform->RotateY(Ry);
> >>>>
> >>>>then GetOrientation() will will return what you expect.
> >>>>
> >>>>I hope this helps you out,
> >>>>Glen
> >>>>
> >>>>Sebastien Auclair wrote:
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>Hi folks !
> >>>>>
> >>>>>I need to create a rotation matrix for x,y and z . (Please note that
we
> >>>>>aren't using vtkActor for transformation...neither
vtkWindowInteractor
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>...)
> >>>
> >>>
> >>>
> >>>
> >>>>>I have read every post in the usergroup's repository and nothing
really
> >>>>>helped.
> >>>>>
> >>>>>The problem is that GetOrientation never produces to correct result.
> >>>>>
> >>>>>This is essentially how I do it :
> >>>>>##################################################################
> >>>>>vtkMatrix4x4 *matrix = vtkMatrix4x4::New();
> >>>>>vtkTransform* newTransform = vtkTransform::New();
> >>>>>newTransform->Identity();
> >>>>>newTransform->PostMultiply();
> >>>>>
> >>>>>
>
>>>>newTransform->Translate(-(m_origin[0]), -(m_origin[1]), -(m_origin[2]));
> >>>>
> >>>>
> >>>>>newTransform->RotateWXYZ(y, 0,1,0);
> >>>>>newTransform->RotateWXYZ(x, 1,0,0);
> >>>>>newTransform->RotateWXYZ(z, 0,0,1);
> >>>>>newTransform->Translate((m_origin[0]), (m_origin[1]), (m_origin[2]));
> >>>>>float test[3] ;
> >>>>>newTransform->GetOrientation(test);
> >>>>>##################################################################
> >>>>>For exemple,  if we try to rotate with (X=90, Y=90, Z=0), we get
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>orientation
> >>>
> >>>
> >>>
> >>>
> >>>>>(X=90, Y=0, Z=90).
> >>>>>And what is the difference between RotateX and RotateWXYZ (a, 1, 0,
0)
> >>>>>??????
> >>>>>
> >>>>>
> >>>>>Thanks for any help.
> >>>>>___________________________________________________
> >>>>>Seb
> >>>>>
> >>>>>_______________________________________________
> >>>>>This is the private VTK discussion list.
> >>>>>Please keep messages on-topic. Check the FAQ at:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>><http://public.kitware.com/cgi-bin/vtkfaq>
> >>>
> >>>
> >>>
> >>>
> >>>>>Follow this link to subscribe/unsubscribe:
> >>>>>http://public.kitware.com/mailman/listinfo/vtkusers
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>_______________________________________________
> >>>>This is the private VTK discussion list.
> >>>>Please keep messages on-topic. Check the FAQ at:
> >>>>
> >>>>
> >>>>
> >>>>
> >>><http://public.kitware.com/cgi-bin/vtkfaq>
> >>>
> >>>
> >>>
> >>>
> >>>>Follow this link to subscribe/unsubscribe:
> >>>>http://public.kitware.com/mailman/listinfo/vtkusers
> >>>>
> >>>>
> >>>>
> >>>>
> >>>_______________________________________________
> >>>This is the private VTK discussion list.
> >>>Please keep messages on-topic. Check the FAQ at:
> >>>
> >>>
> ><http://public.kitware.com/cgi-bin/vtkfaq>
> >
> >
> >>>Follow this link to subscribe/unsubscribe:
> >>>http://public.kitware.com/mailman/listinfo/vtkusers
> >>>
> >>>
> >>>
> >>>
> >>>
> >
> >_______________________________________________
> >This is the private VTK discussion list.
> >Please keep messages on-topic. Check the FAQ at:
<http://public.kitware.com/cgi-bin/vtkfaq>
> >Follow this link to subscribe/unsubscribe:
> >http://public.kitware.com/mailman/listinfo/vtkusers
> >
> >
> >
>




More information about the vtkusers mailing list