图形学基础-变换

696 阅读2分钟

这是我参与12月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

二维变换

缩放

这个比较简单,分别将横竖坐标按比例缩小,矩阵上可以用缩放矩阵表示。

反转

按照某个轴做镜像反转,将某个坐标取反即可

切变

image.png

这个可以总结下变换的规律,可以找几个变换前后的点,观察其坐标变换规律,然后得到变换函数/矩阵

旋转

image.png

通过两个特殊的点(0, 1)(1,0),可以很容易地得到旋转的变换矩阵。

如果一个变换,可以通过原图乘以某个变换矩阵得到变换后的图像,那么我们说这个变换是一个线性变换。

平移变换

平移变换虽然很简单,但是不是线性变换。为了统一平移这种情况,需要引入一种新的形式来表示物体的坐标。

齐次坐标

image.png

通过在原本的维度上新增一个维度,这样就可以通过矩阵的乘法,将平移也包含进去。

仿射变换

image.png

通过齐次坐标,我们将线性变换和平移统一成了矩阵乘以点的形式,我们将这些变换统称为仿射变换。

逆变换

逆变换,相当于乘以原变换矩阵的逆矩阵。

组合变换

复杂变换可以通过简单变换的组合得到,顺序也比较重要。

就相当于乘以多个矩阵,顺序重要也验证了矩阵不满足交换律这一特性。

需要注意的是乘的顺序是从右到左

由于结合率,所以很多步基础的矩阵操作,可以合成一个非常牛逼的矩阵,它可以实现非常复杂的操作。

分解变换

可以通过变换的分解,将一些复杂的问题简单化。

如需要以特定点为中心进行旋转,可以先进行平移将特定点作为中心进行旋转,然后再平移回去。

三维变换

image.png

三维变换和二维差别不大,也是通过齐次坐标进行线性和平移变换,只不过增加了一个维度。二维坐标涉及到的所有基础内容基本都可以增加一个维度然后应用到三维变换中。