第八章
本章讨论的是三维旋转,其重点是如何描述三维旋转,用了几种表示方法并进行比较。前篇文章里我们分析过了描述一个旋转需要一个轴和一个角度,这包含了四个数据,如果我们假定轴从原点出发,那么我们只需要三个数据。
旋转矩阵
前文已经得到了旋转矩阵,需要注意的是方向余弦矩阵,其与旋转矩阵等价,这个说法其实更数学,aijaijaij的值等于i,j坐标轴方向向量的点积。
优点: 1:可以直接使用
2:和图形API接口契合
3:方便运算(嵌套组合求逆)
缺点: 1:人类难以直接使用
2:使用了9个数据,有6度冗余,带来空间,格式等问题(如矩阵蠕变)
欧拉角
用三个正交的轴方向的旋转角度表示旋转。
优点: 1:人类理解容易
缺点: 1:万向节死锁
2:插值麻烦
轴+角 指数映射
前文已经提到,我们呢可以用一个单位向量nnn表示轴,一个θθθ,表示角度,由于nnn是单位向量,所以实际上它长度固定,用三个数据表示是冗余的,但是我们通过不能省去某个坐标,毕竟根据长度得到的需要判断正负,当然你可以选择某种方式去约定,当时这里有个更简单的方法:θnθnθn,因为n长度为1,我们可以分离出θθθ,这也就是指数映射,当然如果你学过李代数,你会有更深的理解。
四元数
四元数,也就是用(w,x,y,z)(w,x,y,z)(w,x,y,z)来表示旋转,它当然也存储了轴nnn和角度θθθ,不过存储的方式比较独特:
(w,v)=(w,x,y,z)=(cos(θ/2),sin(θ/2)n)=((cos(θ/2),sin(θ/2)nx,sin(θ/2)ny,sin(θ/2)nz)(w,v)=(w,x,y,z)=(cos(θ/2),sin(θ/2)n)=((cos(θ/2),sin(θ/2)n_x,sin(θ/2)n_y,sin(θ/2)n_z)(w,v)=(w,x,y,z)=(cos(θ/2),sin(θ/2)n)=((cos(θ/2),sin(θ/2)nx,sin(θ/2)n

本文详细比较了三维旋转的不同表示方法,包括旋转矩阵、欧拉角的易读性、轴+角指数映射的空间冗余、以及四元数的高效性和与复数的关系,强调了它们在图形处理中的优缺点和应用场景。
最低0.47元/天 解锁文章
824

被折叠的 条评论
为什么被折叠?



