目录

二维变换

线性变换

缩放变换

反射变换

切变

旋转变换

总结:线性变换

齐次坐标

平移变换

仿射变换

逆变换

变换的组合

变换的分解

补充

三维空间的变换

齐次坐标(三维)

三维变换

缩放

平移

旋转

任意旋转

观测变换

视图变换

投影变换

正交投影

透视投影


主要内容:

  1. 二维空间的变换:旋转 缩放 切变
  2. 齐次坐标的概念
  3. 把不同变换组合到一起,形成新的变换
  4. 三维空间中的变换
  5. 观测变换:视图变换 投影变换

二维变换

线性变换

缩放变换

   

反射变换

切变

旋转变换

旋转(默认:绕原点 且 逆时针方向旋转)

总结:线性变换

平移变换不是线性变换

若能写成如下的形式,则为线性变换,上述的几种变换,都是线性变换:

齐次坐标

引进齐次坐标:平移变换的特殊性

平移变换

--- 不是一个线性变换

引入齐次坐标

点和向量在齐次坐标中的表示:

(x,y,w)表示的所有二维点 都是(x/w,y/w,1)

仿射变换

此形式的变换都为仿射变换(即线性变换和平移变换合在一起)

所有的放射变换都可以写成齐次坐标的形式:

逆变换

变换回去的方法是乘以逆矩阵

逆矩阵*原矩阵=单位矩阵

变换的组合

先旋转后平移(从右到左应用)

A1...An 都是3x3的矩阵,既可以从右向左应用 也可以把An到A1先进行乘积,合成一个3x3矩阵。

变换的分解

问题:如何沿着任意一个点A旋转?

答:进行变换的分解,即先平移到原点,在绕原点旋转,再平移回去。

补充

在旋转变换中,根据上述推导可得旋转矩阵的逆矩阵==转置矩阵。

(用途:在求旋转矩阵的逆矩阵时,只需求正向旋转矩阵,然后求转置即可)

在数学上,若矩阵的逆矩阵==转置矩阵,则该矩阵是正交矩阵。

三维空间的变换

齐次坐标(三维)

先线性变换再平移

左上角的3x3矩阵代表线性变换  最后一行是固定的0001  右边的3x1矩阵代表平移量

三维变换

缩放

平移

旋转

分别绕 x y z旋转

y=z

z=-y  所以旋转矩阵会有不同

z=x

任意旋转

绕轴n旋转任意角度a   先平移到坐标轴 -> 然后旋转 -> 然后平移回去

罗德里格旋转公式:

观测变换

  1. 视图变换(相机变换)
  2. 投影变换 --正交投影 透视投影

MVP变换:Model View Projection

视图变换

约定:相机在原点(0,0,0)往-z方向看,且向上方向是y。

如何变换? 先将点移到原点 然后将g旋转到-Z方向 然后将t旋转到Y方向 g x t旋转到X

  • 先平移

  • 后旋转

由 g t gxt旋转到 -Z Y X有些困难 所以考虑逆变换 即由X Y Z 旋转到。。。

旋转矩阵是正交矩阵 旋转矩阵的逆为转置

所以综上

  • 小总结

模型变换:变换物体的位置。

视口变换:摄像机进行变换,周围物体跟着变换。

所以 模型变换和视口变换都应用在了物体上,所以经常统称为模型-视图变换。

投影变换

正交投影  透视投影

正交投影不会有近大远小的现象。

透视投影会有近大远小现象。

正交投影

方法:

  1. 将z轴坐标忽略不计,将图像放到xy平面上。
  2. 将图像放到-1到1的矩形上。

更规范的方法:

  1. 先把长方体的中心移到原点。(平移)
  2. 把xyz的轴都拉成-1到1。(缩放)

(看的时候沿着-z方向 所以在z轴方向上,近大于远。)

透视投影

方法:

  1. 将左边的形体挤压成长方体。
  2. 按照正交投影方式进行投影。

挤压过程中 近平面和远平面的z值不变。

挤压矩阵推导过程:

1. 根据相似三角形

2. 根据近平面上所有点的坐标不变。

3. 远平面中心点坐标不变。

结果

问题:

对于老师在最后留下的问题,z坐标在n ,f之间的点在挤压过程中会怎么变。

图形学 Lecture 2 Transformation(变换)相关推荐

  1. [Games101] Lecture 03-04 Transformation

    Transformation 2D 线性变换 线性变换:变换能够用矩阵乘法得到 可以说,Linear Transformation = Matrices (of the same dimension) ...

  2. 计算机图形学基础1——MVP变换

    参考链接: 线性变换 计算机图形学入门教程 视图变换 图形学随笔:MVP变换-视图变换 计算机图形学笔记-专栏 View/Camera Transformation视图变换 MVP变换: 我们知道我们 ...

  3. 计算机图形学笔记(观测变换、模型变换、视图变换、投影变换、视口变换)

    计算机图形学笔记(观测变换.模型变换.视图变换.投影变换.视口变换) 目录 计算机图形学笔记(观测变换.模型变换.视图变换.投影变换.视口变换) 一.简介 1.模型变换(Model transform ...

  4. OpenGL transformation变换的实例

    OpenGL transformation变换的实例 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #i ...

  5. Games101现代图形学入门Lecture 4: Transformation Cont知识点总结

    视频链接:https://www.bilibili.com/video/BV1X7411F744?p=4 课程主页链接:http://games-cn.org/intro-graphics/ 课件PP ...

  6. Games101现代图形学入门Lecture 3: Transformation知识点总结

    视频链接:https://www.bilibili.com/video/BV1X7411F744?p=3 课程主页链接:http://games-cn.org/intro-graphics/ 课件PP ...

  7. 计算机图形学基础知识-三维变换

    原文: http://blog.sina.com.cn/s/blog_557d254601017gvz.html 变换是 计算机图形学中重要概念,包括最基本的三维变换,即 几何变换. 投影变换. 裁剪 ...

  8. 理解计算机3D图形学中的坐标系变换

    要谈坐标系变换,那么坐标系有哪些呢?依次有:物体坐标系,世界坐标系,相机坐标系,投影坐标系以及屏幕坐标系.我要讨论的就是这些坐标系间的转换.      这些坐标系不是凭空而来,他们都是为了完成计算机3 ...

  9. 图形学笔记(四) 数学变换

    数学变换 点和坐标 什么是点? 注意区分图形学中的点与图论中的点:图论中的点重视点与点的拓扑结构,而不关心点的坐标,而图形学中的点没有严格限制拓扑结构,且及其关注点的坐标. 在几何学中,点是最简单的形 ...

最新文章

  1. python多进程_python语法:多进程
  2. tomcat java环境变量配置
  3. 关于 SAP WebIDE 不支持 ES6 语法的问题
  4. 程序员过关斩将-- 工作好多年可能还未真正了解接口和抽象类
  5. 参数化的JUnit测试
  6. 祖孙俩人是什么关系_一个人生活也挺好,为什么还需要亲密关系?
  7. 小白视角来看传说中的卷积神经网络
  8. 华为达芬奇架构到底好在哪里?
  9. ASP.NET程序中常用的三十一种代码
  10. Android GsmCellLocation.getCellLocation返回NULL
  11. NSIS中文用户手册下载(免费下载)
  12. win10进不去计算机配置,Win10电脑系统设置打不开的解决方法
  13. gabor matlab pudn,matlab-Face-recognition 基于Gabor特征提取和人工智能的人脸检测系统 271万源代码下载- www.pudn.com...
  14. 各种激活函数求导公式
  15. Android developer 阅读笔记--应用资源概览
  16. 八、python爬虫伪装 [免费伪装ip伪装请求头]
  17. win用户计算机批量添加用户,win10系统巧用cmd命令快速创建新账户的技巧
  18. tc ebpf sample - tethering offload on linux pc
  19. matlab信息隐藏和提取,使用matlab进行图像信息隐藏和提取
  20. C++课程设计快递业务管理系统实验报告

热门文章

  1. Matlab RGB与HSV
  2. 网卡清空缓存命令_WIN10如何清除网络缓存图文教程
  3. NGINX+DNS配置代理服务器
  4. 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(一)--clickhouse简介
  5. 国行版 P30 价格公布,除了拍照逆天,这些功能也很强...
  6. Jsp学习笔记——第二天
  7. Excel如何将数据重复指定次数
  8. php 3d模型,3D模型如何使用?总结3D模型实例用法
  9. 香肠派对显示服务器断开怎么解决,《香肠派对》这些bug都会解决的 匹配自动取消如何快速解决...
  10. linux下的ftp登陆用户名和密码,Linux下实现ftp普通账号和vip账号限速