0

In a paper, the rotation matrix that maps a vector $g$ to another vector $e$ (assuming unit vectors) is written very neatly as (without any skew symmetric matrix operation):

$R = I_{3\times3} + 2eg^T - \frac{1}{1 + e^Tg}(e + g)(e + g)^T$

Using $g \times e$ as the rotation axis, this looks very similar to Calculate Rotation Matrix to align Vector $A$ to Vector $B$ in $3D$?, written as:

$R = I_{3\times3} + [g\times e]_\times + \frac{1}{1 + e^Tg}[g\times e]_\times^2$

with $[a]_\times$ is the $3\times3$ skew symmetric matrix form of vector $a$.

I tried these two formulas with Python and they gave the same answer. However, I'm struggling to derive one from another theoretically.

  • It is straightforward to check if both versions of $R$ agree: write them out using the components of the vectors $e$ and $g$ and compare the nine entries of the matrix you get in each case. – Kurt G. Mar 23 '23 at 14:01
  • There is more than one rotation matrix that maps a vector $g$ to another vector $e$, so it makes no sense to speak of "the" rotation matrix that does this. – joriki Mar 23 '23 at 16:44
  • It's not clear what you mean by "I tried these two formulas with Python and they gave the same answer." Did your Python program rotate $g$ to $e$? Did it write out the $9$ entries of the matrix for each matrix? What was the "answer"? As noted in the previous comment, merely rotating $g$ to $e$ does not show that two rotations are the same. You would have to also check the rotations using some other vector (not collinear with $g$) as input. (And a third independent vector if there is any question whether these are rotation matrices.) – David K Mar 23 '23 at 20:18

0 Answers0