I can answer why some of the get methods are missing.
I believe it has to do with the "Gimble Lock Problem".  (It has been a
while since I dealt with this, so the name may not be correct, and the
explanation might be bad, but the concept still holds).

Basically, a Quaternion is capable of representing all rotations,
uniquely.  So no matter what rotation value you set it to, you can
mathematically determine what the original rotation was, in terms of x,y,
and z euler angles.
However, with a simple rotation matrix, although it can represent any
rotation, it cannot represent any rotation uniquely.  Thus, if you try to
determine what the original rotation was, in terms of x, y, z, euler
angles.. you will not alyways get your ORIGINAL x, y, and z values.
The values you get will always combine to give you the correct result, but
they will NOT always be the original values.

With that in mind, it makes good sense that transform3d has a get and set
method for quaternions.
It also makes sense that transform3d has a set method for euler angles.

It does NOT have a get method for euler angles because (i imagine) it is
not always possible to get the "correct" answer, for the reasons above.  I
personally think that transform3D should STILL have this method provided,
but should have a CLEAR explanation of what the inherent problems are!

just my 2 cents!
ian



> Implemented. It works, but...
>
> For little angles I get:
> Setting angles <0.0,0.5699999999999998,0.0>
> Back-calculated euler angles are alpha=0.0, beta=0.5699999999999998,
> gamma=0.0
>
> but when I pass the PI/2 rotation:
> Setting angles <0.0,-2.1600000000000006,0.0>
> Back-calculated euler angles are alpha=-3.141592653589793,
> beta=-0.9815926535897926, gamma=-3.141592653589793
>
> I know the result is the same, but...
> Any further suggestion? Otherwise I'll keep it like that.
>
>
> Mark Whitehorn wrote:
>>  A good reference for this sort of thing is Chapter 2 of "Introduction
>> to
>>  Robotics Mechanics and Control" by John J. Craig (Addison Wesley).
>> Here's
>>  equation 2.66 from section 2.8:
>>
>>  beta = atan2(-r_31, sqrt(r_11^2 + r_21^2))
>>  alpha = atan2(r_21/cos(beta), r_11/cos(beta))
>>  gamma = atan2(r_32/cos(beta), r_33/cos(beta))
>>
>>  alpha, beta, gamma are ZYX Euler angles for the 3x3 rotation matrix
>> r_ij...
>>
>> It's just trigonometry.
> Just... ;-)
>
>>
>>  Good luck with the PhD,
> I'll need it....
>
> Fabrizio
>
>>  Mark
>>
>>
>>
>>>----- Original Message -----
>>>From: "Fabrizio NUNNARI" <[EMAIL PROTECTED]>
>>>To: <[EMAIL PROTECTED]>
>>>Sent: Tuesday, June 17, 2003 9:48 AM
>>>Subject: [spam: 07.00/05.00] [JAVA3D] Transform3D and angles issue
>>>
>>>
>>>
>>>>Hello,
>>>>
>>>>I'm getting confused by the tons of methods of the Transform3D class.
>>>>Is it possible to retrieve the rotational component stored in a matrix?
>>>>I mean "just the three angles around the three axes".
>>>>
>>>>I normally use the (misleading, at least for me) .setEuler(Vector3d
>>>>euler) method. I'm looking for an equivalent .getEuler(Vector3d euler)
>>>
>>>one.
>>>
>>>>I also saw a .set(AxisAngle4d a1). I never tried it, but a
>>>> corresponding
>>>>.get(AxisAngle4d a1) doesn't exist.
>>>>
>>>>Finally, there is the copule .get/.set(Quat4d rot), but I haven't been
>>>>able to understand the relation between the stored (normalized) values
>>>>and angles value.
>>>>
>>>>What's the difference between .setEuler(Vector3d), .set(AxisAngle4d)
>>>> and
>>>>.set(Quat4d rot) ????
>>>>
>>>>
>>>>
>>>>The purpose? I have an object moved/rotated by a TransfromGroup. I want
>>>>to rotate it around a generic axes and then retrieve and print out the
>>>>resulting rotation angles (in the "Euler" form).
>>>>
>>>>Is it possible?
>>>>
>>>>
>>>>thanks,
>>>>Fabrizio NUNNARI
>>>>
>>>>--
>>>>Fabrizio Nunnari (nunnarif at di.unito.it)
>>>>PhD Student - Computer Science Department - Torino - Italy
>>>>http://www.di.unito.it/~nunnarif/
>>>>
>>>>
>>>
>> ===========================================================================
>>
>>>>To unsubscribe, send email to [EMAIL PROTECTED] and include in the
>>>
>>>body
>>>
>>>>of the message "signoff JAVA3D-INTEREST".  For general help, send email
>>>
>> to
>>
>>>>[EMAIL PROTECTED] and include in the body of the message "help".
>>>>
>>>
>>
>> ===========================================================================
>> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
>> body
>> of the message "signoff JAVA3D-INTEREST".  For general help, send email
>> to
>> [EMAIL PROTECTED] and include in the body of the message "help".
>>
>
>
> --
> Fabrizio Nunnari (nunnarif at di.unito.it)
> PhD Student - Computer Science Department - Torino - Italy
> http://www.di.unito.it/~nunnarif/
>
> ===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
> body
> of the message "signoff JAVA3D-INTEREST".  For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
>

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to