计算机图形学-GAMES101-3

文章详细介绍了图形变换的不同类型,如缩放、反射、切变和旋转,以及如何用矩阵表示这些变换。齐次坐标被引入来统一表述平移等非线性变换。通过变换矩阵,可以进行逆变换和控制变换顺序。在三维变换中,齐次坐标同样适用,包括线性变换和平移。重点强调了变换顺序的重要性,以及如何处理非原点旋转和非轴对称缩放问题。
摘要由CSDN通过智能技术生成

一、transformation-变换

(1)Scale

  • 缩放变换示意图
    在这里插入图片描述

  • 图形每个像素对应坐标的计算公式
    在这里插入图片描述

  • 写成缩放矩阵的形式
    在这里插入图片描述

  • 非均匀缩放
    在这里插入图片描述

(2)Reflection Matrix

  • 镜面变换示意图
    在这里插入图片描述

  • 图形每个像素对应坐标的计算公式
    在这里插入图片描述

  • 写成镜像矩阵的形式
    在这里插入图片描述

(3)Shear Matrix

  • 切变变换示意图
    在这里插入图片描述

  • 写成切片矩阵的形式
    在这里插入图片描述

(4)Rotate

  • 旋转变换示意图
    在这里插入图片描述

  • 旋转默认以原点为旋转中心,旋转方式为逆时针旋转。在这里插入图片描述

  • 旋转矩阵
    在这里插入图片描述

(5)总结

  • 我们要做变换,就要找到变换前坐标和变换后坐标之间的一种关系,根据这种关系将原坐标变换为新坐标,并将坐标和变换写成矩阵形式。
    在这里插入图片描述

二、齐次坐标

(1)平移

  • 平移变换示意图
    在这里插入图片描述

  • 图形每个像素对应坐标的计算公式
    在这里插入图片描述

  • 由于是相加,所以我们只能写成这种形式:
    在这里插入图片描述

  • 可以发现平移变换不是线性变换,无法表述为之前变换的形式,即坐标矩阵乘以一个矩阵的形式。有没有一个办法可以统一的表示所有的变换方式呢?

(2)No free lunch

  • 没有付出就没有收获,诸如动态规划是一种用空间换时间的求解算法,想要更好的表达方式,就需要牺牲一些东西。使用齐次坐标即可统一表述方式。

  • 使用齐次坐标实现平移变换。在这里插入图片描述

(3)齐次坐标的介绍

  • 点和向量齐次坐标的表示,向量w=0代表了向量的平移不变性。
    在这里插入图片描述

  • 也表述了向量+向量=向量、点-点=向量 等运算规则。
    在这里插入图片描述

  • 扩展齐次坐标下点w分量的含义
    在这里插入图片描述

三、齐次坐标的变换

(1)变换

  • Affine Transformations在这里插入图片描述

  • 任何一个 Affine Transformations都可以写为变换矩阵形式。
    在这里插入图片描述

  • 变换对应的矩阵
    在这里插入图片描述

(2)逆变换

  • 逆变换对应原变换矩阵的逆矩阵(AM=B,AM-M=B-M,A=B-M)。
    在这里插入图片描述

(3)变换顺序的讨论

  • 变换的顺序:缩放->旋转->平移。因为定义旋转是围绕原点,所有必须保证旋转时未经过平移,因此旋转在平移之前。因为定义缩放一般是我们针对原图形进行的横纵向缩放,即缩放时我们认为图形的横向为x轴纵向为y轴,而旋转会导致图形横向和纵向偏移,所以缩放需要在旋转之前进行。

  • 所有任何复杂的变换都可以通过这些基本变换得到,即定义在一个变换矩阵中。如果当对图形进行过旋转和平移了,还想对其进行缩放,可以先将图形逆变换到缩放阶段,然后执行缩放变换,再执行原本的旋转和平移变换即可。

  • 注意矩阵乘法类似于函数映射y=F(x),所以变换矩阵M和位置矩阵x的乘法为Mx,为左乘。对坐标的变换如下图,会从右到左依次应用各个变换矩阵。
    在这里插入图片描述

  • 矩阵从右到左逐个应用。也可也认为是,从An×A(n-1)×…×A1=M,即计算出变换矩阵M应用到坐标上。
    在这里插入图片描述

  • 如果有一个变换,它要求基于原点以外一个点旋转,或者是要求基于x轴和y轴以外的轴进行缩放,那该怎么办?对于绕原点以外的点旋转,我们只需要平移物体,使得旋转点平移到原点(保证了旋转点和物体的相对位置不变),再开始绕着原点旋转,这样就得到了应该旋转得到的效果,只不过我们还要将物体平移回去而已。而对于缩放也是一样,我们将旋转轴旋转到x轴上,进行x轴上的缩放,然后再旋转回原本的缩放方向即可。注意变换矩阵是从右到左的变换顺序。
    在这里插入图片描述

  • 存在变换顺序是因为变换的规则是固定的,而针对上述本身就打破了变换规则的变换,需要打破变换顺序才可以得到实现。但是无论在任何时候,我们想要旋转物体,只需要保证旋转中心在原点,我们需要缩放物体,只需要保证缩放轴在x或y轴上。这样我们可以先通过简单的变换使得旋转中心在原点或者缩放轴在x轴上,我们即可实施不规则的旋转或缩放。任何变换都是有对应的关系的,如果你能设计出一种变换关系,那你也可以不基于这些基本的变换,比如之间绕某个点旋转。

四、三维变换

(1)三维的齐次坐标

  • 添加z坐标即可。在这里插入图片描述

  • w不等于0,则点的坐标为:
    在这里插入图片描述

  • 三维变换矩阵,其中3X3为线性变换,旁边一列为平移变换在这里插入图片描述

  • 变换的顺序,上图矩阵等价下图计算过程,因此变换顺序也是先线性变换后平移。
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望—星空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值