Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Help solving an equation for 3d modeling

  1. May 24, 2010 #1
    This is my first post and I'm pretty much lost when it comes to linear algebra. I am a programmer and I am currently working on converting a 3D model format for personal purposes. I am having trouble figuring out an equation. If you want the background of what I am doing I'll be happy to explain but it really isn't necessary to solve my problem.

    Lets say that I have two matrices (4x4) M1 and M2. One vector4 v. I transform v by M1 to get v1 and v by M2 to get v2. So...

    M1 * v = v1
    M2 * v = v2

    I am looking for some matrix X.

    X * v1 = v2, solve for X.

    What I came up with is X = (M2 * v) / (M1 * v), cross out v and get X = M2 / M1 or X = M2 * M1_inverse.

    This does not produce the result I am looking for. Any suggestions? Thank you for any help.
  2. jcsd
  3. May 24, 2010 #2
    X = M2*M1^-1 is correct, so it would seem your implementation is wrong somehow?
  4. May 25, 2010 #3
    Thanks. I probably made a programming error.
  5. May 25, 2010 #4
    I take it the problem isn't anything so obvious as M1 being not always invertible?
  6. May 25, 2010 #5
    I'd start by checking that the inverse is actually the inverse, ie multiply by M1 and see you get (almost) the identity matrix. Next I'd check that I got the order of the multiplication right for the matrix multiplication routine I'm using (ie perhaps you should call it with (M1inv, M2) and not the "natural" way).

    As a side note, a slightly less "hairy" way to get to the answer is this:

    M1 * v = v1 ==> M1^-1 * M1 * v = M1^-1 * v1 ==> v = M1^-1 * v1

    M2 * v = v2 ==> M2 * (M1^-1 * v1) = v2 ==> (M2 * M1^-1) * v1 = v2
  7. May 29, 2010 #6
    I agree with Lorc Crc - I wouldn't do any "crossing out" in linear algebra - or even division for that matter - always move things around with the inverse operation.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook