OpenGL ES 的很多教程里都会有这样一个例子来讲解纹理:将一张图片作为纹理显示在屏幕上。
因为纹理坐标和实际屏幕显示的坐标不一样,把图片渲染在屏幕上后,图片是上下颠倒的。
一个解决方法是对当前的顶点坐标,乘以绕 z 轴旋转180度的矩阵,这样图片就能正确显示了。
那么如何理解这个旋转矩阵呢?
影响我们理解这个矩阵的第一个问题是:
为什么这个矩阵是 4x4 的? 而且我们发现旋转,缩放、平移等变换矩阵都是 4x4 的。
在直观上的认知里,表达一个三维空间的坐标用 x,y,z 就足够了,那在三维空间里进行矩阵变换,用 3x3 的矩阵就够了,为什么需要 4x4 呢?
为了回答这个问题,下面我们先在几何意义上理解**向量和矩阵之间的关系,然后通过推导旋转矩阵**和平移矩阵,一步步来解开这个疑惑。
向量和矩阵
在几何平面上,我们可以把平面上任意一点
,当作与原点组成的一个 向量
来理解。
如图 ,A 点可以表示成向量 ;在 x 轴和 y 轴上各有 i 点(1, 0)和 j 点(0,1),同样的,