《视觉SLAM十四讲》学习笔记-四元数旋转后的点实部为0的证明

本文详细介绍了四元数的基本概念及其在三维空间中表示旋转的应用。通过数学公式展示了四元数的运算规则、共轭、模长等特性,并推导了如何使用四元数进行点的旋转。

证明的过程会比较繁琐。

首先看定义。假设两个四元数:

q⃗ a=[sa,v⃗ a]=sa+xai+yaj+zakq→a=[sa,v→a]=sa+xai+yaj+zak

q⃗ b=[sb,v⃗ b]=sb+xbi+ybj+zbkq→b=[sb,v→b]=sb+xbi+ybj+zbk

乘法定义为:

q⃗ aq⃗ b=[sasbv⃗ av⃗ b,sav⃗ b+sbv⃗ b+v⃗ a×v⃗ b]q→aq→b=[sasb−v→a⊤v→b,sav→b+sbv→b+v→a×v→b]

其中, ××符号表示向量外积。

共轭

q⃗ a=[sa,v⃗ a]=sa(xai+yaj+zak)q→a∗=[sa,−v→a]=sa−(xai+yaj+zak)

则:

q⃗ aq⃗ a=[sasbv⃗ a(v⃗ a),sa(v⃗ a)+sav⃗ a+v⃗ a×(v⃗ a)]=[s2a+v⃗ av⃗ a,0⃗ ]q→aq→a∗=[sasb−v→a⊤(−v→a),sa(−v→a)+sav→a+v→a×(−v→a)]=[sa2+v→a⊤v→a,0→]

这是因为:

v⃗ a×(v⃗ a)=ixaxajyayakzaza=[ya(za)za(ya)]i+[xa(za)za(xa)](j)+[xa(ya)ya(xa)]k=0i+0j+0k=0v→a×(−v→a)=[ijkxayaza−xa−ya−za]=[ya(−za)−za(−ya)]i+[xa(−za)−za(−xa)](−j)+[xa(−ya)−ya(−xa)]k=0∗i+0∗j+0∗k=0

模长

q⃗ a=s2a+x2a+y2a+z2a‖q→a‖=sa2+xa2+ya2+za2


q⃗ 1=q⃗ /q⃗ 2q→−1=q→∗/‖q→‖2

计算q⃗ q⃗ 1q→q→−1

q⃗ q⃗ 1=q⃗ q⃗ /q⃗ 2=q⃗ q⃗ q⃗ 2=[sa,a⃗ ][sa,a⃗ ]q⃗ 2=[sasav⃗ a(v⃗ a),sav⃗ a+sav⃗ a+v⃗ a×(v⃗ a)]=sasa+v⃗ av⃗ as2a+x2a+y2a+z2a=1q→q→−1=q→q→∗/‖q→‖2=q→q→∗‖q→‖2=[sa,a→][sa,−a→]‖q→‖2=[sasa−v→a⊤(−v→a),−sav→a+sav→a+v→a×(−v→a)]=sasa+v→a⊤v→asa2+xa2+ya2+za2=1

假设点坐标为p⃗ =[0,x,y,z]=[0,v⃗ ]p→=[0,x,y,z]=[0,v→] ([x,y,z]3[x,y,z]∈R3), 旋转轴及角度为n⃗ ,θn→,θ,其中 n⃗ =[nx,ny,nz]n→=[nx,ny,nz]

旋转用四元数表示q⃗ =[cosθ2,n⃗ sinθ2]q→=[cos⁡θ2,n→sin⁡θ2].
由上述定义,可知:

q⃗ 1=q⃗ /q⃗ 2q⃗ =[cosθ2,n⃗ sinθ2]q⃗ 2=cos2θ2+sin2θ2(n2x+n2y+n2z)=1q→−1=q→∗/‖q→‖2q→∗=[cos⁡θ2,−n→sin⁡θ2]‖q→‖2=cos2⁡θ2+sin2⁡θ2(nx2+ny2+nz2)=1

旋转后的点p⃗ p→′可计算为:

p⃗ =q⃗ p⃗ q⃗ 1=[cosθ2,n⃗ sinθ2][0,v⃗ ]q⃗ 1=[sinθ2n⃗ v⃗ ,cosθ2v⃗ +sinθ2n⃗ ×v⃗ ][cosθ2,n⃗ sinθ2]=[sinθ2cosθ2n⃗ v⃗ +[cosθ2n⃗ ×v⃗ ]n⃗ sinθ2,]=[sinθ2cosθ2n⃗ v⃗ +sinθ2cosθ2v⃗ n⃗ +(sinθ2)2(n⃗ ×v⃗ )n⃗ ,]=[(sinθ2)2(n⃗ ×v⃗ )n⃗ ,]p→′=q→p→q→−1=[cos⁡θ2,n→sin⁡θ2][0,v→]q→−1=[−sin⁡θ2n→⊤v→,cos⁡θ2v→+sin⁡θ2n→×v→][cos⁡θ2,−n→sin⁡θ2]=[−sin⁡θ2cos⁡θ2n→⊤v→+[cos⁡θ2n→×v→]⊤n→sin⁡θ2,⋯]=[−sin⁡θ2cos⁡θ2n→⊤v→+sin⁡θ2cos⁡θ2v→⊤n→+(sin⁡θ2)2(n→×v→)⊤n→,⋯]=[(sin⁡θ2)2(n→×v→)⊤n→,⋯]

因为:

(v⃗ ×n⃗ )n⃗ =inxxjnyyknzzn⃗ =[(nyznzy)i(nxznzx)j+(nxynyx)k].[nx,ny,nz]=[(nyznzy),(nxznzx),(nxynyx)].[nx,ny,nz]=nxnyznxnzynxnyz+nynzx+nxnzynznyx=0(v→⊤×n→)n→=[ijknxnynzxyz]n→=[(nyz−nzy)i−(nxz−nzx)j+(nxy−nyx)k].∗[nx,ny,nz]=[(nyz−nzy),−(nxz−nzx),(nxy−nyx)].∗[nx,ny,nz]=nxnyz−nxnzy−nxnyz+nynzx+nxnzy−nznyx=0

所以p⃗ =q⃗ p⃗ q⃗ 1p→′=q→p→q→−1实部为0.

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值