所有产品

和记娱乐3D图形:矩阵与线性变换

  由于OpenGLES的进度再度搁浅,所以准备从再次学习3D图形的深层次的知识,这一篇主要讲的是如何使用矩阵表示旋转、缩放、投影、和记娱乐,镜像、切变,这些线性变换将会由浅入深,也算是为了后面的仿射变换做铺垫吧!接下来,我们一一看这些线性变换.

  日常开发过程中旋转是一种很常见的图形变换,现在我们就对2D环境下和3D环境下的图像变换进行讲解说明.

  然后物体旋转角度为θ = 3/π,在旋转当中经常被认为逆时针为正方向,顺时针为负方向,那么对于基向量p,q是怎么变化的呢?如下图所示.这里我直接用绘图工具了,图片粗糙请见谅.

  我们从图片中可以看到旋转后的新向量p1,q1的值(当然了,实际上是根据三角函数计计算出来的),然后通过这两个值我们就可以构造出如下通用旋转矩阵.通过下面的矩阵,我们是不是很熟悉呢?有没有仿射变换的赶脚.不要着急,我们慢慢看.

  在3D的环境下,我们讨论的不再是绕点旋转,而是绕轴旋转.虽然是绕轴旋转,我们也要定义出正负方向来.在左右坐标系中的情况是有所不同的,什么?不知道左右坐标系如何定义的?那么看下图所示.

  那么在我们的坐标系中如何判断出正负方向呢?比如我们在左手坐标系中需要使用的左手法则俩判断正负方向,而在右手坐标系中则正好相反.我们就拿在左手左边系为例,法则示意图如下所示.(左右手法则不过多解释,如果不懂请自行查看高中物理相关知识)

  上面我们了解完旋转方向了,接下来我们先看看三种特殊情况,分别绕x,y,z轴进行旋转.

  我们还是来看基向量的变化,首先对于3D中的基向量p,q,r由于是绕x轴进行旋转的,所以说基向量p是没有任何变化的,变化的只有q,r两个基向量,假设旋转的角度θ = 3/π,那么如下图所示.

  那么上面看完了三种特殊的旋转方式,接下来,我们就看一下在3D中绕任意轴旋转的情况.

  如图所示,如果向量v(粉色)绕轴向量n旋转得到向量v(粉色),我们直接如果直接观察的话是非常困难的.

  但是如果我们把向量v和向量v进行分解,然后把旋转的θ放在一个平面中来解决问题,这样,我们的旋转问题就转化为简单的2D问题了.如下图所示.

  上面基本我们把所有的向量解释了,现在已经知道的条件是向量v和旋转轴n以及旋转角度θ要计算的是向量v.(怎么跟计算题似的