Unity3d - 四元数(Quaternion)

四元数包含一个分量和一个三维分量,四元数Q可以记作:

Q=[w,(x,y,z)]

在3D数学中使用单位四元数来表示旋转,对于三维空间中旋转轴为n,旋转角度为a的旋转,如果用四元数表示,四个分量分别是:

w = cos(a/2)
x=sin(a/2)cos(Ax)
y=sin(a/2)cos(Ay)
z=sin(a/2)cos(Az)

其中cos(Ax)、cos(Ay)、cos(Az)分别为旋转轴的x,y,z分量。

在3D数学中,旋转还可以用欧拉角和矩阵表示,但是每一种表示都有各自的优缺点:

欧拉角矩阵四元数
旋转一个位置点不支持支持
增量旋转不支持支持,速度较慢
平滑插值支持不支持
内存占用3个数值16个数值
表达式是否唯一无数种组合唯一
问题万象锁矩阵蠕变

在Unity中,四元数使用Quaternion类来表示。

官方手册:https://docs.unity3d.com/ScriptReference/Quaternion.html

变量:

变量-
x四元数x的分量(除非对四元数有一定的了解,否则不建议直接更改)
y四元数y的分量(除非对四元数有一定的了解,否则不建议直接更改)
z四元数z的分量(除非对四元数有一定的了解,否则不建议直接更改)
w四元数w的分量(除非对四元数有一定的了解,否则不建议直接更改)
this[index]通过下标来访问分量
eulerAngles返回表示该旋转的欧拉角
identity返回同一象限的四元数,即该四元数表示没有旋转

函数列表:

函数-
Set设置Quaternion的x/y/z/w分量
ToAngleAxis将四元数转换为一个角-轴表示的旋转
SetFromToRotation设置一个四元数表示fromDirection到toDirection的旋转
SetLookRotation设置一个四元数表示朝向为forward,上方向为up的旋转
operator *连接两个旋转,该相乘操作的结果作用相当于依次用用两个旋转操作
Dot两个旋转点乘
AngleAxis根据旋转角和旋转轴创建一个四元数
FromToRotation生成一个四元数表示fromDirection到toDirection的旋转
LookRotation生成一个四元数表示朝向为forward,上方向为up的旋转
Slerp根据t值在四元数from和to之间进行球形插值
Lerp根据t值在四元数from和to之间进行插值,并将结果规范化
RotateTowards将旋转from变到旋转to
Inverse返回旋转的逆
Angel返回a和b两个旋转之间的夹角角度
Euler返回先沿z轴旋转z角度,然后沿x轴旋转x角度,最后沿y旋转y角度的旋转
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值