记录四元数
记录四元数
理理在24年7月份,我在学Unity时碰到了名为“四元数”的数学知识,把我难坏了:不是,这四个数分别是什么意思?于是11月的我,希望能穿越到7月份帮自己解答疑惑。
为什么要用四元数?
表示空间的东西,最常用的就是欧拉角了。它以xyz三轴的旋转来表示,生活中很常用。但是它有些问题: 一是“万向节死锁”。具体可以去b站找个视频去看,描述起来太抽象,简单说就是轴面在旋转后可能会重合,如x轴面与z轴面重合,这些特殊情况下可能会乱套。 而是“不唯一性”。这个好理解,比如绕y轴旋转360度和720度是一样的,这就使我们在表现一个状态时、欧拉角不具有唯一性。四元数是什么?
这里不用纠结于复杂的数学定义(因为我也不会),只谈它是什么:它表示的是,立体几何绕空间任意轴旋转一定读书——任意轴,不一定是xyz轴了,这就很方便。它解决了以上两个问题,引入第四个参数w。 标准格式是(w,x,y,z),那么这四个参数分别是什么意思呢? 假设一个物体,绕向量(x,y,z)旋转a度,那么它的四元数是:(cos a/2,sin a/2 * x,sin a/2 * y,sin a/2 * z)。完结(我当时找好几天我都不知道这四个数是什么意思)。 在我们Unity中,这样去表示一个四元数(Quaternion)太麻烦、太抽象了,于是Unity封装了很好的方法:Quaternion.AngleAxis(float angle,Vector3 vector3) 括号里只需要两个参数,一个是角度、一个是我们要绕着旋转的轴。 评论
匿名评论隐私政策