四元数的背景知识
四元数是复数的拓展,常用于表示三维空间的旋转变换。常用的其他变换有旋转矩阵,欧拉角以及旋转向量等。因为其表示三维空间旋转变换既不像旋转矩阵一样具有冗余性,也不像欧拉角或者旋转向量一样存在奇异性,所以被广泛用于空间位姿的表示和运算。
四元数本身有如下定义和运算规则:
q=q0+q1i+q2j+q3k \boldsymbol{q} = q_0+q_1i+q_2j+q_3k q=q0+q1i+q2j+q3k
{
i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j \left\{ \begin{aligned} i^2 = j^2 = k^2 = -1 \\ ij = k, ji = -k \\ jk = i,kj = -i \\ ki = j, ik = -j \end{aligned} \right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j
对于四元数的四则运算,数乘,求逆和共轭,有如下规则:
qa±qb=[sa±sb,va±vb] \boldsymbol{q_a} ±\boldsymbol{q_b} = [s_a±s_b,\boldsymbol{v_a}±\boldsymbol{v_b}] qa±qb=[sa±sb,

本文介绍了四元数在表示三维空间旋转变换中的优势,并详细讲解了如何利用C++模板类构建四元数对象,包括四元数的定义、运算规则以及模板类的限制方法,如编译期静态断言。最后,展示了如何通过友元函数实现模板化的四元数乘法操作。

458

被折叠的 条评论
为什么被折叠?



