我正在参加「掘金·启航计划」
本文系原创,转载请注明出处.码字不易,希望大家多多关注,多多点赞!
开新坑啦,本文是系列文章”计算机图形学”的第一篇: 线性代数概览,之所以第一篇就讲线性代数,是因为线性代数是计算机图形学的基础,所谓”勿在浮沙筑高台”,线性代数是构筑图形学这座大厦的根基,扎实的线性代数基础,尤其是其几何意义深刻理解,对于图形学尤为重要,具体体现在以下几个方面:
- 线性代数做为几何,物理等计算有效沟通的桥梁
- 在图形学的许多领域,一旦你能用线性代数表示问题的解,基本上问题就解决一半了,剩下的只是让计算机求解 Ax = b
- 高效的线性代数数值运算使现代计算机图形学成为可能(图像处理, 基于物理的动画, 几何处理等等)
向量空间
向量
向量是什么
首先我们要问自己一个问题,向量到底是什么?从直观感受来说,向量其实就是一个指向某个方向的小箭头而已:
那我们如何表示一个向量, 如何测量一个向量,一个完整的向量由哪些必要的属性来构成呢?
从根本上说,只有方向和大小:
例如:一个二维向量可以由一个角度和长度r来表示(极坐标系)
除了极坐标系外,我们还可以用笛卡尔坐标系(cartesian coordinates)来表示向量:
通过向量我们可以执行哪些操作?
向量相加
首先我们可以对两个向量相加,通过把他们进行首尾相连的方式:
想象有一个物体,先沿着行进然后再沿着方向行进,最终到达的位置即向量 + 的”终点位置”,此即为向量加法的几何意义.另外如果我们先沿着方向行进,再沿着方向行进,得到的结果是一样的,即:
向量加法满足交换律: + = +
向量与标量乘法
其次,我们可以对向量进行缩放:
通常情况下,任何向量都可以乘以标量得到一个新的向量,其几何意义也非常明显,通过缩放因子a对向量进行缩放.
向量与标量乘法满足结合律: =
向量加法与缩放一起使用
向量空间(Vector Space)正式定义
对于任意的向量 和标量:
- + = +
- + ( + )= ( + ) +
- 存在一个零向量使得: + = + =
- 对于任意的: + () = 0
- 1 =
- =
- =
注1:任何满足以上所有条件的对象都是一个向量空间,尽管他们看起来不太像小箭头:)
注2:以上所有这些定义并不是凭空捏造的,而是有其直观的几何意义,了解公式背后的几何意义对于图形学的深入更重要.
欧几里得向量空间(Euclidean Vector Space)
欧几里得向量空间是几何的基本空间,用来表示物理空间,最初在欧几里得几何中,它是欧几里得几何的三维空间,但在现代数学中,有任何正整数维数的欧几里得空间,被称为欧几里得维空间,当时,只有一个维度,几何上表示为一条线,当时, 表示为一个二维平面.当,代表三维空间,欧几里得向量空间通常用符号表示:
函数也是向量
在图形学中另外一个向量空间很重要的例子是函数空间(spaces of functions),这些函数可以用来描述一张图片中每个像素的颜色,也可以用来描述几何的形状等等.函数也是向量,对向量执行的任何操作(add & scaling)对函数同样适用.
为什么函数也是向量
让我们从最基本的向量加法和向量缩放开始验证.
两函数相加:
函数缩放:
笛卡尔坐标系下的向量运算
向量相加
向量缩放
计算中点
想象由向量和所构成的平行四边形,平行四边形的对角线就是 + ,于是中点向量 = 1/2 +
向量的模(Norm | length | magnitude)
前边我们讲过表达向量的两个维度,方向和大小,接下来我们着重说明向量的模是如何定义的.
对于一个给定的向量,我们用符号表示其大小.直觉上来看,向量的描述了向量有多大.
向量模的性质
- 非负性:
- 如果一个向量的大小为0,则它为0向量:
- 如果对一个向量缩放c,则它的大小同样会缩放c:
- 我们知道两点之间直线最短,因此:
向量的模正式定义
向量大小是一个输入参数为向量返回标量的函数,对于任意给定的向量,和标量,向量大小需满足以下条件:
笛卡尔坐标系下向量模的运算
函数的模( Norm of Functions)
和笛卡尔坐标系下的向量一样,从概念上来说,函数的模描述了其的”大小”.假设有一个定义域在区间上的可积分函数,则该函数的Norm定义如下:
向量点积(Inner Product)
除了向量的大小,之前我们说过向量还有方向,就像向量的模测量其大小一样,向量点积描述了两个向量的方向一致性:
前边我们说过图片也是一种向量,可以这样理解,图片中每个像素相当于欧几里得向量空间中的一个维度,因此我们同样可以对图片使用点积来描述两张图片的相似性:
对称性
当我们使用向量点积来描述向量的方向一致性时,根本上来说描述的是它们之间的相对关系,点积的顺序是无关紧要的:
注:我们用符号表示向量的点积
计算投影
对于任意单位向量和(向量的模为1),其点积为其中一个向量投影到另外一个向量上的长度:
如果我们对参与点积运算的任意个向量缩放,则其点积也会执行同样程度的缩放:
点积正式定义
点积是一个输入参数为两个向量返回一个标量的函数,描述了两个向量方向的一致性,该函数满足以下条件:
笛卡尔坐标系下的点积定义
标准的点积也就是所谓的欧几里得点积,它作用于一对n维向量,其数学定义如下:
函数点积
和欧几里得点积一样,可以对两个函数计算点积(可以简单的把函数值域的每个数值理解为欧几里得向量的一个维度),来描述其函数的”相似性”:
参考
声明:本系列文章参考了Carnegie Mellon University Keenan Crane教授的教学讲义,感兴趣的同学可以油管观看原文视频.