C++模版类实例:四元数运算

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

四元数的背景知识

四元数是复数的拓展,常用于表示三维空间的旋转变换。常用的其他变换有旋转矩阵,欧拉角以及旋转向量等。因为其表示三维空间旋转变换既不像旋转矩阵一样具有冗余性,也不像欧拉角或者旋转向量一样存在奇异性,所以被广泛用于空间位姿的表示和运算。

四元数本身有如下定义和运算规则:
q = q 0 + q 1 i + q 2 j + q 3 k \boldsymbol{q} = q_0+q_1i+q_2j+q_3k q=q0+q1i+q2j+q3k
{ i 2 = j 2 = k 2 = − 1 i j = k , j i = − k j k = i , k j = − i k i = j , i k = − 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

对于四元数的四则运算,数乘,求逆和共轭,有如下规则:

q a ± q b = [ s a ± s b , v a ± v b ] \boldsymbol{q_a} ±\boldsymbol{q_b} = [s_a±s_b,\boldsymbol{v_a}±\boldsymbol{v_b}] qa±q

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值