Hello Barak, Thank you for your responses.
I have been using : IMP.algebra.get_rotation_from_fixed_xyz Which provides the XYZ angles in the fixed "lab" coordinate system. It works well and I was able to use the results and feed them into our own algorithms.
Thank you, Dany
On 17 July 2013 00:38, Barak Raveh barak.raveh@gmail.com wrote:
> Hi Dany, > > We are considering removal of some of the Euler angle conversion > functions, which are not frequently used by the IMP community and may not > be numerically stable, while keeping only a few stable and well working > ones that we will maintain. > > But before we do that - can you let us know which ones are important to > you? We don't want to remove something that you're already using :) > > Best, > Barak > > > On Tue, Jul 16, 2013 at 12:00 PM, imp-users-request@salilab.org wrote: > >> Send IMP-users mailing list submissions to >> imp-users@salilab.org >> >> To subscribe or unsubscribe via the World Wide Web, visit >> https://salilab.org/mailman/listinfo/imp-users >> or, via email, send a message with subject or body 'help' to >> imp-users-request@salilab.org >> >> You can reach the person managing the list at >> imp-users-owner@salilab.org >> >> When replying, please edit your Subject line so it is more specific >> than "Re: Contents of IMP-users digest..." >> >> >> Today's Topics: >> >> 1. Re: Rotations and Euler angles - possibly wrong >> documentation/function names (Dan Cohen) >> >> >> ---------------------------------------------------------------------- >> >> Message: 1 >> Date: Tue, 16 Jul 2013 15:56:08 +0300 >> From: Dan Cohen bojemoi@gmail.com >> To: Help and discussion for users of IMP imp-users@salilab.org >> Subject: Re: [IMP-users] Rotations and Euler angles - possibly wrong >> documentation/function names >> Message-ID: >> <CAECL089r0AkEwebki37Xg5k31+_ZkcwvsHZuWuDE6eCjVh= >> xFQ@mail.gmail.com> >> Content-Type: text/plain; charset="iso-8859-1" >> >> Thank you for your answer. >> >> I was able to pinpoint the problem - it is not a bug but it is a quite >> confusing implementation so I would advise to change it. >> Here goes : >> >> When using an zxz rotation (Implemented in FixedZXZ object) then : >> A) When you print the object it will print the angles in this order : psi >> , >> theta , phi >> >> Proof (From imp/modules/algebra/include/Rotation3D.h) >> >> FixedZXZ() {} >> FixedZXZ(double psi, double theta, double phi) { >> v_[0] = psi; >> v_[1] = theta; >> v_[2] = phi; >> } >> double get_psi() const { return v_[0]; } >> double get_theta() const { return v_[1]; } >> double get_phi() const { return v_[2]; } >> IMP_SHOWABLE_INLINE(FixedZXZ, { >> out << v_[0] << " " << v_[1] << " " << v_[2]; >> }); >> >> ----- >> >> But when using the function get_rotation_from_fixed_zxz(double phi, double >> theta, double psi) to create >> such a rotation, you provide it with the Euler angles in a different order >> : phi-theta-psi >> >> This causes in a situation in which writing the rotations to a file and >> reading them back (while assuming >> the same order of angles) caused me to get a different transform and >> producing wrong results. >> >> Not a bug but quite confusing. BTW, When using the ZYZ variant the order >> IS >> the same so there is no such problem. >> >> Could you confirm my understanding? >> Thank you, >> Dany >> >> >> >> >> On 15 July 2013 21:22, Daniel Russel drussel@gmail.com wrote: >> >> > Sorry about the confusion. The Euler angle support has been added in a >> > fairly ad hoc manner and is not extremely coherent or consistent. I >> think >> > part of this is intrinsic to Euler angles as there are lots of >> conventions >> > used in different places. You can see some more discussion about what >> to do >> > with them at https://github.com/salilab/imp/issues/303. We didn't >> > really come to any solid consensus on where to go. >> > >> > >> > On Mon, Jul 15, 2013 at 6:59 AM, Dan Cohen bojemoi@gmail.com wrote: >> > >> >> Hello all, >> >> >> >> Please refer to Rotation3D.h >> >> I add my remarks, all starting by XXXXXX : >> >> >> >> >> >> /** \name Euler Angles >> >> There are many conventions for how to define Euler angles, based on >> >> choices >> >> of which of the x,y,z axis to use in what order and whether the >> >> rotation >> >> axis is in the body frame (and hence affected by previous >> rotations) >> >> or in >> >> in a fixed frame. See >> >> >> >> >> http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles >> >> for a general description. >> >> >> >> - All Euler angles are specified in radians. >> >> - The names are all \c rotation_from_{fixed/body}_abc() where abc >> is >> >> the >> >> ordering of x,y,z. >> >> @{ >> >> */ >> >> >> >> *XXXXXX According to that, functions with the word "fixed" in their >> name >> >> should >> >> * >> >> *XXXXXX Use the Lab fixed axis for rotations and NOT the new axis. >> >> * >> >> >> >> //! Initialize a rotation in x-y-z order from three angles >> >> /** \param[in] xr Rotation around the X axis in radians >> >> \param[in] yr Rotation around the Y axis in radians >> >> \param[in] zr Rotation around the Z axis in radians >> >> \note The three rotations are represented in the original (fixed) >> >> coordinate frame. >> >> See Rotation3D >> >> See FixedXYZ >> >> */ >> >> IMPALGEBRAEXPORT Rotation3D get_rotation_from_fixed_xyz(double xr, >> double >> >> yr, >> >> double zr); >> >> >> >> *XXXXXX The above function complies with the above rule >> >> * >> >> //! Initialize a rotation from euler angles >> >> /** >> >> \param[in] phi Rotation around the Z axis in radians >> >> \param[in] theta Rotation around the X axis in radians >> >> \param[in] psi Rotation around the Z axis in radians >> >> \note The first rotation is by an angle phi about the z-axis. >> >> The second rotation is by an angle theta in [0,pi] about the >> >> former x-axis , and the third rotation is by an angle psi >> >> about the former z-axis. >> >> See Rotation3D >> >> */ >> >> IMPALGEBRAEXPORT Rotation3D get_rotation_from_fixed_zxz(double phi, >> >> double theta, >> >> double psi); >> >> >> >> *XXXXXX I'm not sure what "former" means here, but probably this >> >> function complies too. >> >> XXXXXX Don't understand why angle parameter names are so different here >> >> * >> >> //! Generate a rotation object from Euler Angles >> >> /** \note The first rotation is by an angle about the z-axis. >> >> The second rotation is by an angle about the new y-axis. >> >> The third rotation is by an angle about the new z-axis. >> >> \param[in] Rot First Euler angle (radians) defining the rotation (Z >> >> axis) >> >> \param[in] Tilt Second Euler angle (radians) defining the rotation >> (Y >> >> axis) >> >> \param[in] Psi Third Euler angle (radians) defining the rotation (Z >> >> axis) >> >> See Rotation3D >> >> See FixedZYZ >> >> */ >> >> IMPALGEBRAEXPORT Rotation3D get_rotation_from_fixed_zyz(double Rot, >> >> double Tilt, >> >> double Psi); >> >> >> >> *XXXXXX This function is also called fixed but clearly says it is using >> >> the NEW axis. >> >> * >> >> >> >> I'm confused and add to that , the fact that the results of these >> >> functions seem to be different than the ones produced by Chimera's >> rotate >> >> function so I'm in a problem here. >> >> >> >> Thank you, >> >> Dany >> >> >> >> >> >> _______________________________________________ >> >> IMP-users mailing list >> >> IMP-users@salilab.org >> >> https://salilab.org/mailman/listinfo/imp-users >> >> >> >> >> > >> > _______________________________________________ >> > IMP-users mailing list >> > IMP-users@salilab.org >> > https://salilab.org/mailman/listinfo/imp-users >> > >> > >>