1
$\begingroup$

I know how to use quaternions to rotate my coordinate system about an axis and how to chain those together. Since this is not too complicated I thought it would also be easy to go the other way around, but now my head is smoking and I still couldn't figure out the solution...


Here is my Problem: I have to describe the orientation of a right-handed coordinate system relative to the world coordinate system. The x- and z-axis of this coordinate system are given as vectors (which are orthogonal to each other and normalized).

How can I calculate the quaternion which describes this orientation?


Thank you!

1 Answers 1

1

You probably figured that out by yourself now, but for the sake not leaving questions here unanswered, I'll provide a solution nonetheless:

Given your orthonormal x- and z-axis vectors (I assume within the world coordinate system), you can easily construct the orthonormal basis (change) matrix $B=\{\vec{x}, \vec{x}\times\vec{z}, \vec{z}\}$. This one may basically be viewed directly as a rotation that can be transformed into a quaternion, although you may want to transpose/invert (it's the same for orthonormal matrices) $B$ first, as that yields a transformation from the world space to the new basis (see also Change of basis matrix to convert standard basis to another basis ).

Alternatively, you may go a more indirect way and define a world-space vector $\vec{v}$ (ideally with distinctive x-, y- and z-coordinates) that you express in the new basis (as $\vec{v}^*=B^{-1}\vec{v}$) and then compute the relative rotation between $\vec{v}$ and $\vec{v}^*$, assuming both as pure quaternions and computing $q=q_v^{-1}*q_{v^*}$ (as in this question on StackOverflow ).

  • 0
    B={X,X x Z, Z} above means [X Y X] where Y is the cross product of the X and Z vectors - for those of us not fluent in the notation.2018-10-12