Both of you have some good points. But just a comment here, Sun people CAN
make miracles:-).
It was recently discussed in this list that the function "normalize" much
unlike what it sounds it should do, it actually checks and orthogonalizes
the matrices in order to avoid exactly this type of errors. Remember that
a rotation matrix is always orthogonal. If floating point errors occur,
the make it *almost* orthogonal. Correcting the values to the closest that
will maintain orthogonality should fix all your problems.
Of course, I do not know if they make a call to it in the mouseRotate
behavior, as I haven't looked through the code...
Paraskevas
--- Artur Biesiadowski <[EMAIL PROTECTED]> wrote:
> "Dipl. Ing. Paul Szawlowski" wrote:
>
> > Can someone (from Sun ? ) make assure that continous matrix
> > multiplication over a long period of time is no problem in Java3d ?
> Then
> > I would switch to this.
>
> I don't think that sun people can do miracles. If you use floating
> point, you are always risking small corruption. Just do
>
> double x = Math.abs(1.2 - 1.0 - 0.2);
>
> (of course supposing it is evaluated at runtime, not at compile time).
> What is value of x ?
>
> With matrices this problem is even larger, because of number of
> computation involved there. Basically if you do a lot of non-trivial
> math on matrix (and rotations are non-trivial in this meaning), you are
> almost guaranteed to go astray at some point. There is no way sun could
> prevent this, unless they will start to 'correct' matrices for you of
> they will get close to unstable ones. But 'correcting' values for
> programmer is not a good idea - it would be surprising to get up
> flipped, just because algo determined it would be too unstable to keep
> it old way.
>
> In my code I use separate values for every component - position, zoom,
> rotation, tilt. I apply all changes on this values and only the
> construct Transform3D applying all these in correct order. Of course it
> is not always easy - if you want full 6DOF relative to view, not to
> world (in my case I work relative to world at all time) it could be
> harder. I would suggest keeping position, scale and orientation
> separate. Scale probably would not change in your case, so only problem
> would be position (quite easy I suppose) and orientation. For
> orientation use Quat4d(f). It requires some tricks to handle properly,
> but won't degenerate with time and allows nice interpolation of
> different orientations.
>
>
> Artur
>
>
===========================================================================
> 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".
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/
===========================================================================
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".