Drexel dragonThe Math ForumDonate to the Math Forum

Ask Dr. Math - Questions and Answers from our Archives
_____________________________________________
Associated Topics || Dr. Math Home || Search Dr. Math
_____________________________________________

Converting a Vector to a Transformation Matrix


Date: 03/19/98 at 03:24:36
From: Harvey
Subject: Vector-angle to Matrix

If I have an arbitrary vector and an angle of rotation around that 
vector, how can I convert that to a transformation matrix for a left-
handed coordinate system? Is there an easy/fast way?


Date: 03/19/98 at 14:34:30
From: Doctor Rob
Subject: Re: Vector-angle to Matrix

I would rotate the system of coordinates to make the z-axis the vector
of interest. Then I would convert to cylindrical coordinates, add the
angle in question to theta, convert back to rectangular coordinates, 
and rotate back to the original coordinate system.

Let the vector be a = (a1,a2,a3) and the angle be alpha. Then let u be 
the unit vector in the direction of a, so that:

   u = (u1,u2,u3) = a/sqrt(a1^2 + a2^2 + a3^2).

Then let v be a unit vector perpendicular to u, such as:

   v = (-a2,a1,0)/sqrt(a1^2+a2^2),

and w be a unit vector perpendicular to both, such as:

   w = u X v          (cross-product of u and v).

Then, to translate into the (u,v,w) coordinate system,

   [u]   [u1  u2  u3][x]     [x]
   [v] = [v1  v2  v3][y] = U [y]
   [w]   [w1  w2  w3][z]     [z].

Now:

   theta = arctan(w/v),
   r = sqrt[u^2 + v^2],
   v = r*cos(theta),
   w = r*sin(theta).

Now replace theta by theta - alpha to do the rotation.

   u' = u,
   r' = r,
   theta' = theta - alpha.

Expand the sine and cosine using the addition formulas.

   u' = u,

   v' = r'*cos(theta'),
      = r*cos(theta - alpha),
      = r*cos(theta)*cos(alpha) + r*sin(theta)*sin(alpha),
      = cos(alpha)*v + sin(alpha)*w.

   w' = r'*sin(theta'),
      = r*sin(theta - alpha),
      = -r*cos(theta)*sin(alpha) + r*sin(theta)*cos(alpha),
      = -sin(alpha)*v + cos(alpha)*w.

   [u']   [1       0           0    ][u]
   [v'] = [0  cos(alpha)  sin(alpha)][v],
   [w']   [0 -sin(alpha)  cos(alpha)][w]

            [u]
        = R [v]
            [w].

Now:

   [x']          [u']
   [y'] = U^(-1) [v'],
   [z']          [w']

                   [u]
        = U^(-1) R [v],
                   [w]

                     [x]
        = U^(-1) R U [y].
                     [z]

This means that the rotation matrix is given by U^(-1) R U, where U 
and R are defined above.

Is this a simple way? That's a matter of opinion.

-Doctor Rob, The Math Forum
Check out our web site! http://mathforum.org/dr.math/   
    
Associated Topics:
College Linear Algebra

Search the Dr. Math Library:


Find items containing (put spaces between keywords):
 
Click only once for faster results:

[ Choose "whole words" when searching for a word like age.]

all keywords, in any order at least one, that exact phrase
parts of words whole words

Submit your own question to Dr. Math

[Privacy Policy] [Terms of Use]

_____________________________________
Math Forum Home || Math Library || Quick Reference || Math Forum Search
_____________________________________

Ask Dr. MathTM
© 1994-2013 The Math Forum
http://mathforum.org/dr.math/