news 2026/7/12 23:35:59

games101学习:lecture3. Transformation

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
games101学习:lecture3. Transformation

大纲

这周要学习转换(Transformation),从三维世界到二维投影。

2D转换:rotation(旋转),scale(缩放),shear(切片)
齐次坐标的概念,以及为什么用它
多种不同的变换组合到一块形成一个新的变换
三维的变换

今天学习二维变幻
1.Representing transformations using matrices 使用矩阵表示变幻
2.rotation scale shear 旋转 缩放 切片

缩放:横轴和纵轴都缩放为原来的0.5倍。
1.一开始任何一个点的坐标是(x,y),经过一个缩放操作之后变为(x',y'),那可以理解为/* by 01130.hk - online tools website : 01130.hk/zh/regexsucha.html */ x' = sx/* by 01130.hk - online tools website : 01130.hk/zh/regexsucha.html */ y' = sy
,其中s=0.5
2.上面这两个十字也可以写为矩阵形式,x' = sxy' = sy写为

此时S = 0.5;这个【S 0 0 S】成为缩放矩阵,如果S 大于 1 的话,这个矩阵可以用于放大。

同理,想将图像对x进行缩放,可以进行这个操作。

同理,对称的操作

shear变换,切变。

y轴方向的值不发生改变,y=0的x不发生改变,然后y越大,x改变的越大,因此改变的量是x=ay,加上原本的量是x' = x + ay所以矩阵可以这么写。

写出一个变换,就是要找出变换后的y',x'和变换前的x,y之间的关系,然后乘一个矩阵即可。

旋转,绕着(0,0)旋转,逆时针为正方向。

那我们如何得到这个变换呢?手推公式一下。
我们知道,写出一个变换,就是要找出变换后的y',x'和变换前的x,y之间的关系,然后乘一个矩阵即可。那此时我们可以随机找两个点,就比如原图右下角的点和左上角的点。

右下角的(1,0)会变成( cos(theta) , sin(theta) )那这个就是一个变换前后的关系,可以通过这个关系去推导这个(A,B,C,D)的值。同理,左上角这个点也会满足。这两个特殊的点满足,其余点也会满足的。
最终可以得出A=cos(theta) B=-sin(theta) C=sin(theta) D=cos(theta)。

还是那句话,写出一个变换,就是要找出变换后的y',x'和变换前的x,y之间的关系,然后乘一个矩阵即可。
称之为线性变换

引入新概念,以上的线性变换要用一个相同维度的矩阵来乘向量,那不同纬度呢,引入一个定义叫做齐次坐标,Homogeneous coordinates,理解为什么要引入这个定义?因为我们要进行平移变换

看看这个平移变换,貌似挺简单的,但是很难以矩阵相乘的形式表达出来。

如果表示为这种形式不符合线性变换的定义,可以有一种统一的形式:齐次变换

二维的点可以加个1,二维的向量加个0,增加一个维度。(为什么要将向量和点区别对待呢?)
向量考虑的是方向性,其具有平移不变性。


point + point = 这两个点的中点,

可以实现加法,我想要的平移的变换!可以写成统一的一个矩阵 * 一个向量的形式了。

类似这种平移变换,为他起个名字,叫做affine transformations(仿射变换),线性变换的同时再加个平移。

用齐次坐标表示二维的仿射变换,最后一行永远都是0 0 1,平移一定都是写在最后一列的两个数上。

关于齐次坐标的缩放 旋转 平移的总结

Inverse Transform逆变换,进行一个操作乘的矩阵,然后将这个操作反回来所用的这个矩阵,这个操作是逆变换,这个矩阵是逆矩阵


需要注意的是,矩阵乘法不符合交换律,意思是你先进行平移变换,在进行旋转变换得到的结果肯定是不等于先进性旋转变换再进行平移变换得到的结果。**你想先进行什么操作,就先左乘一个矩阵,如图,(x,y,1)先进行旋转,再进行平移。

对这个矩阵先进行A1变换,再A2,再A3………就是一直左乘。

矩阵没有交换律,但是有结合律那么就可以将这些An …… A2 A1先乘到一块作为一个矩阵最后再和这个(x,y,1)进行相乘。

前面说到的旋转,都是以原点中心进行的旋转,那能不能以任意一个点进行旋转呢?变换不仅能进行合成(上面),还能进行分解。

如何以C为中心旋转,首先平移原图C的位置到原点,然后旋转,然后反转回去。
先左乘一个平移,再旋转,再平移。

二维的讲完了,到了三维。

三维空间也需要线性变换,它也需要旋转,缩放,平移等。

w不等于1,那就把x,y,z全都变成x/w,y/w,z/w的值,然后就变成了一个点。

先平移再线性变换还是先线性变换再平移呢?
先线性变换再平移

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 4:58:28

有什么好的团队文件管理软件?测评对比14款

在企业日常运营中,文件的高效管理与安全协作已经成为提升团队竞争力的关键环节。随着远程办公、跨区域协作的普及,传统的本地文件存储模式逐渐暴露出权限管理困难、版本混乱、信息安全风险等痛点。一款功能完善的团队文件管理软件不仅能帮助企业集中存储…

作者头像 李华
网站建设 2026/7/11 15:05:45

CV技术的应用现状与CNN模型识别图像中对象的流程

CV(计算机视觉)技术作为人工智能领域商业化与成熟度较高的分支,目前已深度渗透到工业、医疗、交通等多个领域,同时在前沿领域不断探索,整体呈现出技术分层落地、场景持续拓展的应用现状,具体如下&#xff1…

作者头像 李华
网站建设 2026/7/12 2:41:12

小兔鲜儿微信小程序开发全攻略

小兔鲜儿微信小程序开发全攻略 【免费下载链接】uniapp-shop-vue3-ts 小兔鲜儿-vue3ts-uniapp 项目已上线,小程序搜索《小兔鲜儿》即可体验。🎉🎉🎉 配套项目接口文档,配套笔记。 项目地址: https://gitcode.com/me…

作者头像 李华
网站建设 2026/7/8 11:49:16

项目分享 | Agent Lightning:零代码改动训练与优化你的AI智能体

引言 在AI智能体(Agent)开发如火如荼的今天,我们常常面临一个核心困境:如何让已经构建好的智能体变得更聪明、更可靠?传统方法依赖于繁琐的提示工程、代码重构或昂贵的模型微调。微软研究院开源的 Agent Lightning (Ag…

作者头像 李华
网站建设 2026/7/12 5:27:34

用户体验设计终极指南:《用户体验的要素》免费PDF下载

在当今竞争激烈的互联网时代,用户体验已经成为决定产品成败的关键因素。想要掌握以用户为中心的设计精髓?《用户体验的要素》PDF下载为您提供了一条快速成长的捷径!🚀 【免费下载链接】用户体验的要素PDF下载介绍 《用户体验的要素…

作者头像 李华
网站建设 2026/7/12 1:27:10

如何快速分析C盘里到底是什么东西占用了最多空间?

如何快速分析C盘里到底是什么东西占用了最多空间?如果你的 c: 驱动器空间不足, 它会让电脑变慢, 阻止更新, 你不需要高深的技术技能来找出占用最多空间的项目, 使用几个简单的内置工具和一个免费的第三方实用程序, 你可以快速识别大文件和文件夹, 看看哪些文件类型占…

作者头像 李华