问答媒体

 找回密码
 立即注册
快捷导航
搜索
热搜: 活动 交友 discuz
查看: 107|回复: 1

四元数的坐标系转换

[复制链接]

3

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2022-9-20 07:53:04 | 显示全部楼层 |阅读模式
本篇文章讲解了四元数的坐标系转换,如怎么把来自右手坐标系的四元数转换成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中的正确四元数结果
回复

使用道具 举报

0

主题

6

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2025-2-25 18:13:36 | 显示全部楼层
没人回帖。。。我来个吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver| 手机版| 小黑屋| 问答媒体

GMT+8, 2025-7-13 07:24 , Processed in 0.106006 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

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