[Computer Graphics]1 线性代数基础

变换矩阵 (Transformation Marices) 在图形学中的重要性不用多说,一切物体的缩放,旋转,位移,都可以通过变换矩阵作用得到。同时在投影 (projection) 变换的时候也有很多应用,本文将会介绍一些简要的变换矩阵。

0 线性基础

0.1 点乘

在这里插入图片描述
作用:
Measure how close two directions are
在镜面反射周围可以看到高光,其他角度不行。用于判断
Decompose a vector
Determine forward / backward
在这里插入图片描述

0.2 叉积

在这里插入图片描述
根据右手螺旋定则确定方向,不满足交换律!
在这里插入图片描述
作用:
判定左和右
a × b a×b a×b是正,则 b b b a a a左面,否则右面
判定内和外面
判断某点与三角形(注意要全为顺时针或者逆时针),即三条边的左右,都为正,则在其内部,否则外部

1 2D线性变换

我们将如下图所示的简单矩阵乘法定义为对向量 ( x , y ) T ( x , y ) T (x,y)^T(x,y) T (x,y)T(x,y)T的线性变换。
在这里插入图片描述

1.1 缩放(scaling)

缩放变换是一种沿着坐标轴作用的变换,定义如下:
在这里插入图片描述
即除了 ( 0 , 0 ) T (0,0)^T (0,0)T保持不变之外,所有的点变为 ( s x x , s y y ) T (s_xx,s_yy)^T (sxx,syy)T
举两个简单例子:
在这里插入图片描述
在这里插入图片描述

1.2 剪切(shearing)

shear变换直观理解就是把物体一边固定,然后拉另外一边,定义如下:
在这里插入图片描述
分别对应了向"拉伸"x轴,和"拉伸"y轴
直观理解见如下两图:
在这里插入图片描述
在这里插入图片描述

1.3 旋转(rotation)

旋转可以说是又一个十分重要的变换矩阵了,如下图,我们希望用一个变换矩阵表示将向量 a \bold{a} a旋转到向量 b \bold{b} b的位置,
在这里插入图片描述
记为
在这里插入图片描述
我们可做如下推导得到该矩阵,记向量长度为 r r r,则不难得到
在这里插入图片描述
进一步我们可以将旋转之后的向量 b \bold{b} b的坐标x,y用如下表示
在这里插入图片描述
显然,将上一步 x a x x_ax xax y a y y_ay yay的坐标表示代入得到
在这里插入图片描述
此时不难得出该结果即为 r o t a t e ( ϕ ) ∗ ( x a , y a ) T rotate(\phi) * (x_a,y_a)^T rotate(ϕ)(xa,ya)T的结果了,证明结束。(注意该式是逆时针(countercklockwise)旋转,且原点为旋转中心!)

举例逆时针旋转45°效果如下:
在这里插入图片描述

2 3D线性变换

其实知道2维推3维还是非常直观的,只有推3维旋转的时候有一点要注意一下。

2.1 3维缩放(scaling),剪切(shearing),旋转(rotation)

缩放不用多说:
在这里插入图片描述
剪切也十分类似:
在这里插入图片描述
3维旋转有3个矩阵,分别对应绕x轴,y轴,z轴旋转,同时有很关键的一点要注意!我们所采用的是右手系,因此旋转是有定向(orientation)正如在二维,是x轴向y轴旋转,对应到3维便是绕z轴旋转(x轴转向y轴),不难推出绕x轴旋转(y转向z),绕y轴旋转(z转向x), 如果想不明白,右手螺旋定则试一试就知道了! x->y->z->x…
因此理解了上面这个来看绕x和z旋转的变换矩阵
在这里插入图片描述
(绕z轴,故z不变,且x转向y)
在这里插入图片描述
(绕x轴,故x不变,且y转向z)
绕y轴会有一点不同,但只要记住需要z转向x,很快便能反应过来
在这里插入图片描述
其实到这里可以下一个结论,可以看到任意旋转都是正交矩阵!,因此他们的逆便是他们的转置,而一个旋转矩阵的逆所对应的几何解释便是,我反着转这么多,比如我逆时针转30°,转置便是顺时针30°

注:以上所有的旋转都是针对原点来说,那么如何对围绕任何一个轴(3维)旋转呢

2.2 3维绕任意轴旋转

我们只有绕x,y, z旋转的方法,怎么随便给一个轴让你绕着他旋转呢!很直观的,我们把该轴给先旋转到任意的x,y,z轴上,然后就可以应用基本的旋转矩阵,最后再逆旋转回来即可,表示如下:
R 1 R x R 1 T ∗ ( x , y , z ) T R1RxR1^T * (x,y,z)^T R1RxR1T(x,y,z)T
这里的Rx是知道的,问题只剩怎么求R1了,设我们想围绕旋转的轴为u uu,R1便是将u旋转到x的矩阵。
具体来说这里我们需要以u为一轴,构造一个3维正交坐标系,然后将u-x对齐,那么其它两轴就肯定和y和z对齐了!
构造如下,任取一t方向不与u重合
w = t x u
v = u x w
此时u, w, v便是我们构造出的新坐标系(这里运用了一些叉乘的小知识,读者不理解可取自行去了解一下叉乘几何含义再来看此式)。

好了,现在得到了u,w,v 对应 x,y,z如何将我们的新坐标系与原始坐标系重合呢,哈哈,这其实再简单不过了,我们取R1 = (u,w,v),该旋转矩阵的含义便是将x , y , z x,y,zx,y,z旋转到u,w,v的旋转矩阵(不信可以直接R1 * x,R1y,R1z试试便一目了然),还记得什么?我们上一节曾总结到,旋转矩阵是正交矩阵,旋转矩阵的转置便是它的逆,也是几何意义上的反作用,因此! R T R^T RT便是将u,w,v旋转到x,y,z的矩阵了。现在我们知道了R1知道了RX,那么围绕位移轴的旋转也就得到了!
在这里插入图片描述
中间那个矩阵换成 r o t a t e − x ( ϕ ) rotate-x(\phi) rotatex(ϕ)就好啦,书上的图懒得改了!

Tips:如果读者对线性代数不熟悉,或是没有很直观的几何理解的话,强烈推荐3blue1brown的线代本质。真的是带你走进全新版本,哈哈哈。

3 仿射变换

其实读到这大部分矩阵变换都已经说完了,只剩最后一个位移,同时也会引入齐次坐标为了更好将位移与rotation,scaling结合再一起,这样能够有旋转scale,又有translation的变换,称之为仿射变换。

3.1 位移(translation)

其实位移是在简单不过的了
在这里插入图片描述
我们之前所提到的线性变换如下:
在这里插入图片描述
你可以试试如果2维变换只用2维矩阵,3维变换只用3维矩阵,你是不可能将二者合在一起用一个矩阵表示的,所以很自然的,我们引入一维新的坐标,称之为齐次坐标,(x,y)->(x,y,1)
在这里插入图片描述
现在我们就可以用一个矩阵即表示线性变换(先做),又表示位移了(后做)!三维其实同理,可以自己写出来看看。

注:最后一维为1,表示点(point),为0表示方向(direction)。方向的位移没有意义,方向始终不会变。
当然,不是只能是1和0,在投影变换中,齐次坐标会有更多的作用。

4 特征分解与奇异值分解的几何解释

在计算机图形学一中介绍了一些具体的变换矩阵,如旋转,缩放,位移等等,但这些矩阵都有特定的形式,那么如何去理解一个任意的2维或3维变换矩阵的几何意义呢,在本节中将会利用特征分解和奇异值分解得出一些直观的结论。

4.1 实对称矩阵特征分解

特征分解其实就是在本科所学线代中求出一个矩阵的特征值与特征向量,然后利用二者进行一个相似对角化,这一节中考虑较为特殊的实对称矩阵,可以我们可以利用定义如下:
A = R S R T A=RSR^T A=RSRT
其中A是被分解的实对称矩阵,其中R是正交矩阵,S是对角矩阵,且正交矩阵由A的特征向量v1,v2(假设2维)构成,对角矩阵则是对应的特征值 λ 1 , λ 2 \lambda_1,\lambda_2 λ1,λ2构成,想起在 计算机图形学一中所讲的,所有的旋转矩阵都是正交矩阵,而对角矩阵又恰好是scale矩阵的形式。因此我们可以把任意一个实对称矩阵的几何意义看作 旋转 缩放 再反旋转。具体如下:
(1) R T R^T RT: 将向量v1,v2旋转至x轴和y轴
(2) S S S: 沿着x轴和y轴方向分别放大 λ 1 , λ 2 \lambda_1,\lambda_2 λ1,λ2
(3) R R R: 将x轴和y轴旋转至向量v1,v2

(如果对基础的旋转矩阵几何意义不清晰的可以参考计算机图形学一,或者在B站搜索3blue1brown的线代视频)

如此举一个具体的实对称矩阵的例子看看:
在这里插入图片描述
在这里插入图片描述
分解之后就可很清晰看出任何一个实对称矩阵都对应3个连续的矩阵变换,更简略一点
任何一个实对称的几何意义为:在特定的一些轴向上进行放缩

要注意的是在这里仅仅讨论了实对称矩阵的几何意义,那么对于更加普遍的非对称矩阵该去怎么理解呢,其实也对应着旋转缩放旋转三步,不过要使用的就不再是特征分解而是奇异值分解了。

4.2 非对称矩阵奇异值分解

奇异值分解的结果与特征分解十分类似,可以定义如下:(这里并不会讲解详细计算,有兴趣的读者可以参考 Fundamentals of Computer Graphics第5章,或查阅其它资料)
A = U S V T \large{A = USV^T} A=USVT
其中A是被分解的矩阵,U,V是正交矩阵,S是对角矩阵,很显然,我们依然可以分三步去理解任意一个矩阵的几何意义
(1) V T V^T VT: 将向量v1,v2旋转至x轴和y轴
(2) S S S: 沿着x轴和y轴方向分别放大 δ 1 , δ 2 \delta_1,\delta_2 δ1,δ2
(3) U U U: 将x轴和y轴旋转至向量u1,u2
如此我们在看一个具体的例子分解:
在这里插入图片描述
虽然本文只考虑了2维情况,但是推广到3维也是非常容易的。

至此我们便明白了任何一个矩阵作用的含义其实都是旋转和缩放的结合,其实仔细思考会发现这是一个非常合理而又直观的理论,我们不用去想什么特征分解,奇异值分解,因为没有引入齐次坐标之时,变换矩阵只能表示旋转,缩放! 而也就不奇怪为什么任意的普通矩阵表示的几何意义是旋转缩放的结合了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值