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

Rotation matrices in R^3

  1. Jul 20, 2009 #1
    I am looking for two rotation matrices M1 and M2, which describe a rotation by an arbitrary angle around the axes passing through (0,0,0) and (1,1,1), and (1,0,0) and (2,1,1). All relative to the standard basis. How would I approach this problem?
  2. jcsd
  3. Jul 20, 2009 #2


    User Avatar
    Science Advisor
    Homework Helper

    Hi owlpride! :wink:

    Those two axes are parallel, so I suppose you could relate them by a translation. :smile:
  4. Jul 20, 2009 #3
    I am very well aware that they are parallel. That's how I chose them :) That being said, I don't even know how to get the initial rotation... Maybe some change of basis to get one basis vector parallel to the axis of rotation and the other two vectors in the orthogonal plane? And then the standard cos, sine, -sine, cos transformation?
  5. Jul 25, 2009 #4


    User Avatar
    Science Advisor
    Gold Member


    It turns out that there is a nice way to do this that isn't too hard. I learned it from working a homework problem in "a brief on tensor analysis" by Simmonds (a really good book). If you draw this out I think it will make sense. Let [tex]\mathbf{\hat{e}}[/tex] denote a unit vector in the direction of your axis of rotation. you can construct the matrix that will take an arbitrary vector [tex]\mathbf{u}[/tex] and rotate it (right handed) an angle [tex]\vartheta[/tex] about the axis to get a new vector [tex]\mathbf{v}[/tex]. To do this you form an orthogonal basis out of [tex]\mathbf{\hat{e}}[/tex] , [tex]\mathbf{\hat{e} \times u}[/tex], and [tex]\mathbf{\hat{e} \times \left( \hat{e} \times u \right)}[/tex]. After normalizing the basis vectors, you just find the projection of [tex]\mathbf{v}[/tex] onto the basis vectors and do a page of algebra to simplify. The Answer you get is

    [tex]\mathbf{v}=\cos \vartheta \mathbf{u} + \left(1-\cos \vartheta \right) \mathbf{\hat{e}} \left( \mathbf{\hat{e} \cdot u}\right) + \sin \vartheta \mathbf{\hat{e} \times u} = T \mathbf{u}.[/tex]


    [tex]T=\cos \vartheta I + \left(1-\cos \vartheta \right) \mathbf{\hat{e}\hat{e}} + \sin \vartheta \mathbf{\hat{e} \times }.[/tex]

    The notation above is old-fashioned. [tex]I[/tex] is the identity matrix, and the meaning of [tex]\mathbf{\hat{e}\hat{e}}[/tex] and [tex]\mathbf{\hat{e} \times}[/tex] can be deduced from the equation for [tex]\mathbf{v}[/tex].

    The matrix you want is the coordinate rotation matrix, [tex]R[/tex], which is [tex]R=T^{-1}=T^{T}[/tex], since rotation matrices are orthogonal.

    This will take care of your first case. The second case is offset from the origin so a matrix won't do the job by itself - you also need an offset.

  6. Jul 26, 2009 #5


    User Avatar
    Science Advisor

    What I would do is find a matrix that represents that rotation around the z-axis:
    [tex]\begin{bmatrix}cos(\theta) & -sin(\theta) & 0 \\ sin(\theta) & cos(\theta) & 0 \\ 0 & 0 & 1\end{bmatrix}[/tex]

    then multiply by the matrix that rotates the z-axis into the given axis of rotation.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook