【计算机图形学入门】笔记3:变换Transformation(二维与三维)

news2024/11/14 3:59:14

第三章.Transformation变换(二维与三维)

    • 1.为什么要学习变换?
    • 2.变换的几种形式
      • 1.缩放
      • 2.相对于y轴翻转
      • 3.Shear Matrix 切片
      • 4.旋转
    • 3.齐次坐标
      • 1.平移变换
      • 2.齐次坐标的引入
      • 3.使用齐次坐标表示上述变换
    • 4.组合变换
    • 5.分解变换
    • 6.三维空间中的变换
      • 1.三维空间中的点和向量
      • 2.三维空间中的齐次坐标

1.为什么要学习变换?

1.很多动画都是由各种各样的变化合成在一块的

2.摄像:将三维空间中的场景变为二维,也就是投影

2.变换的几种形式

1.缩放

请添加图片描述

非均匀缩放

请添加图片描述

2.相对于y轴翻转

请添加图片描述

3.Shear Matrix 切片

请添加图片描述

只有水平方向发生了移动,竖直方向并没有发生移动。也就是y·=y;

在最上面那条线x移动了1+a;

中间那部分移动了a*y个距离点;

4.旋转

1.使用一个特殊的点(1,0)推出A和C的值

请添加图片描述

2.同理使用(0,1)推出B和D的值

请添加图片描述

3.以上的变换都称为线性变换

请添加图片描述

3.齐次坐标

1.平移变换

请添加图片描述

无法将这个变换写为矩阵相乘的形式,也就是说平移不是线性变换,而是仿射变换
请添加图片描述

那么有没有办法把所有的变换用统一的格式来运算?

2.齐次坐标的引入

1.对于任意一个点,我们写为(x,y,1)的竖向矩阵;

2.对于任意一个向量,我们写为(x,y,0)的竖向矩阵;

那么平移变换就可以使用相乘的形式来进行运算:

请添加图片描述

疑问:为什么对向量来说最后一位是0呢?

因为向量具有平移不变性,我们需要保证向量的方向不发生变换

3.一个点加另一个点表示的是这两个点的中点。

请添加图片描述

3.使用齐次坐标表示上述变换

1.齐次坐标形式
请添加图片描述
请添加图片描述

2.使用齐次坐标表示2D图片的缩放,旋转,平移

请添加图片描述

4.组合变换

请添加图片描述

1.复杂的变换可以通过一系列简单的变换得到;

2.这些简单变换是分先后顺序的,先平移后旋转得到的结果是错误的。

请添加图片描述

先旋转后平移得到的是想要的结果。

请添加图片描述

运算的顺序:从右到左

请添加图片描述

不论有多少复杂的操作,到最后都可以以一个3*3矩阵的形式去乘以xyz。

请添加图片描述

5.分解变换

1.先将没有在原点的图形移动到原点

2.然后做旋转操作

3.最后再平移回去

请添加图片描述

6.三维空间中的变换

1.三维空间中的点和向量

请添加图片描述

2.三维空间中的齐次坐标

请添加图片描述

组合变换时依然是先应用线性变换再平移。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT 系统学习 day03 了解各种控件,文件操作,消息框,windows应用界面的 生成菜单栏, 状态栏,中心部件,工具栏,

1. 控件, 旋钮 ,进度条, 我也不知道叫啥, 相关的代码; 首先是函数 1.旋钮函数 (槽函数都有说明)(Dial) ui->dial->setRange(0,100);//设置旋钮的范围ui->di…

Three.js一学就会系列:01 第一个3D网站

文章目录前言一、Three.js是什么?官网官网示例效果尝鲜二、使用步骤1.引入three.js库2.使用方法创建一个场景创建一个透视摄像机将渲染器添加到页面上创建一个立方体渲染场景立方体动起来效果总结前言 最近开始入坑前端3D建站,跟大家一起慢慢深入three.…

Android 面试拒收Offer篇,这样做对吗?

作者:如梦 如梦朦胧 朋友们的劝说下,有了换工作的躁动,然后投了某度的Android岗位,本以为像我这种非211、985没工作经验的渣渣只能被直接pass,结果却意外的收到了电话,真是受宠若惊.经过电面,技术三面,然后就是等通知到最后拿到了OFFER,如梦一般,真是挺…

性能优化:Redis使用优化(1)

参考资料: 《Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文》 相关文章: 《Redis:内存淘汰机制》 《Redis:持久化RDB与AOF》 《Redis:主从复制》 写在开头:本文为学习后的总…

Spring中事务失效的场景

文章目录1 抛出检查异常导致事务不能正确回滚1.1 异常演示1.2 解决办法2 业务方法内自己 try-catch 异常导致事务不能正常回滚1.1 异常演示1.2 解决办法3 aop切面顺序导致事务不能正确回滚3.1 异常演示3.2 解决办法4 非 public 方法导致事务的失效4.1 异常演示4.2 解决办法5 父…

深度学习-全卷积神经网络(FCN)

1. 简介 全卷积神经网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之…

【目标检测】【DDPM】DiffusionDet:用于检测的概率扩散模型

文章目录摘要一、Introduction二、相关工作三、方法1.准备工作2.架构3、训练4.预测过程四. 实验1.训练策略2.main property3.消融实验五、代码分析1.测试 demo.py2.训练 train-net.py总结摘要 我们提出了扩散det,一个新的框架,将目标检测作为一个从噪声…

OpenGL基础程序结构

用OpenGL编写的程序结构类似于用其他语言编写的程序。实际上,OpenGL是一个丰富的三维图形函数库,编写OpenGL程序并非难事,只需在基本C语言中调用这些函数,用法同Turbo C、Microsoft C等类似,但也有许多不同之处。   …

[附源码]Python计算机毕业设计Django校园招聘系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

功能测试求职难,现在不懂自动化测试连外包都进不去了?

功能测试求职难 最近因为公司政策原因,部分外包被裁员,其中不乏能力还不错,工作也挺踏实的,比较可惜,为了帮助他们尽快找到下家,我这边也开始帮他们关注招聘情况,发现一个挺让我意外的事情。在…

Java中CAS详解

一、什么是CAS 什么是CAS机制 CAS机制是一种数据更新的方式。在具体讲什么是CAS机制之前,我们先来聊下在多线程环境下,对共享变量进行数据更新的两种模式:悲观锁模式和乐观锁模式。 悲观锁更新的方式认为:在更新数据的时候大概率…

Android 动画和过渡

Android 动画和过渡 (一) 动画 JetpackCompose提供了强大且可扩展的API,可以轻松地在应用程序的UI中实现各种动画。下面描述了如何使用这些API以及根据动画场景使用哪些API。 动画在现代移动应用程序中至关重要,以实现流畅和可理解…

【语音处理】基于自适应差分脉冲编码调制(ADPCM)的实现研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

目标检测算法——安全帽识别数据集(附下载链接)

🎄🎄近期,小海带在空闲之余收集整理了一批安全帽识别数据集供大家参考。 整理不易,小伙伴们记得一键三连喔!!!🎈🎈 目录 一、安全帽佩戴数据集 二、SHWD安全帽佩戴检测…

五、分页总结

文章目录一、分页的几种方式1、使用关键字实现分页(limit)2、通过 RowBounds 类实现分页查询3、使用分页插件实现分页分页的作用:在进行查询时如果数据量庞大的话会造成大量的内存压力,让程序卡顿。这时候使用分页减少数据的处理量…

基于SpringBoot编写starter,自己写个类库引入使用

我们在做springboot项目的时候经常会创建项目后先引入各种starter,比如操作数据库的mybatis-plus-boot-starter,数据源的druid-spring-boot-starter等等。引入starter的好处就是可以将第三方的依赖库快速的整合到我们自己的springboot项目中,…

​最新Xcode9 无证书真机调试流程

写在前面 公司分配了新的测试机,证书99台名额已满,所以上网找教程,学习了一下如何使用Xcode无证书进行真机调试。​ 一. 创建证书​ 1. 运行Xcode, Xcode–》Preference–》添加账号(能在appstore下载的账号)​ 2. 选中刚才添加的AppleID–…

JSP 社区联动系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 社区联动系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发,数据库为Mysql,使用ja…

鸿蒙harmony天气预报Demo

1.准备工作 1.1创建项目 sdk为6版本,所以使用华为的远程模拟器p40即可。 1.2准备图片资源 这里把天气预报用到的天气提示的图片全放在资源目录下的media文件下。 具体资源在github仓库已包含,自行前往。 1.3配置文件 接着是修改配置文件&#xff0…

[附源码]Python计算机毕业设计SSM家教管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…