rustum 发表于 2022-6-29 10:08

Unity基础【唐老狮】(二)四元数

3D数学-四元数


[*]欧拉角的缺陷
同一旋转的表示不唯一
[*]万向节死锁
两个轴重合时,失去一维的调节能力


[*]四元数是什么

[*]四元数构成
超复数:实数+三个虚数单位标量+3维向量轴角对,n为轴向量,b为旋转角度

[*]Unity四元数
Quaternion
[*]初始化
new Quaternion(sin(b/2)x,sin(b/2)y,sin(b/2)z,cos(b/2))Quaternion.AngleAxis(角度,轴)

[*]角度四元数转换
Quaternion.Euler(x,y,z)Quaternion q; q.eulerAngles

四元数解决欧拉角缺陷

[*]四元数常用方法

[*]单位四元数:无旋转
Quaternion.identity

[*]插值运算
Quaternion.Slerp实现匀/变速转动

[*]向量转换四元数
Quaternion.LookRotation(Vector3 n)

[*]练习
c#拓展方法匀变速运镜


[*]四元数计算

[*]四元数相乘
旋转量叠加

[*]四元数乘向量
旋转向量

[*]练习

[*]模拟飞机发射不同类型的子弹
按数字键切换发射模式不同模式实现方法利用四元数相乘旋转设置子弹实例化的方向

[*]摄像机跟随效果

[*]需求
摄像机在人物斜后方,通过角度控制斜率通过鼠标滚轮控制摄像机距离人物的距离摄像机看向人物头顶一个位置Vector3.Lerp实现相机跟随人物Quaternion.Slerp实现摄像机看向人物

[*]实现
旋转方向:轴朝向自己,顺时针为正角度叠加,旋转向量,点的平移匀/变速的实现




页: [1]
查看完整版本: Unity基础【唐老狮】(二)四元数