OpenGL-17-矩阵

2020-08-05  本文已影响0人  宇宙那么大丶

一、认识矩阵

向量: 请看上一篇文章向量
矩阵:我们来看下百度给的定义:

方阵:⾏数和列数相同的矩阵。例如2 * 2、3 * 3、4 * 4矩阵。

行矩阵、列矩阵:根据不同编程定义不同,是一个优先顺序

单元矩阵:对角线元素都为1,其他元素都为0的矩阵。也可以看做是1。

矩阵在OpenGL中的初始化方法:

//三维矩阵声明
typedef float M3DMatrix33f[9];

//四维矩阵的声明
typedef float M3DMatrix44f[16];

单元矩阵初始化的三种方法:

//单元矩阵初始化⽅式1
GLFloat m[] = {
  1,0,0,0, //X Column
  0,1,0,0, //Y Column
  0,0,1,0, //Z Column
  0,0,0,1 // Translation
}


// 单元矩阵初始化⽅式 2
M3DMatrix44f m = {
  1,0,0,0, //X Column
  0,1,0,0, //Y Column
  0,0,1,0, //Z Column
  0,0,0,1 // Translation
}


//单元矩阵初始化⽅式3
void m3dLoadIdentity44f(M3DMatrix44f m);

⼀个4*4矩阵是如何在3D空间中表示⼀个位置和⽅向的?

二、矩阵的使用

1、矩阵转置

沿着对角线翻折,使 行矩阵变列矩阵 或者 列矩阵变行矩阵。

2、标量 x 矩阵

3、向量 x 矩阵

如此,我们可以得出:

4、矩阵 x 矩阵

5、OpenGL中的矩阵左乘

线性代数中,矩阵相乘坐标计算是 从左向右的顺序(右乘),如下:
变换后顶点向量 = V_local * M_model * M_view * M_pro (MVP)
变换后顶点向量 = 顶点 x 模型矩阵 x 观察矩阵 x 投影矩阵

图片.png

但是,在OpenGL中是相反的顺序(左乘),如下:
变换顶点向量 = M_pro * M_view * M_model * V_local (PVM)
变换顶点向量 = 投影矩阵 x 视图变换矩阵 x 模型矩阵 x 顶点

图片.png 图片.png

我们代码段中矩阵的先手顺序:


图片.png
上一篇 下一篇

猜你喜欢

热点阅读