| | Re: Another matrix inverse question
|
|
(...) Sorry about that. I wrote that code so long ago that I forgot that it wasn't a fully general-purpose matrix inversion routine. (Note that it is the way it is so that it will perform better, not because I was too lazy to do the whole shebang.) (...) (18 years ago, 10-Apr-07, to lugnet.cad)
|
|
| | Re: Another matrix inverse question
|
|
(...) Hi Travis, Looking at the java version of your inversion routine I would guess that it will work for almost any 3x3 matrix + 1x3 translation (the 4x3 + 1 form). Where it will have problems is in matrices for which one or more of the (...) (18 years ago, 10-Apr-07, to lugnet.cad)
|
|
| | Re: Another matrix inverse question
|
|
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 (...) (18 years ago, 10-Apr-07, to lugnet.cad)
|
|
| | 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)
|
|
| | Re: Another matrix inverse question
|
|
(...) 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, (...) (18 years ago, 11-Apr-07, to lugnet.cad)
|
|
| | 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)
|
|
| | Re: Another matrix inverse question (and answer?)
|
|
(...) If it's only rotations then it should make sense. Another way of passing the information is as follows (M,x) where M is the matrix and x is the translation vector the inverse of this is (Mi,-Mi x) which you can see by showing that an operation (...) (18 years ago, 11-Apr-07, to lugnet.cad)
|
|
| | Re: Another matrix inverse question
|
|
(...) Som further clarification... I was back in the 3x3 matrix world when I wrote this: the true inverse of a rotation + translate in psuedo-4x4 notation is as follow [ R11 R12 R13 x R21 R22 R23 y R31 R32 R33 z 0 0 0 1 ] goes to [ R11 R21 R31 xp (...) (18 years ago, 11-Apr-07, to lugnet.cad)
|
|
| | Re: Another matrix inverse question (and answer?)
|
|
(...) Yes, that makes sense. Looking back at Travis's code, I see that's basically what's happening there, except that some references to the original matrix should be references to the inverse matrix. He probably used it only to invert rotations (...) (18 years ago, 11-Apr-07, to lugnet.cad)
|