GPU编程是一件非常复杂的事情,在没有一定数学基础的情况下,学习起来十分困难,故本文将会从最基本的矩阵(matrix)开始介绍。
1. 什么是矩阵?
以上便是一个普通的矩阵,可以将其想象成一个矩形的网格,每个格子里放了一个数字,站在我们程序员的角度来看,它实质上就是一个m × n长度的二维数组。
既然是网络结构,就意味着它有行(row)列(column)之分。例如以上式子就是一个4 × 3的矩阵,它有四行三列。据此,我们可以给出矩阵的一般表达式,以3 × 2的矩阵为例,它可以写成:
我们可以使用 来表示这个元素在矩阵 M 的第 i 行、第 j 列。
2. 与向量联系起来!
大家一定都用过Unity中的Vector3吧,这实际就是一个三维向量,我们可以使用 来表示。通常,向量可以看成是一个 n × 1 的列矩阵(column matrix)或 1 × n 的行矩阵(row matrix),其中 n 对应了向量的维度。例如,向量 可以写成行矩阵:
或列矩阵:
如此看来,我们实际也可以用矩阵来表示一个向量,因此,向量也可以像矩阵一样参与矩阵运算,这在空间变换中将非常有用。