第四章 学习Shader所需要的数学基础

一.坐标系与矢量

1.左手座标系与右手座标系

左手座标系使用左手法则,即旋转时顺时针旋转。
右手坐标系使用右手法则,即旋转时逆时针旋转。

Unity使用左手坐标系。这也竟未着在模型空间,一个物体的右侧,上侧,前侧分别对应x轴,y轴,z轴。
但在观察空间,Unity使用右手坐标系。观察空间,就是指以摄像机为原点的坐标系。

二.坐标系与矢量

1.基本概念
矢量相减是减数指向被减数。
如果我们要计算b相对于a的位移,可以用b减去a


2.矢量的点积
    2.1 公式
a*b = ax*bx+ay*by+az*bz;
    2.2 几何意义
意义1:
a*b即 b在a上的投影。通过点积结果的符号,可以判断两条直线的关系。

意义2
a*b = |a||b|*cos


3.矢量的叉乘
    3.1 公式
aXb = (aybz-azby,azbx-axbz,axby-aybx)
注意叉乘不满足交换率和结合率。

    3.2几何意义:
1:|axb|=|a||b|sin
2:计算一个垂直于平面,三角形的矢量,也可以用于判断 三角面片的朝向。

三.矩阵
3.1 矩阵乘法
一个rxn矩阵A和一个nxc矩阵相乘,结果是一个rxc矩阵。
注意第一个矩阵的列数必须和第二个矩阵的行数相同,否则无法相乘。



3.2 矩阵乘法性质
    3.2.1 不满足交换率,向量叉乘满足交换率
    3.2.2 满足结合率,向量叉乘不满足结合率

3.3 方块矩阵
方块矩阵,简称方阵,指行和列数目相等的矩阵。
一个矩阵除了对角元素外的所有元素都为0,那么这个矩阵就叫 对角矩阵

3.4 单位矩阵
对角数字都是1的对角矩阵,是 单位矩阵
单位矩阵与任何矩阵相乘还是原来的矩阵,相当于标量中的数字1.

3.5 转置矩阵(右上角T表示 )
将原矩阵翻转一下,即原矩阵的第i行变成 了第j列,第j行变成了第j列。

3.6 逆矩阵(右上角-1)
必须是方阵。
方阵M与逆矩阵M-1相乘,那么结果将是一个单位矩阵。
如果存在逆矩阵,我们就说这个矩阵是可逆的,或者非奇异的。

几何意义:
如果用M矩阵进行了一次变换同,再使用逆矩阵进行另外一次变换,会得到原来 的矢量。

3.7 正交矩阵
方阵M和它的矩阵乘积是单位矩阵,则说这个矩阵是 正交矩阵,即逆矩阵与转置矩阵相等。
意义:
三维变换中经常使用逆矩阵求解反向变换。逆矩阵求解计算量大,而转置矩阵却非常容易求解。

3.8 行矩阵与列矩阵
在unity中,常规做法是把矢量放在矩阵的右铡,即把矢量转换成列矩阵来进行计算。



四.矩阵几何意义:变换
1.齐次坐标
3X3矩阵不能表示平衡操作,所以将其扩展到4X4矩阵,这就是齐次坐标。

五.坐标空间
模型空间->世界空间->观察空间(摄像机空间)->裁剪空间(视锥体)->屏幕空间



你可能感兴趣的:(C++,Shader,Unity,Shader,入门精要笔记,GPU,CG,语言)