其他分享
首页 > 其他分享> > 【GAMES101现代计算机图形学入门笔记】Lec03 变换

【GAMES101现代计算机图形学入门笔记】Lec03 变换

作者:互联网

Lec03 变换

文章目录

为什么学习变换

2D变换

线性变换(Linear Transforms)

线性变化 = 同维度矩阵

[ x ′ y ′ ] = [ a b c d ] [ x y ] \begin{bmatrix} x^{\prime}\\y^{\prime} \end{bmatrix}= \begin{bmatrix} a&b\\ c&d \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix} [x′y′​]=[ac​bd​][xy​]

x ′ = M x \bold{x^{\prime}}=\bold{M}\bold{x} x′=Mx

  1. 缩放(Scale): [ x ′ y ′ ] = [ s x 0 0 s y ] [ x y ] \begin{bmatrix} x^{\prime}\\y^{\prime} \end{bmatrix}= \begin{bmatrix} s_x&0\\ 0&s_y \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix} [x′y′​]=[sx​0​0sy​​][xy​](记作 S s x , s y S_{s_x,s_y} Ssx​,sy​​)

  2. 反射(Reflection): [ x ′ y ′ ] = [ − 1 0 0 1 ] [ x y ] \begin{bmatrix} x^{\prime}\\y^{\prime} \end{bmatrix}= \begin{bmatrix} -1&0\\ 0&1 \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix} [x′y′​]=[−10​01​][xy​](以y轴为对称轴)

  3. 切变(Shear): [ x ′ y ′ ] = [ 1 a 0 1 ] [ x y ] \begin{bmatrix} x^{\prime}\\y^{\prime} \end{bmatrix}= \begin{bmatrix} 1&a\\ 0&1 \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix} [x′y′​]=[10​a1​][xy​]

千层饼被推了一下:越往上变化越多)

  1. 旋转(Rotate): [ x ′ y ′ ] = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ x y ] \begin{bmatrix} x^{\prime}\\y^{\prime} \end{bmatrix}= \begin{bmatrix} \cos\theta&-\sin\theta\\ \sin\theta&\cos\theta \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix} [x′y′​]=[cosθsinθ​−sinθcosθ​][xy​](记作 R ( α ) R(\alpha) R(α))

    特殊点:

    这里的旋转,默认绕原点逆时针(CCW)旋转

非线性变换

平移(Translation): x ′ = x + t x x^{\prime}=x+t_x x′=x+tx​, y ′ = y + t y y^{\prime}=y+t_y y′=y+ty​(记作 T t x , t y T_{t_x,t_y} Ttx​,ty​​)无法写成矩阵形式!!所以平移不是线性变换

Is there a unified way to represent all transformations?

齐次坐标(Homogeneous Coodinate)

上述问题的解决方案就是齐次坐标

加入第三个坐标(w-coodinate):

平移变换的矩阵形式:
[ x ′ y ′ w ′ ] = [ 1 0 t x 0 1 t y 0 0 1 ] [ x y w ] = [ x + t x y + t y w ] \begin{bmatrix} x^{\prime}\\y^{\prime}\\w^{\prime} \end{bmatrix}= \begin{bmatrix} 1&0&t_x\\ 0&1&t_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x\\y\\w \end{bmatrix}= \begin{bmatrix} x+t_x\\y+t_y\\w \end{bmatrix} ⎣⎡​x′y′w′​⎦⎤​=⎣⎡​100​010​tx​ty​1​⎦⎤​⎣⎡​xyw​⎦⎤​=⎣⎡​x+tx​y+ty​w​⎦⎤​
解释:对于点,平移后坐标改变,故 w w w为1,保持 t x , t y t_x,t_y tx​,ty​的效用;而对于向量,由于具有平移不变性,所以 w w w为0,消除了 t x , t y t_x,t_y tx​,ty​的效用。

0和1背后的深层次原因:

仿射变换(Affine Transformation)

仿射映射 = 线性映射 + 平移

[ x ′ y ′ ] = [ a b c d ] [ x y ] + [ t x t y ] \begin{bmatrix} x^{\prime}\\y^{\prime} \end{bmatrix}= \begin{bmatrix} a&b\\ c&d \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix}+ \begin{bmatrix} t_x\\t_y \end{bmatrix} [x′y′​]=[ac​bd​][xy​]+[tx​ty​​]

用齐次坐标表示(囊括了所有变换):
[ x ′ y ′ 1 ] = [ a b t x c d t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x^{\prime}\\y^{\prime}\\1 \end{bmatrix}= \begin{bmatrix} a&b&t_x\\ c&d&t_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x\\y\\1 \end{bmatrix} ⎣⎡​x′y′1​⎦⎤​=⎣⎡​ac0​bd0​tx​ty​1​⎦⎤​⎣⎡​xy1​⎦⎤​

变换操作

变换矩阵: T ( c ) ⋅ R ( α ) ⋅ T ( − c ) \bold{T(c)}\cdot\bold{R(\alpha)}\cdot\bold{T(-c)} T(c)⋅R(α)⋅T(−c)

标签:prime,begin,end,Lec03,point,变换,图形学,bmatrix,GAMES101
来源: https://blog.csdn.net/erchan/article/details/113814560