news 2026/3/17 23:45:46

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/3/14 9:01:35

Windows 11离线安装.NET Framework 3.5终极指南

Windows 11离线安装.NET Framework 3.5终极指南 【免费下载链接】已解决Win11离线安装.NETFramework3.5完全指南 【已解决】Win11离线安装.NET Framework 3.5完全指南 项目地址: https://gitcode.com/Resource-Bundle-Collection/d5cb0 摘要 本指南将帮助您在Windows 1…

作者头像 李华
网站建设 2026/3/12 23:33:10

GitHub - 远程仓库推送的方式

目录 GitHub远程仓库推送 - HTTPS方式 创建本地仓库 拉取远程仓库 - HTTPS方式 创建Token 推送远程仓库 GitHub远程仓库推送 - SSH方式 使用SSH密钥 配置Github公钥 拉取远程仓库 - SSH方式 推送远程仓库 由于GitHub是国外的,使用GitHub加载慢,…

作者头像 李华
网站建设 2026/3/12 23:33:34

TikTok直播录制终极指南:一键保存所有精彩时刻

在短视频盛行的时代,TikTok直播已成为内容创作者与粉丝互动的重要桥梁。然而,直播的即时性让许多珍贵时刻转瞬即逝。现在,有了这款强大的TikTok直播录制工具,你可以轻松保存每一场心仪的直播,再也不必担心错过任何精彩…

作者头像 李华
网站建设 2026/3/16 8:16:24

如何通过视觉优化设置解决安全测试中的眼睛疲劳问题?

如何通过视觉优化设置解决安全测试中的眼睛疲劳问题? 【免费下载链接】hetty An HTTP toolkit for security research. 项目地址: https://gitcode.com/GitHub_Trending/he/hetty 夜深人静时,你正在对某个系统进行HTTP安全测试,连续几…

作者头像 李华
网站建设 2026/3/15 2:38:01

cpu异常中断(2)

一、寄存器映射 内核里面的cpu主要通过D-Bus,I-Bus,S-Bus与外设沟通,其中S-Bus是主要用来访问外设的 当我们访问一个外设地址时,数据会从cpu然后通过S-Bus再到AHB总线矩阵,经过某些处理到达APB(挂载着外设) 但APB_BUS也不知道这个地址是什么…

作者头像 李华
网站建设 2026/3/17 3:52:16

5个Kronos高效使用技巧:从入门到精通的完整指南

5个Kronos高效使用技巧:从入门到精通的完整指南 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos Kronos作为金融市场的语言基础模型&#xff0c…

作者头像 李华