找回密码
 立即注册
查看: 426|回复: 0

四元数的坐标系转换

[复制链接]
发表于 2022-9-21 17:09 | 显示全部楼层 |阅读模式
本篇文章讲解了四元数的坐标系转换,如怎么把来自右手坐标系的四元数转换成Unity3D中左手坐标系的四元数。
注:这里讨论的是Y up的情况(Unity中是Y up),即


可以看到从图左到图右,z轴是取负的
开始推导,首先要知道四元数的定义,比如给出旋转 R_{右} :绕给定轴 u=(u_{1},u_{2},u_{3}) 旋转角度θ
这个旋转用四元数表示,写作 q=\left( cos(θ/2),sin(θ/2)u \right) ,即 q=\left( q_{1},q_{2},q_{3},q_{4}\right)  
在左手坐标系,这个旋转就被表示为 R_{左} :绕给定轴 u^{*}=(u_{1},u_{2},-u_{3}) 旋转角度-θ
这个旋转 R_{左} 可以写作: q_左=\left( cos(-θ/2), sin(-θ/2)*u_{1},-sin(-θ/2)*u_{2},sin(-θ/2)*u_{3}\right)
即: q_左=\left( cos(θ/2), -sin(θ/2)*u_{1},sin(θ/2)*u_{2},-sin(θ/2)*u_{3}\right)
则: q_左=\left( q_{1},-q_{2},q_{3},-q_{4}\right)  
其他X up和Z up也是类似,推导一下可出结果
需要注意的是,如果右手坐标系是X up或者Z up,那么做完上述过程得到q_{左}之后,还需要做一下到Y up的转换才能得到Unity中的正确四元数结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-22 21:35 , Processed in 0.092889 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表