Hi Raffi,

   In the implementation of AxisAngle set(Quad)
and setRotation(AxisAngle) we explicitly
change the magnitude to avoid divide by zero happen
when computing axis. I think it is this that adjust
the data back to normal somehow. But for setRotation(Quad) it
just use the well known formula to set the rotation
part so it seems not that stable numerically.

Note that both Transform3D setRotation()
will preserve the scale part (which all three
scales may not be equal). So if the Transform3D
matrix original is not congruent, invoke
setRotation() later will not change it.

We've bug 4599536 filed as a record
to keep track of it.

Thanks.

- Kelvin
--------------
Java 3D Team
Sun Microsystems Inc.


>From: "Kasparian, Raffi J." <[EMAIL PROTECTED]>
>To: Kelvin Chung <[EMAIL PROTECTED]>, "Java3D Interest Group (E-mail)"
<[EMAIL PROTECTED]>
>Subject: RE: [JAVA3D] Bug: Quat vs AxisAngle
>Date: Thu, 13 Dec 2001 14:42:06 -0500
>MIME-Version: 1.0
>
>Hi Kelvin,
>
>Thank you for the workaround. I hadn't suspected that scale might be the
>culprit.
>
>In my complex application, MANY behaviors change MANY different Transform3Ds
>above the ViewPlatform. The BadTransformException is actually thrown in a
>different method than the one I sent you (a method that also inverts a
>Transform3D). The workaround helped when I put it into that other method
>because it turned up a non-uniform scaling (0.9998446654939445,
>0.9999999999999996, 1.0001553586386134) due, no doubt, to rounding errors.
>
>HOWEVER...
>
>I think the bigger issue is that there seems to be less accuracy in Quats
>than in AxisAngles. In my entire program, there is only one method that uses
>a Quat (the one that I sent you). The other methods use AxisAngles. It looks
>pretty damning against the Quat that when I replace its one instance with an
>AxisAngle the problem goes away.
>
>Catching the exception and doing the setTransform again works but is less
>desirable than just using the AxisAngle. Judging from the APIs, AxisAngle
>seems to be less favored than Quat. I, for one, would like to see
>Transform3D.get( AxisAngle ) in addition to Transform3D.get( Quat ).
>
>Raffi

===========================================================================
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