## finding angle of rotation relating two vectors to a third

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?

 PhysOrg.com science news on PhysOrg.com >> Heat-related deaths in Manhattan projected to rise>> Dire outlook despite global warming 'pause': study>> Sea level influenced tropical climate during the last ice age
 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 $\mathbf{v_1}$ only has x and z components; that is, the the projection of $\mathbf{v_1}$ onto the x-y plane coincides with the x axis. Now, since the rotation is about the z axis, we just need to project $\mathbf{v_2}$ 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. Jason
 Jason - perfect. Thanks that's exactly what i needed. Had a feeling there would be a nice way to do it... Many Thanks, Paul