向量 Vectors
- 有大小, 有方向
- 常写作 a 或者 a (加粗字母)
- 或者使用 AB=B−A 表示从起始点到目标点的向量
- 不关心绝对的开始和结束位置
- 向量长度用 ∣∣a∣∣ 表示
- 单位向量
- 向量长度为 1
- 用 a^ 表示, 常用 a^=∣∣a∣∣a 获得单位向量
- 可以用来只表示方向
向量求和
几何方法
平行四边形法则: 两个向量合成时,以表示这两个向量的线段为邻边作平行四边形,这个平行四边形的对角线就表示合向量的大小和方向
三角形法则: 两个向量合成时, 将向量首尾相接, 从第一个向量的头指向第二个向量的尾的向量即是和向量, 即 AB+BC=AC
代数方法
对应坐标相加
向量也常会使用分解到(笛卡尔坐标系)x 轴和 y 轴的两个向量的和表示, 即 A=mX+nY
- 图形学中, 一般使用列向量来表示向量, 即 A=[xy]
- 这样表示可以更方便的计算向量的长度, 即 ∣∣A∣∣=n2+m2
向量乘法
点乘
- a⋅b=∣∣a∣∣⋅∣∣b∣∣⋅cosθ
- cosθ=∣∣a∣∣⋅∣∣b∣∣a⋅b
- cosθ=a^⋅b^
- 坐标系上的计算
- 2D
- 3D
性质
- 交换律 a⋅b=b⋅a
- 结合律 a⋅(b+c)=a⋅b+a⋅c
- 分配率 (ka)⋅b=a⋅(kb)=k(a⋅b)
图形学中应用
- 常用作找两个方向的夹角
- 常用作计算一个向量在另一个向量上的投影
- 分解向量
二维分解: p=(p⋅u^)u^+(p⋅v^)v^
三维分解: p=(p⋅u^)u^+(p⋅v^)v^+(p⋅w^)w^
- 判断两个向量有多接近
- 判断两个向量是否朝向同一个方向 -> 点积 > 0 或者 < 0
叉乘
- 两向量叉乘的积是另一个向量
- 叉积同时垂直与两个向量
- 方向取决于右手(螺旋)定则
- 可用作构建空间直角坐标系
- x×y=+z
- y×x=−z
- y×z=+x
- z×y=−x
- z×x=+y
- x×z=−y
性质
- a×b=−b×a
- a×a=0
- a×(b+b)=a×b+a×c
- a×(kb)=k(a×b)
图形学中的应用
- 判断左右:
左侧叉积为正, 右侧叉积为负
- 判断内外:
三角形三个顶点为ABC, 点为 P, 依次计算 AB×AP,BC×BP,CA×CP, 若各个叉积方向相同, 则点 P 在三角形 ABC 内, 有任意叉积不同方向, 则点 P 在三角形 ABC 外
矩阵
定义: m 行 n 列的一系列数
⎣⎢⎡150324⎦⎥⎤
矩阵和数字相乘, 结果为该数字和矩阵的每一个元素相乘组成的新矩阵
乘法
可乘 = (M x N) (N x P) = (M x P), 其他不可乘
叉乘算法: A x B = R, R[m][n]的值为: A 的第 m 行,与 B 的 第 n 列所有元素依次相乘再求和
性质
- 不符合交换律: AB ≠ BA
- 符合结合律和分配率
- (AB)C = A(BC)
- A(B + C) = AB + AC
- (A + B)C = AC + BC
转置
⎣⎢⎡135246⎦⎥⎤T=[123456]
性质
(AB)T=BTAT
单位矩阵
- I3×3=⎣⎢⎡100010001⎦⎥⎤
- 矩阵的逆, 定义: AA−1=A−1A=I
- (AB)−1=B−1A−1
使用矩阵计算向量
点乘
a⋅b=[xayaza]⎣⎢⎡xbybza⎦⎥⎤=(xaxb+yayb+zazb)
叉乘
a×b=A∗b=⎣⎢⎡0za−ya−za0xaya−xa0⎦⎥⎤⎣⎢⎡xbybza⎦⎥⎤
系列说明
本系列文章 是 @Lingqi Yan(闫令琪) 教授《现代计算机图形学入门》 视频课程的文字笔记, 方便各位图形学爱好者朋友学习巩固使用
原课程链接: GAMES101: 现代计算机图形学入门
同时, 该教程已上传哔哩哔哩, 链接: GAMES101-现代计算机图形学入门-闫令琪
附
课件源文件: GAMES101_Lecture_02.pdf
哔哩哔哩视频传送门: GAMES101-现代计算机图形学入门-闫令琪