To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.cadOpen lugnet.cad in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 CAD / 14554
14553  |  14555
Subject: 
Re: Another matrix inverse question
Newsgroups: 
lugnet.cad
Date: 
Wed, 11 Apr 2007 03:21:49 GMT
Viewed: 
2089 times
  
In lugnet.cad, Timothy Gould wrote:
In lugnet.cad, Brian Durney wrote:
Thanks for the information, everyone.  Although the test case I posted was
arbitrary, I did some other tests with matrices that were used for rotations and
translations.  The upper-left 3x3 seemed to be OK, but the bottom row had
problems.  I'm guessing that the inversion routine wasn't written to include
those.

I wanted the inverse so that I could move a part back to the origin and do
rotations in the local coordinate space.  I think that what I will do is keep an
inverse matrix with the transformation matrix, and every time I do a
transformation (like rotate 45 degrees around the X axis) I will do the inverse
(-45 degrees) and apply it to the inverse matrix.

I suppose another possibility is to transform the origin and/or axis of rotation
and then use quaternions to specify rotation around a point other than the
origin, but it seems like that would have more opportunities for mistakes,
considering my limited experience with quaternions.

Thanks again for the help.
Brian Durney

Quarternions are, IMO, a bad way to do what matrices do well.

For a rotation you don't need to (and shouldn't) calculate the inverse by a
routine. Just transpose (swap the off-diagonals) and you have the inverse.
There's no point running unneccessay numerical risks.

Tim

I can see the advantages of swapping the off-diagonals for inverting the
rotation(s), but that still leaves the question of how to invert translations.
In a current example I'm looking at, a minifig hand, the hand is rotated 45
degrees, translated, rotated about 9 degrees (with the arm) and translated
again.  After those operations the transform matrix looks like this:

handL xform
  0.98543465  -0.17005472  0.0  0.0
  0.12024684  0.6968075  0.70710677  0.0
  -0.12024684  -0.6968075  0.70710677  0.0
  23.558212  25.872986  -10.0  1.0

An inverse transform matrix that works looks like this:
handLInverse
  0.98543465  0.12024684  -0.12024684  0.0
  -0.17005472  0.6968075  -0.6968075  0.0
  0.0  0.70710677  0.70710677  0.0
  -18.815256  -13.790222  27.932358  1.0

The off-diagonals for the rotation are swapped as you said (although that's not
how this inverse was made), but the inverse translation has no obvious
correspondence to the original composite transformation.  Is there any way to
calculate the inverse translation as well as the inverse rotation?
Thanks,
Brian Durney



Message has 2 Replies:
  Re: Another matrix inverse question (and answer?)
 
(...) I think I just answered my own question. I applied the inverse rotation (calculated by swapping the off-diagonals) to the translation row of the original transformation and then negated it to get the translation row in the inverse. That worked (...) (18 years ago, 11-Apr-07, to lugnet.cad)
  Re: Another matrix inverse question  [DAT]
 
(...) You might want to check your row/column order for the converted code from LDView. At least conceptually, I always invision transformation matrices like so: A B C X D E F Y G H I Z 0 0 0 1 Notice that the translation info is in the last column, (...) (18 years ago, 11-Apr-07, to lugnet.cad)

Message is in Reply To:
  Re: Another matrix inverse question
 
(...) Quarternions are, IMO, a bad way to do what matrices do well. For a rotation you don't need to (and shouldn't) calculate the inverse by a routine. Just transpose (swap the off-diagonals) and you have the inverse. There's no point running (...) (18 years ago, 10-Apr-07, to lugnet.cad)

12 Messages in This Thread:



Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact

This Message and its Replies on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR