Notifications
Article
关于旋转的那些事-基础复习(1)
Published 2 months ago
74
0
关于旋转的那些事-基础复习
1.动静态欧拉角:
静态->旋转轴静止不动,即Inspector 与tran.Rotate
动态-> 刚体本身为参考,即Space.Self
2.旋转的一些算法
• 欧拉旋转
○ 本质:
§ 是一系列的坐标旋转的组合,按照一定的顺序让每个轴旋转一定角度(意味着无法同时旋转)
§ 用xyz表示在xyz轴上的旋转角度,取值范围[0,360],一般用roll ptich yaw 表示这些分量的旋转值(世界坐标系)
○ 缺点:有严格的顺序要求,容易造成万向锁*(坐标轴重合),无法实现球面平滑插值
• 轴角旋转
○ 本质:
§ 用一个单位矢量定义的旋转角,加上标量表示的度数表示旋转。
○ 缺点:不能进行简单插值,而且不能直接施加于点或矢量,必须转换为矩阵或四元数
• 矩阵旋转
○ 本质:使用4x4矩阵表示绕任意轴旋转时的变换矩阵,乘以一个向量时,只改变方向,不改变大小。
○ 缺点:耗时
3.那么啥是复数?
• 公式:初中的时候学过低阶复数 z=a+bi a、b为实数/实部,i为虚数,其中i^2=-1,当a=0 b!=0时为纯虚数
○ 复数的模:√a^2+b^2
○ 共轭复数: z=a-bi ,实部相等,虚部互为相反数的复数
○ 复平面: 直角坐标系中,横轴取点a,纵轴取点b,过两点的平行于坐标轴的直线的焦点C表示复数,各点对应的复数的平面叫做复平面。
• 意义:由于复数无法开偶次方,因此数集再次扩充了一项虚数,实数定义为数轴上的点对应的数,复数为平面(复平面)上一个对应的点
• 应用:待补充
3.四元数旋转
四元数本质:高阶复数,四维空间
• 公式 Q=a+bi+cj+dk 也就是w+xi+yj+zk
○ 因此i^2=j^2=k^2=-1 ij=k ik=j kj=I
• 如何与一个三维向量建立联系?
○ q=((x,y,z),w)=(v,w) 其中v是向量,w是实数
• 四元数和轴角旋转的相似之处?
○ 四元数看起来像是轴角旋转的进化,因为也是使用一个Vector3表示转轴,一个角度分量表示旋转度,即(x,y,z,w) 其中
§ w=cos(θ/2)
§ x=ax*sin(θ/2)
§ y=ay*sin(θ/2)
§ z=az*sin(θ/2)
○ 但是四元数中的每个数都是经过处理过的轴和角,与轴角所描述的四元组不是一个空间下的东西,首先(ax,ay,az)是Vecotr3下的矢量,而θ是极坐标下的角度,如果只是简单的组合,并不能保证他们插值结果的稳定性,因为无法归一化。而四元数确是在一个统一的四维空间中,方便进行归一化插值,因此可以方便的得到轴角。
○ 相对于矩阵,四元数只要存储四个浮点数。
Tags:旋转
Joker
永远保持做游戏的初心 - Programmer
3
Comments