Rotating direction vector in $\mathbb{R}^n$

249 Views Asked by At

Given $n$-dimensional unit direction vectors $v_0 = (0, ..., 0, 1)$ and arbitrary $v_1$, how could I rotate a third direction vector $v_2$ by the difference of the orientation between $v_0$ and $v_1$?

In other words I want to apply a rotation on $v_2$ which sends $v_0$ to $v_1$, and fixes any vectors orthogonal to $v_0$ and $v_1$.

What is the simplest solution in $\mathbb{R}^n$?

1

There are 1 best solutions below

10
On BEST ANSWER

Your description of the rotation you seek is somewhat unclear, but it sounds like you're asking for the rotation that maps $v_0$ to $v_1$ via a rotation of plane spanned by $v_0$ and $v_1$, and fixes the orthogonal complement of this plane. You can describe this transformation explicitly as follows.

First, let us write $a=\langle v_1,v_0\rangle$, $b=\sqrt{1-a^2}$, and $w=\frac{v_1-av_0}{b}$. (If $a=\pm 1$ so $b=0$, then you can just let $w$ be any unit vector orthogonal to $v_0$.) Then $\{v_0,w\}$ is an orthonormal basis for the plane spanned by $v_0$ and $v_1$, and $v_1=av_0+bw$. With respect to this basis, you want the rotation of the plane which has matrix $\begin{pmatrix} a & -b \\ b & a\end{pmatrix}$, since you want to send $v_0$ to $av_0+bw$.

Given $v_2$, let $c=\langle v_2,v_0\rangle$ and $d=\langle v_2,w\rangle$. The projection of $v_2$ onto the plane of $v_0$ and $v_1$ is then $cv_0+dw$, so you want to apply the rotation matrix above to this projection and fix $v_2-cv_0+dw$, the part of $v_2$ that is orthogonal to the plane. Thus the rotation you seek sends $v_2$ to $(v_2-cv_0-dw)+(ac-bd)v_0+(ad+bc)w$.