Games101
Overview
目标
光栅化 几何
基础知识 & 概念
数学:线性代数,微积分,统计 物理学:光学,力学
向量: 表示方向 & 长度
特点:具有平移不变性。 单位向量 (a hat): 长度为 1 的向量。 向量操作: 向量求和,向量点乘,向量叉乘 等、 向量默认是列向量。
求和
平行四边形法则 || 三角形法则
点乘(dot)
点乘: 算夹角 || 投影 满足交换律,结合律
a · b = a 长度*b 长度* cos (得到一个数字)
cos = a hat * b hat
点乘结果: 1: 方向完全相同 -1:方向完全相反 0: 方向垂直
对应的元素相乘,再加起来。
算夹角: 光照方向,视角方向等。 算投影: 根据平行四边形法则,算平行,垂直等相关向量。
b 向量投影在 a 向量
一般是列向量,可以把它转为横向量。
叉乘(cross)
得到另外一个向量:垂直于输入的两个向量。 C: C 要垂直于 A, C 也要垂直于 B, C 要垂直于 A 和 B 所在的平面。
c = a x b x sinα
叉乘不满足交换律,得加-号。
sin0 = 0
自己叉乘自己 = 0
a hat* b hat* sin
交互转弧度值: radiance = angle / 180 * Math.PI
右手定则: 螺旋定则 || 拇指食指中指定则 螺旋定则: 四指方向代表旋转方向,从 A 旋转到 B, 拇指代表 C 的方向。
判断左右,内外。
三角形光栅化: 是在三角形的里面还是外面? P: ABC AB * AP BC * BP CA * CP
三个方向都是一致的,就能保证是在一起的
矩阵
表示基础变换:移动,旋转,错切等
矩阵的乘积 (M * N)(N * P) = M * P
第二个矩阵的列数必须等于一个矩阵的行数,这样的乘 才有意义。
矩阵 乘 矩阵 矩阵的交换率基本不成立,但是分配率成立。
矩阵 乘 向量 (特殊场景 M * 1)
镜像
向量的乘积也可以写成矩阵的形式。
2D-Transformation
Scale, Reflection, Shear
旋转: 一般来说是以原点为中心,逆时针旋转。
找坐标的变换关系
以上变换都属于线性变换: x' = M x [矩阵*向量]。但是平移不属于,没办法用这个通用的公式。所以探究出了 齐次坐标。 所有的仿射变换都可以用齐次坐标来处理。
齐次坐标,2 维情况下,增加一个维度 点:x1,y1,1 向量:x1,y1,0
复杂的变换可以拆分成简单的变化。 变换的顺序很重要。因为矩阵不满足交换律。
矩阵相乘: 从右到左应用。 先旋转,后平移: T()R()M An(...A2(A1(X))
如果一个矩阵的逆 === 它的转置,则这个矩阵为正交矩阵。一般来说,求逆矩阵通常会比较耗费性能,但求转置矩阵非常简单。
View / Camera Transformation
- model
- view(angle)
- position
- look-at
- up
- projection
- perspective
- orthographic