计算机图形学笔记(三):变换进阶
2020-08-05 19:48
881 查看
目录
视频地址:https://www.bilibili.com/video/BV1X7411F744?p=4
三维变换
任意三维物体的旋转
四元数
四元数是简单的超复数。 复数是由实数加上虚数单位 i 组成,其中i^2 = -1。 相似地,四元数都是由实数加上三个虚数单位 i、j、k
组成,而且它们有如下的关系: i^2 = j^2 = k^2 = -1, i^0 = j^0 = k^0 = 1 , 每个四元数都是
1、i、j 和 k 的线性组合,即是四元数一般可表示为a + bi+ cj + dk,其中a、b、c 、d是实数。
对于i、j、k本身的几何意义可以理解为一种旋转,其中i旋转代表X轴与Y轴相交平面中X轴正向向Y轴正向的旋转,j旋转代表Z轴与X轴相交平面中Z轴正向向X轴正向的旋转,k旋转代表Y轴与Z轴相交平面中Y轴正向向Z轴正向的旋转,-i、-j、-k分别代表i、j、k旋转的反向旋转。
观测变换
Viewing transmation
学习目的:为了弄清楚 三维->二维 经历了那些变换
视图/摄影机变换
什么是视图变换
与拍照类比:
- 物体(motion)
- 角度、位置(view)
- 姿势(projection)
MVP变换
相机参数(三个向量):
- Position e
- gaze direction g
- up direction t
举例:把相机放在标准位置(0,0)上
之前在对物体做变换的时候,是先旋转后平移;
而对摄像机做变换,需要先平移后旋转
要求摄影机的旋转很困难(难以通过理解来把它直接地写出来),可以求它的逆变换,即:
- 把(0,0,1)(z轴)旋转到g的位置处
- 把(0,1,0)(y轴)旋转到t的位置处
- 把(1,0,0)(x轴)旋转到g叉乘t的位置处
由于旋转矩阵是正交矩阵,所以它的逆矩阵就是它的转置
投影变换
正交投影
正交投影不会产生“近大远小”,多用于工程制图
以上变换写成矩阵的形式:
缺陷:
- 在右手系下用远近来标识物体在z轴上的距离,与常识相违背(远的数值小,近的数值大)
- FIY: OpenGL就用了左手系
透视投影
人眼的成像方式,也是图形学中用得最广泛的投影
为了透视投影,需要把距离摄像机远的点集挤压
挤压遵循原则:
- z轴上的点不变
- 被挤压点集的中心点不变
从侧面看,可以看到相似三角形
远平面的中心点也满足不变的条件,将它代入:
相关文章推荐
- C/C++进阶学习笔记
- 学习u3d笔记(三)u3d中对象位置变换
- Spring Boot学习进阶笔记(二)-JdbcTemplate访问数据库
- [Python入门及进阶笔记]Python-基础-字典小结
- Spring4 实战笔记(2):装配bean的进阶知识
- GDI+学习笔记3-坐标系和坐标变换
- 011 MATLAB进阶笔记:告别for循环,走向新巅峰
- [Python入门及进阶笔记]Python-基础-列表及列表解析小结
- Spring Boot学习进阶笔记(三)-Spring-data-jpa
- 关于原型。闭包的学习计划(JavaScript高级进阶)js高级第一天笔记
- Swift进阶笔记(一)
- Java进阶开发课堂笔记之开发登录功能
- PHP学习笔记 - 进阶篇(11)
- Redis学习笔记(九) 命令进阶:Pub/Sub(发布/订阅)操作
- Intent进阶 和 Intent-filter 学习笔记
- C语言进阶要点笔记1
- python进阶学习笔记(一)——高阶函数
- LearnOpenGL学习笔记5:变换
- matlab学习笔记(五)---空域变换增强-直接灰度调整
- mysql学习笔记之模糊查询(进阶三)