3D数学基础:图形和游戏开发第二版学习笔记——2

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

第八章

本章讨论的是三维旋转,其重点是如何描述三维旋转,用了几种表示方法并进行比较。前篇文章里我们分析过了描述一个旋转需要一个轴和一个角度,这包含了四个数据,如果我们假定轴从原点出发,那么我们只需要三个数据。

旋转矩阵

前文已经得到了旋转矩阵,需要注意的是方向余弦矩阵,其与旋转矩阵等价,这个说法其实更数学,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值