Kabsch algorithm for units vector

135 Views Asked by At

I have two sets of unit 3D vectors. Those two sets are related by an unknown 3D rotation matrix. I want to estimate this 3D rotation matrix. As far as I read, Kabsch algorithm is great tool to find 3D rotation between two sets of 3D Points. However, it does not seem to work with vectors.

I have implemented it in MATLAB and test it with 3D points. Everything was perfect. it estimates the correct rotation matrix and an almost 0 translation vector(something at scale 1e-7). However, when I test it with unit vectors, it produces a rotation matrix around Z only and a translation vector with high scale which seems incorrect for me.

I suspect that there is a basic difference between a 3D point and a 3D vector that I did not take it in consideration.

What did I miss? Is it possible to use Kabsch algorithm with 3D vectors?

Edit:

My vectors are scale-less direction vectors from the same origin (both sets have the same origina which is 0,0,0).

Each vector represents infinity 3d points (I do not know where the actual point lays. However, after the rotation is applied, each pair of vectors should lays at the exact same ray so all the 3D points represented by a vector v1 should be identical to the 3D Points lays on v1'