600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > [线性代数]矩阵变换在几何中的体现:缩放 翻转 切片 旋转 平移矩阵;放射变换

[线性代数]矩阵变换在几何中的体现:缩放 翻转 切片 旋转 平移矩阵;放射变换

时间:2023-06-22 01:02:56

相关推荐

[线性代数]矩阵变换在几何中的体现:缩放 翻转 切片 旋转 平移矩阵;放射变换

1.缩放矩阵

几何图示

对应公式

x ′ = − x y ′ = y \begin{aligned} &x^{\prime}=-x \\ &y^{\prime}=y \end{aligned} ​x′=−xy′=y​

[ x ′ y ′ ] = [ s x 0 0 s y ] [ x y ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} s_{x} & 0 \\ 0 & s_{y} \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] [x′y′​]=[sx​0​0sy​​][xy​]

带入数据

[ x ′ y ′ ] = [ 0.5 0 0 1 ] [ x y ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} 0.5 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] [x′y′​]=[0.50​01​][xy​]

2.反转矩阵

几何图示

对应公式

x ′ = − x y ′ = y \begin{aligned} &x^{\prime}=-x \\ &y^{\prime}=y \end{aligned} ​x′=−xy′=y​

[ x ′ y ′ ] = [ − 1 0 0 1 ] [ x y ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} -1 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] [x′y′​]=[−10​01​][xy​]

3.切片(剪切)矩阵

几何图示

对应公式

[ x ′ y ′ ] = [ 1 a 0 1 ] [ x y ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{ll} 1 & a \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] [x′y′​]=[10​a1​][xy​]

4.旋转矩阵

几何图示

对应公式

R θ = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] \mathbf{R}_{\theta}=\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right] Rθ​=[cosθsinθ​−sinθcosθ​]

推导:

取点 ( 1 , 0 ) → ( c o s θ , s i n θ ) (1,0)→(cosθ,sinθ) (1,0)→(cosθ,sinθ)

( x ′ y ′ ) = ( A B C D ) ( x y ) ( cos ⁡ θ sin ⁡ θ ) = ( A B C D ) ( 1 0 ) \begin{aligned} &\left(\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right)=\left(\begin{array}{l} A & B \\ C & D \end{array}\right)\left(\begin{array}{l} x \\ y \end{array}\right)\\ &\left(\begin{array}{c} \cos \theta \\ \sin \theta \end{array}\right)=\left(\begin{array}{ll} A & B \\ C & D \end{array}\right)\left(\begin{array}{l} 1 \\ 0 \end{array}\right) \end{aligned} ​(x′y′​)=(AC​BD​)(xy​)(cosθsinθ​)=(AC​BD​)(10​)​

得出 A = c o s θ , C = s i n θ A=cosθ,C=sinθ A=cosθ,C=sinθ

取点 ( 0 , 1 ) → ( − s i n θ , c o s θ ) (0,1)→(-sinθ,cosθ) (0,1)→(−sinθ,cosθ)

( − sin ⁡ θ cos ⁡ θ ) = ( A B C D ) ( 0 1 ) \begin{aligned} &\left(\begin{array}{c} -\sin \theta \\ \cos \theta \end{array}\right)=\left(\begin{array}{ll} A & B \\ C & D \end{array}\right)\left(\begin{array}{l} 0 \\ 1 \end{array}\right) \end{aligned} ​(−sinθcosθ​)=(AC​BD​)(01​)​

得出 B = − s i n θ , D = c o s θ B=-sinθ,D=cosθ B=−sinθ,D=cosθ

5.平移矩阵

几何图示

对应公式

( x ′ y ′ 1 ) = ( 1 0 t x 0 1 t y 0 0 1 ) ( x y 1 ) \left(\begin{array}{l} x^{\prime} \\ y^{\prime}\\ 1 \end{array}\right) =\left(\begin{array}{ccc} 1 & 0 & t_{x} \\ 0 & 1 & t_{y} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{l} x \\ y\\ 1 \end{array}\right) ⎝⎛​x′y′1​⎠⎞​=⎝⎛​100​010​tx​ty​1​⎠⎞​⎝⎛​xy1​⎠⎞​

在此,你发现它多了一维,这说明:如果我们要对一个二维矩阵进行平移,我们需要用三维矩阵去控制它。

也就意味着,用一个三维的矩阵,不止可以将其平移,而是可以对它进行任意操作

由此,引出了一个变换:仿射变换。

仿射变换

简单来说,仿射变换就是:线性变换”+“平移

线性变换有三个特点:

变换前是直线,变换后依然是直线;直线比例保持不变变换前是原点,变换后依然是原点

仿射变换有两个特点:

变换前是直线,变换后依然是直线。直线比例保持不变。

可以发现,由于加入了平移,原点不变的特性消失了。

平移不是线性变换,而是仿射变换。

所有的仿射变换都可以用一个三维矩阵来表示。

Scale

S ( s x , s y ) = ( s x 0 0 0 s y 0 0 0 1 ) \mathbf{S}\left(s_{x}, s_{y}\right)=\left(\begin{array}{ccc} s_{x} & 0 & 0 \\ 0 & s_{y} & 0 \\ 0 & 0 & 1 \end{array}\right) S(sx​,sy​)=⎝⎛​sx​00​0sy​0​001​⎠⎞​Rotation

R ( α ) = ( cos ⁡ α − sin ⁡ α 0 sin ⁡ α cos ⁡ α 0 0 0 1 ) \mathbf{R}(\alpha)=\left(\begin{array}{ccc} \cos \alpha & -\sin \alpha & 0 \\ \sin \alpha & \cos \alpha & 0 \\ 0 & 0 & 1 \end{array}\right) R(α)=⎝⎛​cosαsinα0​−sinαcosα0​001​⎠⎞​Translation

T ( t x , t y ) = ( 1 0 t x 0 1 t y 0 0 1 ) \mathbf{T}\left(t_{x}, t_{y}\right)=\left(\begin{array}{ccc} 1 & 0 & t_{x} \\ 0 & 1 & t_{y} \\ 0 & 0 & 1 \end{array}\right) T(tx​,ty​)=⎝⎛​100​010​tx​ty​1​⎠⎞​

然而,以上我们都讨论的是针对一张图片——2D图形的变换。当变为3D物体时,我们只需要加一个坐标 z z z,就可以表示3D物体的放射变换,当然,“操作”这个三维矩阵的矩阵,自然就是4维的。

( x ′ y ′ z ′ 1 ) = ( a b c t x d e f t y g h i t z 0 0 0 1 ) ⋅ ( x y z 1 ) \left(\begin{array}{l} x^{\prime} \\ y^{\prime} \\ z^{\prime} \\ 1 \end{array}\right)=\left(\begin{array}{lllc} a & b & c & t_{x} \\ d & e & f & t_{y} \\ g & h & i & t_{z} \\ 0 & 0 & 0 & 1 \end{array}\right) \cdot\left(\begin{array}{c} x \\ y \\ z \\ 1 \end{array}\right) ⎝⎜⎜⎛​x′y′z′1​⎠⎟⎟⎞​=⎝⎜⎜⎛​adg0​beh0​cfi0​tx​ty​tz​1​⎠⎟⎟⎞​⋅⎝⎜⎜⎛​xyz1​⎠⎟⎟⎞​

在此引申出了一个哲学问题,要操作一个 n n n维的“东西”,则需要操作者(观察者)至少处于第 n + 1 n+1 n+1维。例如:

一个点处于任何一个位置,它都是一个点,它并不具有任何能表示自己的值。对于一条线,也可以理解为一个线段,这个点就有了一个坐标,也就是我们小学时学过的——横坐标(x坐标)。对于一个平面,一条线就成了向量,离开线的点也可以被一个平面发现。对于一个空间,一个平面也有了位置,两个不相交的平面可以通过空间坐标来知道彼此的位置。下一个维度,我个人的理解为时间,但由于我也是三维生物,我无法做出比喻。

设想一下,是否有一个可以在时间轴上任意穿梭的“东西”,它能知道我们宇宙中的一切呢?无论是宇宙的过去,或是宇宙未来的模样,对于它来说只是重设时间值这么一个简单的操作?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。