Quaternion between 2 3D planes

3.1k Views Asked by At

I have 2 vectors, U1 and V1 (from origin) in 3D space, together forming a plane P1. The vectors then both changes to U2 and V2 (still from origin) forming a new plane P2. Is there there a way to obtain the quaternion representing the rotation between P1 and P2?

1

There are 1 best solutions below

1
On BEST ANSWER

I'll just post the full answer thanks to Shiyu in the comments. I'm an engineer and programmer, so the writing is probably not the way a mathematician would want to read it.

N1 = U1.cross(V1)
N2 = U2.cross(V2)
N1.normalize(), N2.normalize()
Vector M = N1+N2
M.normalize()
Vector axis = M.cross(N2)
angle = M.dot(N2)
Quaternion q(w=angle, x=axis.x, y=axis.y, z=axis)
q.normalize()