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

Interpolation Axis for two Matrices

  1. Aug 2, 2005 #1
    If you have two standard 3d, orthogonal matrices representing axes of 3d coordinate systems of the same handedness, is it possible to find the vector about which you would rotate one of the matrices to get the other?

    If so, this would be a lot more intuitive than quaternions (at least for me) for programming a computer to do 3d tranformation interpolation.
     
  2. jcsd
  3. Aug 3, 2005 #2

    quasar987

    User Avatar
    Science Advisor
    Homework Helper
    Gold Member

    Did you get the crown in a Maxim magazine?
     
  4. Aug 3, 2005 #3
    LOL, I was expecing something substantive, and I got that.

    No, it is not from a magazine.
     
  5. Aug 3, 2005 #4

    robphy

    User Avatar
    Science Advisor
    Homework Helper
    Gold Member

    So, it seems you have [tex]R_2 = R_3 R_1 [/tex], where [tex]R_1[/tex] and [tex]R_2[/tex] are given orientation-preserving rotation matrices.
    Solving for the unknown, [tex]R_2 R_1^{-1}=R_3[/tex].
    When you rotate about an axis, you leave it unchanged.
    So, the vector you seek is an eigenvector of [tex]R_3[/tex] (with eigenvalue 1). (This might be easier if you can take advantage of the fact [tex]R_3[/tex] is a rotation.)
     
  6. Aug 3, 2005 #5

    quasar987

    User Avatar
    Science Advisor
    Homework Helper
    Gold Member

    K. It's the Burger King crown though, isn't it?
     
  7. Aug 3, 2005 #6
    Wow. This is the same exact method that a co-worker and I discussed earlier today.

    Thanks for the reply.
     
  8. Aug 3, 2005 #7
    Yes, it is. However, I modified it to say "Veggie King" and slapped a BK Veggie sticker on it. (I don't eat animals.)
     
  9. Aug 5, 2005 #8
    OK, I have a few more questions. This thread is becoming part programming, part linear & matrix algebra.

    A) The only method that I can remember for finding the inverse of a matrix by reducing the matrix to the identity (row or column echelon) and applying the same row or coumn transformations to the identity. Is there a computationally faster method of doing this? Can one exploit the fact that 3x3 rotation matrix is composed of all orthogonal vectors to simplify the calculation?

    Once I have the matrix [tex]R_3[/tex] (which transforms [tex]R_1[/tex] into [tex]R_2[/tex]) and the axis of rotation, I have the following method in mind for finding the angle of rotation about the axis:

    1) Pick a unit vector [tex]V[/tex] that is perpendicular to the axis
    2) Multiply [tex]V[/tex] by [tex]R_3[/tex] to get a new, rotated vector [tex]V_2[/tex]
    3) Calculate the angle between [tex]V[/tex] and [tex]V_2[/tex] using [tex]acos(V dot V_2)[/tex] (this limits the range to [0,PI])

    B) Do you see any problems with doing it this way? Is there a better (computationally faster or otherwise) method for doing this?
     
  10. Aug 5, 2005 #9

    robphy

    User Avatar
    Science Advisor
    Homework Helper
    Gold Member

    http://mathworld.wolfram.com/OrthogonalMatrix.html

    So, if A is an orthogonal matrix, then inverse(A)=transpose(A).

    Next, suppose you found the eigenvector of R3 (with eigenvalue 1).
    If you express R3 in a basis that includes your eigenvector, then
    your rotation matrix would have a diagonal with entries 1,cos(theta),cos(theta).
    The trace of R3 (the sum of the diagonals) in this basis is equal to its trace in the original basis. So, without chaging bases, trace(R3)=1+2cos(theta). Solve for theta.

    After googling, the following URL suggests a more efficient method
    http://www.math.niu.edu/~rusin/known-math/97/rotations
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Interpolation Axis for two Matrices
Loading...