0
点赞
收藏
分享

微信扫一扫

[3D数学基础:图形与游戏开发]读书笔记 第10章(3D中方位与角位移)未完待续

王老师说 2022-03-12 阅读 25

第10章 3D中方位与角位移

3D中有很多方法来描述方位和角位移,本章将主要讲解的是,矩阵、欧拉角、四元数,需要了解到其优缺点、工作原理,在不同情况选择最合适的描述,转换等

矩阵形式

  • 优点
    利用矩阵可以在物体和惯性坐标系间旋转向量
    矩阵形式被图形API所使用
    多角位移连接:知道A关于B的方位和B关于C的方位,利用矩阵可以知道A关于C的方位
    矩阵的逆,撤销操作,旋转矩阵是正交的,所以可以很方便的求得逆矩阵
  • 缺点
    矩阵相对于欧拉角的三个数占用内存很大
    不直观
    矩阵可能是病态的 矩阵存在六阶冗余,矩阵描述方位,行必须为单位向量并且互相垂直

欧拉角

  • 书中称为heading-pitch-bank分别代表y-x-z,正方形由原点沿着方向看,逆时针为正方向
  • 缺点:
    给定方位,表达式不唯一,具体表现为heading转360方位没有改变,数值却改变了
    万向锁 先heading=45、pitch=90的结果和pitch=90、bank=45的结果相同(这个可以自己拿个东西试试),定义:角度为正负90的第二次旋转,使得第一次和第三次旋转轴相同
    两个角度求插值特别困难,具体情况如,在没有进行欧拉角限制时,A=720,B=45,从A->B其实真实插值为45,但是直接插值就会旋转2圈多,但是限制欧拉角依然会产生问题,如下图,A和B只相差了20,但是A->B会绕大圈而不是小圈,解决这个问题可以将插值的角度限制在-180~+180

四元数

  • 四元数可以记为:[w, v],展开为[w, (x, y, z)]
  • 四元数与复数 记为:a + bi a为实部,b为虚部,并且满足一下计算
  • 共轭复数 a + bia - bi 互为共轭复数
  • 复数的模

复数在2D平面上表现

首先认为在存在一个实轴和一个虚轴,具体如下

四元数

  • 3个虚部 i、j、k
  • 四元数任意角位移都有2个四元数表示,他们互为负,所以也存在2个单位四元数
  • 四元数的乘法也就是叉乘和上面乘法一样
  • 四元数的逆 就是其共轭复数除以他的模

四元数进行旋转

  • 四元数的差 利用四元数的乘和逆,可以求得四元数的差,差定义为从一个方位到另一个方位的角位移

四元数的点乘

四元数点乘公式:[w1, v1]·[w2, v2] = w1w2 +v1v2,其绝对值越大代表2个角位移越相似

四元数的对数、指数和标量的乘法


举报

相关推荐

0 条评论