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

Finding angle of rotation relating two vectors to a third

  1. May 8, 2012 #1


    User Avatar

    I have 2 vectors in 3d space, v1 and v2.
    I also have a vector representing as it happens the direction of the earth's magnetic field, called h.
    i believe that v1 and v2 are related in that v2 is some rotation around h of v1.
    i would like to find that angle of rotation.

    i can't just find the shortest arc (by using the dot and cross products for eg), as this will not be around h in general.

    To make matters worse, v1 and v2 wont necessarily be exactly on the same circle of rotation: just approximately on it. So really i'd like to find the angle of rotation around h that transforms v1 into v1', where v1' is the nearest point on that circle of rotation to v2, and THEN also find the length of the vector (gap) between v1' and v2.

    Any ideas?
  2. jcsd
  3. May 12, 2012 #2


    User Avatar
    Science Advisor
    Gold Member

    I would approach it this way. I would define an orthogonal Cartesian coordinate system, lettinng h be along the z direction. Then unit vectors of my three axes, in terms of your vectors, could be something like this:
    \mathbf{\hat{z}} = \frac{\mathbf{h}}{ |\mathbf{h}|}.
    \mathbf{\hat{y}} = \frac{\mathbf{h} \times \mathbf{v_1}}{|\mathbf{h} \times \mathbf{v_1}|}.
    \mathbf{\hat{x}} = \mathbf{\hat{y}} \times \mathbf{\hat{z}}.
    So that [itex]\mathbf{v_1}[/itex] only has x and z components; that is, the the projection of [itex]\mathbf{v_1}[/itex] onto the x-y plane coincides with the x axis.

    Now, since the rotation is about the z axis, we just need to project [itex]\mathbf{v_2}[/itex] onto the x-y plane (that is, find the x and y components) and determine the angle
    with repect to the x axis.

    I hope that helps.

  4. May 14, 2012 #3


    User Avatar

    Jason - perfect. Thanks that's exactly what i needed. Had a feeling there would be a nice way to do it...

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