当前位置:网站首页>Quaternion multiplication
Quaternion multiplication
2022-04-23 06:39:00 【mightbxg】
Quaternion definition :
q = q w + q x i + q y j + q z k = [ q w q x q y q z ] \bold{q} = q_w+q_xi+q_yj+q_zk = \begin{bmatrix} q_w\\ q_x\\ q_y\\ q_z \end{bmatrix} q=qw+qxi+qyj+qzk=⎣⎢⎢⎡qwqxqyqz⎦⎥⎥⎤
stay Hamilton In representation :
i 2 = j 2 = k 2 = i j k = − 1 i j = − j i = k , j k = − k j = i , k i = − i k = j i^2=j^2=k^2=ijk=-1 \\ ij=-ji=k,\ jk=-kj=i,\ ki=-ik=j i2=j2=k2=ijk=−1ij=−ji=k, jk=−kj=i, ki=−ik=j
stay JPL In representation , − i j = j i = k -ij=ji=k −ij=ji=k,Eigen3 Is used in Hamilton notation , So the following formulas are used Hamilton notation .
Multiply quaternions :
p ⊗ q = [ p w q w − p x q x − p y q y − p z q z p w q x + p x q w + p y q z − p z q y p w q y − p x q z + p y q w + p z q x p w q z + p x q y − p y q x + p z q w ] \bold{p}\otimes\bold{q}= \begin{bmatrix} p_wq_w-p_xq_x-p_yq_y-p_zq_z\\ p_wq_x+p_xq_w+p_yq_z-p_zq_y\\ p_wq_y-p_xq_z+p_yq_w+p_zq_x\\ p_wq_z+p_xq_y-p_yq_x+p_zq_w \end{bmatrix} p⊗q=⎣⎢⎢⎡pwqw−pxqx−pyqy−pzqzpwqx+pxqw+pyqz−pzqypwqy−pxqz+pyqw+pzqxpwqz+pxqy−pyqx+pzqw⎦⎥⎥⎤
Four yuan number q \bold{q} q For vectors v \bold{v} v Rotate , First, write the vector in quaternion form ( The real part is 0):
p = [ 0 , x , y , z ] T = [ 0 , v ] T \bold{p} = [0,x,y,z]^T = [0, \bold{v}]^T p=[0,x,y,z]T=[0,v]T
And then calculate :
p ′ = q p q − 1 \bold{p}' = \bold{qpq}^{-1} p′=qpq−1
Can verify p ′ \bold{p}' p′ So is the real part 0, Take the imaginary part as the vector after rotation v ′ \bold{v}' v′:
v ′ = [ ( q w 2 + q x 2 − q y 2 − q z 2 ) x + 2 ( q x q y − q w q z ) y + 2 ( q w q y + q x q z ) z 2 ( q w q z + q x q y ) x + ( q w 2 − q x 2 + q y 2 − q z 2 ) y + 2 ( q y q z − q w q x ) z 2 ( q x q z − q w q y ) x + 2 ( q w q x + q y q z ) y + ( q w 2 − q x 2 − q y 2 + q z 2 ) z ] \bold{v}'=\begin{bmatrix} (q_w^2+q_x^2-q_y^2-q_z^2)x+2(q_xq_y-q_wq_z)y+2(q_wq_y+q_xq_z)z\\ 2(q_wq_z+q_xq_y)x+(q_w^2-q_x^2+q_y^2-q_z^2)y+2(q_yq_z-q_wq_x)z\\ 2(q_xq_z-q_wq_y)x+2(q_wq_x+q_yq_z)y+(q_w^2-q_x^2-q_y^2+q_z^2)z \end{bmatrix} v′=⎣⎡(qw2+qx2−qy2−qz2)x+2(qxqy−qwqz)y+2(qwqy+qxqz)z2(qwqz+qxqy)x+(qw2−qx2+qy2−qz2)y+2(qyqz−qwqx)z2(qxqz−qwqy)x+2(qwqx+qyqz)y+(qw2−qx2−qy2+qz2)z⎦⎤
版权声明
本文为[mightbxg]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230546583210.html
边栏推荐
- 1007 go running (hdu6808) in the fourth game of 2020 Hangzhou Electric Multi school competition
- Robocode教程5——Enemy类
- 实现一个计算m~n(m<n)之间所有整数的和的简单函数
- Common shortcut keys of IDE
- C#【文件操作篇】按行读取txt文本
- Excel打开超大csv格式数据
- [UDS unified diagnosis service] i. diagnosis overview (2) - main diagnosis protocols (K-line and can)
- 日志
- NVIDIA Jetson: GStreamer 和 openMAX(gst-omx) 插件
- 【踩坑】Win11 WSL2 中 meld 无法正常使用问题修复
猜你喜欢
随机推荐
selenium+PhantomJS破解滑动验证2
grub boot. S code analysis
Latex configuration and use
Flask操作多个数据库
Class inheritance and derivation
安全授信
生成验证码
共用数据的保护
Matching between class template with default template argument and template parameter
C#中?的这种形式
实现一个计算m~n(m<n)之间所有整数的和的简单函数
Swagger2 generates API documents
copy constructor
基于Sentinel+Nacos 对Feign Client 动态添加默认熔断规则
修改注册表的值
【UDS统一诊断服务】二、网络层协议(1)— 网络层概述与功能
函数的调用过程
爬取手游网站游戏详情和评论(MQ+多线程)
Uniapp encapsulates request
Initialization of classes and objects (constructors and destructors)