GAMES101-现代计算机图形学入门-闫令琪 - lecture3 变换(transformation) - 课后笔记

变换

为什么要变换?

变换有两种,一种 model 和 view 变换,其中model变换中包括缩放, 而view则主要是讲3D投影到2D的画面上

二维变换

要找到一个变换,实际上就是寻找变换后得坐标(x‘,y’)和变换之前的坐标(x,y)之间的关系,即 x’ = Mx

其中M就是变换矩阵,根据M*x就可以得到变换之后的坐标。

缩放(Scale)

在这里插入图片描述
(x’,y’)和(x,y)的关系写成矩阵的形式就是
在这里插入图片描述
缩放又可以分为均匀缩放和非均匀缩放:
在这里插入图片描述
若Sx和Sy不相等,则x轴和y轴的拉伸程度不通,最终得到的结果就是非均匀缩放。
在这里插入图片描述

反射矩阵(Shear Matrix)

在这里插入图片描述

y轴不变,将物体对y轴进行对称,则 x’ = -x , y’ = -y,矩阵表示如下
在这里插入图片描述

切变换(Shear Matrix)

在这里插入图片描述

改变换如图所示,物体在y轴方向上没有变化,而在x轴方向上进行了拉伸

1.在y轴上没有变化,则 y’ = y

2.y = 0 时,水平位移为0,而y = 1时,水平位移为 a,根据图可得,若y = 1/2时,则x的水平位移为 a/2

以上就可以得到(x’,y’)的关系,然后根据关系写出变换:y = y, x = x + ay
在这里插入图片描述

旋转(Rotate)

默认情况下,旋转是指绕着原点,逆时针旋转

如果要实现这样一个旋转效果,应该如何做?
在这里插入图片描述

直接给出一个旋转矩阵公式如下:

在这里插入图片描述

即用(x’,y’) = Rθ * (x,y) 就可以得到这个变换,推到如下:

用两个特殊点A,B来推导这个旋转矩阵,因为这个矩阵是通用的,所以A,B两点的变换也就应该满足这个矩阵,所以直接通过A,B推到出R
在这里插入图片描述
在这里插入图片描述
推到过程如上图所示,b,d的过程类似,就不再具体的展开
在这里插入图片描述
旋转-θ角就是R的逆矩阵,R的逆矩阵 = R的转置 ,所旋转矩阵R是一个正交矩阵

线性变换(Linear Transforms = Matrices (of the same dimension))

在这里插入图片描述

线性变换就是:用相同维度的矩阵×变换的点 (前面两行可以看出(x,y)和(x’,y’)是一种线性的关系,所以是线性变换)

符合如下形式的变换,就是线性变换
在这里插入图片描述

齐次坐标(Homogeneous coordinates)

为什么要引入齐次坐标?

先看下面一个变换
在这里插入图片描述

这是一个位移的变换,其(x’,y’)和(x,y)的关系如上式所示,只是通过简单的相加就能得到其变换,那么写成矩阵的形式呢?如下所示
在这里插入图片描述

可以看到,以上的变换并不是一种线性变换,这种变换不能使用之前那种矩阵的形式来得到(x’ = Mx这种形式),缩放以及旋转都可以都是一种线性变换,但是如果将位移这种变换作为一种特殊的情况,那么在应用中会带来很多麻烦。所以这里就要引入齐次坐标用来解决位移变换的这种特殊的情况,将位移变换也能够统一为

x’ = Mx的这种形式

用齐次坐标解决上面的问题(Solution: Homogenous Coordinates)

如何用齐次坐标?给点(point)或者向量(vector)添加一个维度,即w坐标,

2D point = (x,y,1)

2D vector = (x,y,0)

点和向量添加的w坐标不同,原因后面解释,先看怎么用w维度来对图形进行位移变换:
在这里插入图片描述

先看两个等式中间的一个三维矩阵,该矩阵实现了图形的位移的变换,最终(x,y)都加上了位移量t,

接着看三维矩阵,可以对该三维矩阵进行一个划分,其不同部分实现不同的变换效果

1.左上角的二维矩阵
在这里插入图片描述

改变该处的值,能够实现图形的缩放和旋转,该部分就相当于之前旋转和缩放时所使用的二维矩阵

2.右上角的2*1的矩阵

在这里插入图片描述

此处为的值为图形的变换量,因为tx , ty 最终乘点的w分量1,最后就会讲相应的位移量添加到相应的坐标上,此处就是通过齐次坐标来实现位移的线性变换

3.最下面一列
在这里插入图片描述

基本无用,保持001即可

以上就是通过齐次坐标来实现点的线性位移变换,接下来讨论,为什么点和向量的w分量的值不同?

向量代表一个方向,向量即使发生了位移的变换,但是向量的方向仍然不变,并且向量也不会改变,即向量具有位移不变性。所以向量不论进行怎样的位移变换都不应该发生变化,所以向量的w分量为0,则位移矩阵中的位移量就不会添加到向量的x,y坐标上,也就实现了向量的位移不变性
在这里插入图片描述

2D 变换汇总

在这里插入图片描述

逆变换(Inverse Transform)

逆变换如图所示

在这里插入图片描述

先实现了变换M,顺时针旋转并平移,如果要再将图形变回到原来的位置,则就需要使用逆变换

在这里插入图片描述

其中M和M的逆为互逆矩阵

组合变换(Composing Transform)

变换的次序应该遵守 先应用线性变换(缩放,旋转),再应用平移变换,(矩阵从右往左为变换先后顺序), 不同的变换顺序会带来不同的效果,为什么?

因为矩阵的运算并不遵守交换律,即两个矩阵A,B相乘 , AB != BA,所以变换矩阵相乘的次序不同,最后得到的变换效果也就不同

在这里插入图片描述
在这里插入图片描述

根据最终的结果判断是point还是vector,若最终结果w分量为0,则为vector,若w分量不为0,则是point,

point+point得到的结果是两个点的中点,如下:
在这里插入图片描述

齐次坐标中点的x,y坐标为x/w,y/2,根据这个计算point + point 最终的结果就是两点的中点

组合变换

如果有一系列的变换,A1,A2,…An 则可以对这些变换进行组合 得到一个最终的变换矩阵,然后用该矩阵×点即可得到一个最终的变换效果。

在这里插入图片描述

矩阵乘法虽然不具有交换律,但是具有结合律,可以先将前面n个变换矩阵A1,A2,…An进行结合得到一个最终变换矩阵,再乘点(x,y)即可

分解复杂变换(Decomposing Complex Transform)

比如要实现一个变换:绕C点进行宣传

1.先将原点位移到C点

2.进行宣传

3.将原点移动到原来的位置

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49838.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GAMES101-现代计算机图形学入门-闫令琪 - lecture7 着色(Shading) - 课后笔记

着色(Shading) 可视性 / 遮挡 Z - 缓冲 (Z - buffering,深度缓冲) 着色 光照 和 着色 (illunmination & Shading) 画家算法(Painter s Algorithm) 先注明一下&am…

全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门场景问题智能生成应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和…

记一次alertmanager发送邮件失败的处理过程

文章目录 0 说明环境说明阅读说明 1 先验证smtp信息是否正确2 配置alertmanager配置文件并触发告警3 解决 smtp.plainAuth failed: wrong host name4 解决 dial tcp 127.0.0.1:5001: connect: connection refused5 解决 配置文件不对应的问题6 解决configmap跟挂载文件名不对应…

使用telnet客户端发送假冒邮件出现由某某代发怎么解决

使用telnet客户端发送假冒邮件出现由某某代发怎么解决 步骤如下,打码的是邮箱地址 想知道为什么我的有"由某某代发",而别人的没有,都是通过同样的操作在自己的电脑上操作的

奇葩经历之一_Hotmail邮箱无法查看和发送任何邮件

起因——“似乎有其他人使用你的帐户!” 因为IP活动异常,微软通知你账号有风险: 自动处理——“别慌,我们停用你的账户,这样就安全了!” 没有任何通知和提示就直接关闭邮箱功能,从这以后&…

记录项目里面用到的几个给国外邮箱发邮件的代码

一些说明: 这几个都可以正常发邮件,但是免费的每天都会有限制,发多了就会黑名单。。。 最终选择了exchange付费的版本,每天可以发1万条邮件,也不是很贵,基础的32一个月的就可以了 import javax.mail.inte…

JavaMail邮件发送不成功的那些坑人情况及分析说明(巨坑跳出专用姿势)

https://blog.csdn.net/xyw591238/article/details/69530950 前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有详细的中文注解。但是由于JavaMail的机制设置不够完善,特别是异常出错时的参考信息太少,给…

Python通过发邮件通知自己电脑被入侵

我对IT技术有着狂热的追求,虽然现在很渣,但是我有颗钻研的心,例外我还比较喜欢看小说,相信看过最强黑客的人对里面的黑客的技术佩服得无以复加,黑客一般对自己的电脑数据都比较在意,一般都会设置些密码等并…

如何在线伪造邮箱发件人,用任意邮箱发送邮件

今天邮箱收到一封自己域名发过来的邮件,但是询问当事人说并没有发送相关邮件,于是去百度了下,看是否可以伪造发件人,于是找到一个网站 http://tool.chacuo.net/mailanonymous,这个网站可以用任意的邮箱地址发邮件&…

单播通信、主播通信和广播通信

单播 简介 单播(unicast)是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。每次只有两个实体相互通信,发送端和接收端都是唯一确定的。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用…

Qt 之图形(转换)

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲(剪切)、旋转或投影坐标系。绘制图形时,通常会使用。 QTransform 与 QMatrix 不…

全网最全!!Qt实现图片旋转及图片旋转动画的几种方式

实现图片旋转的两种方式 第一种方案 使用 QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图片中心为旋转点,不能设置旋转的中心点,使用如下: QMatrix matrix; matrix.rotate(45);QLabel *Label new QLabel(); Label-…

网页特效——女儿国国王

目录 💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝&…

不使用插件,小程序也能完整的渲染富文本(视频展现,图片自适应)

用过小程序rict-text的帅哥靓女们(说的就是正在看文章的你)都知道,rich-text是无法解析富文本中的video标签的,本文教你如何优雅的在不使用插件的情况下完整的渲染富文本 首先是富文本图片自适应的问题 当我们从后端拿到富文本数…

让AI替你打工?CHATGPT提升开发效率

1 需求分析 提取需求关键点 ChatGPT 通过对需求文档的分析,自动提取关键需求和功能点,方便开发团队更好地理解项目需求。 2 技术方案 大表更新方案 在某支付业务中,有一个大表4000万行数据,使用的 mysqlA5.6 的版本&#xff…

应聘求职自荐信优秀范文5篇

应聘求职自荐信优秀范文篇1 尊敬的领导: 您好!衷心的感谢您在百忙之中翻阅我的这份材料,并祝愿贵单位事业欣欣向荣,蒸蒸日上! 我是哈尔滨理工大学测控技术及通信工程学院________届毕业生,自从今日大学之后,高考后的轻…

如何写出一份优秀的简历和求职信?

写一份优秀的简历和求职信是成功求职的重要一步。 01、简历 突出重点信息:把最重要的信息放在简历的前面,例如您的工作经验和教育背景等。 使用简明扼要的语言:在简历中使用简短的句子和简明扼要的语言,让招聘者能够快速了解您的…

公司计算机程序员英语怎么说,计算机程序员英文求职信范文模板

计算机程序员英文求职信范文模板 Dear Mr. Arline, I would like to be considered as a candidate for the assistant computer programmer position advertised in the Philadelphia Inquirer on April 28, 2004. I’m currently finishing my degree in Computer Science at…

写一份好的求职简历,让面试官对你刮目相看

简历是一块敲门石,但这块敲门石是什么材质的,恐怕见仁见智。那么什么样的简历才能是一块优质敲门石呢,下面的一些个人见解,希望能给正在或正准备寻找更好发展机会的测试工程师们有所帮助。 一、针对在测试行业中已经有所感悟的人&…

【重要】2023年上半年有三AI新课程规划出炉,讲师持续招募中!

2023年正式起航,想必大家都已经完全投入到了工作状态中,有三AI平台今年将在已有内容的基础上,继续进行新课程开发,本次我们来介绍今年上半年的课程计划,以及新讲师招募计划。 2023年新上线课程 我们平台的课程当前分为…