3D数学几个概念的介绍

前言


如今,在像Unity3D, Unreal等优秀的3D引擎中,开发者已经不再需要关心大多数数学算法和公式,但是基础的数学知识还是非常有必要了解的。在这里,介绍了电脑3D技术开发中最基础的一些数学概念。希望可以解答一些初学者的疑惑。


1. 坐标系

相信这是一个所有上过初中的人都了解的概念。XY轴组成直角坐标系,形成一个二维的空间。现在我们谈的是三维空间,那么再加一个Z轴,XYZ三轴互相垂直,形成一个三维的空间。在这个坐标系中的任意一点,都会有(X, Y, Z)三个值对应,如(0, 0, 0)就是坐标系的原点。坐标系的一般概念就到此为止了。

注:以后的所有概念都是在假想的一个三维坐标系(空间)中描述。坐标系这个词一般也用“空间”代替。

1. 标量与向量

这里的标量是指只有大小的量,如有一点P,它的位置是(10, 30, 40)。

这里的向量是指有大小方向的量,如有向量a, 它的值是(10, 30, 40)。

疑惑之处:上述的P跟a一眼看上去好像是一样的,都是(10, 30, 40),这是怎么回事?其实这只是它们的表现,关键是它们背后的意义。点P不用多说,三个数字是指位置。而向量a在加法时是指,让点P的X轴位置移动+10, Y轴位置移动+30, Z轴位置移动+40,形成新的点P0。就是这样,向量是用来做运算的,单独存在没有意义,当然向量与向量之间也可以运算,以得到新的向量。在3D技术中,向量的运算将是重点!

2. 齐次矩阵

在3D空间中,将一个标量(如点P的位置)或向量进行旋转,缩放和平移统称为变换(transform)。然而旋转与缩放自成体系,叫仿射变换,可以用同一个3x3的矩阵表示,也就是说,点P 乘以一个3x3的矩阵就是可以得到旋转和缩放后的点P0。但是,平移要另外与一个平移向量再做一次加法或减法运算。数学家们找到了一个方法,把平移向量放进仿射矩阵的最下面一行。那么一个3x3的矩阵添加一行后,就成了4x3的矩阵了。为了让它成整齐的正方形,就在这个矩阵的最后加了一列,这列数字都为1,不会影响计算结果。现在这个矩阵成了4x4,又整齐了,就叫齐次矩阵了。不过点P也要同样加上一列成为(X, Y, Z, 1),这样才能与4x4的矩阵进行运算。

3. 矩阵的逆,  单位矩阵

矩阵的逆:矩阵只有乘法,没有除法。A矩阵想除以B矩阵,只能先计算出B的逆矩阵,然后AxB(逆)就可以了。

单位矩阵:矩阵世界中没有 1 这个数字,只能用单位矩阵表示 1。矩阵乘以自己的逆就等于单位矩阵,其实就是自己除以自已等于1。

你可能感兴趣的:(3D数学几个概念的介绍)