Hardy,
While I have "solved" the problem, I'm not sure that I'm doing things as
efficiently as possible. Normally, I might not be so concerned, but
computational power is at a premium with my real time application. I have
looked into Euler angles, but apparently, they suffer from the same problem
I was trying to solve initially, what is called Gimbal lock I believe (the
loss of a degree of freedom in rotation). I'm still looking for a better
solution, if it exists...
Evan Drumwright
-----Original Message-----
From: Hardy Henneberg <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Date: Friday, January 28, 2000 4:44 PM
Subject: Re: [JAVA3D] more vecmath questions...
>Evan Drumwright wrote:
>
>> Lily,
>>
>> I need to rotate about an *object's* x,y, and z axes, rather than the
>> coordinate system's axes. Unless there is something that I am missing, I
>> cannot rotate around x, y, and z simultaneously. I first must rotate
around
>> one axis, then around another, and finally the third. As I said before,
if
>> I perform the rotations in the order x, then y, then z, I have to account
>> for the y axis being rotated about the x axis, and the z axis being
rotated
>> about the x axis and then about the y axis...
>>
>> Evan
>>
>> -----Original Message-----
>> From: Lily Lee <[EMAIL PROTECTED]>
>> To: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
>> Date: Wednesday, January 26, 2000 2:37 PM
>> Subject: Re: [JAVA3D] more vecmath questions...
>>
>> >Evan,
>> >
>> >I don't understand the problem that you are describing.
>> >
>> >... and is there any reason that you are applying rotations about each
>> >axis sequencially? If not, then the whole idea of using axisangle is
>> >to get a rotation about any arbitrary axis, such as [0.2, -0.4, 0.6],
>> >that does not even have to unit length, and any arbitrary angle.
>> >
>> >Lily Lee
>> >
>> >
>> >>
>> >> First of all thanks for your help, Lily Lee. AxisAngle is the
solution
>> to
>> >> rotating about an object's coordinate system rather than the absolute
>> >> coordinate system...
>> >>
>> >> However, I am still confused about something. Let's assume I carry
out
>> >> rotations about the x axis first, then about the transformed y axis,
and
>> >> finally about the transformed z axis. From my computer graphics text,
>> you
>> >> multiply the transformation matrix by your vector to get the
transformed
>> >> vector.
>> >>
>> >> For example, the matrix for rotation about the x axis is:
>> >>
>> >> 1 0 0 0
>> >> 0 cos a -sin a 0
>> >> 0 sin a cos a 0
>> >> 0 0 0 1
>> >>
>> >> If I multiply this by the unit vector along the y axis, [ 0 1 0 1] T,
>> then I
>> >> get the vector [ 0 0 1 1 ] T, which is the unit vector along the z
axis.
>> >> This conforms to the right handed coordinate system and makes sense.
>> What
>> >> doesn't make sense?
>> >>
>> >> Let's say that I rotate my object around the absolute X axis by some
>> >> arbitrary angle. I then should be able to rotate the unit vector for
the
>> Y
>> >> axis by the same angle (we'll call this rotated vector Y'). I can
then
>> use
>> >> AxisAngle to rotate about Y'.
>> >>
>> >> However, the above doesn't work! I have to multiply my Y unit vector
by
>> the
>> >> X rotation matrix (instead of the other way around) to get this to
work!
>> >> Things get even crazier when I try to obtain Z'!
>> >>
>> >> To get Z' I multiply the Z unit vector by the 3x3 rotation matrix of
my Y
>> >> transform. However, to get this to work, I have to negate the x
>> component
>> >> of the vector!
>> >>
>> >> Can anyone explain why this is the way it is done?
>> >>
>> >> Thanks,
>> >> Evan Drumwright
>> >>
>> >>
>>
===========================================================================
>> >> 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".
>>
>>
===========================================================================
>> 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".
>
>hello Evan,
>If you want to rotate x,y,z in a static frame in stead of first rotate
around
>x, the rotate around y in the now x-rotated system, you should use
setEuler().
>
>kind regards
>Hardy Henneberg
>
>===========================================================================
>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".