正射投影

(创建一个正交矩阵)ortho(vec3 eye,vec3 center,vec3 up)

从eye观察点出发朝向center点 up使头顶的方向

我们只需要把物体移到坐标系中心 然后再将整个坐标缩放在[-1,1]之间就行了


最终正交矩阵

透视投影

计算机图形网课老师的办法

我们可以把透视投影的计算分两步
1.计算一个可以把透视投影转换成正射投影的矩阵a
2.将矩阵a和正射投影矩阵相乘得出最终的透视投影矩阵
有通俗的话来说 就是先将透视投影的远平面压成和近平面一样大 这样其内部的点的坐标都发生了改变 这样就可以按照正射投影来算了

首先我们知道 透视投影有几个特点
1.在近平面上的坐标不会发生任何改变
2.在远平面上的坐标z值不会发生改变
3.在中心点的坐标在近远平面上都不会发生改变

先求视景体内坐标经过压缩之后x和y值得变化

坐标转换就是通过相似三角形
n是近平面的深度值

上图就是任意眼坐标为(x,y,z,1)通过了透视投影矩阵 变成了(nx/z,ny/z,unk,1)的坐标 我们让该坐标×一个z也是同一个坐标(nx,ny,unk,z)

那我们通过(x,y,z,1)和(nx,ny,unk,z)之间的关系 除了矩阵p第三行 其他都能确定了
此时我们再利用上面说的 在近平面上的点坐标是不变的 (x,y,n,1)
因为所有视景体内坐标点×矩阵p都一定是(nx,ny,unk,z)
所以 (x,y,n,1)×矩阵p = (nx,ny,unk,z)
那么让 (x,y,n,1)×n 还是同一个点(nx,ny,n2,n) 所以将(x,y,n,1)带去矩阵p
矩阵p第三行×(x,y,n,1)一定是n2
由此可以知道第三行一定没用x和y 所以确定了第三行前两个数(0,0,?,?)
再通过远平面中心点也是不会改变坐标的这一性质(0,0,f,1)(f是远平面深度值)(0,0,f,1)×矩阵p一定也是( (nx,ny,unk,z))
将(0,0,f,1)×f = 0,0,f2,f) 再同上 带入矩阵

计算机图形网课最终得出将透视投影变成正射投影的矩阵结果

n 0 0 0
0 n 0 0
0 0 (n+f) (-nf)
0 0 1 0

网上正常的推导办法

首先我们先知道 Xe是眼空间的坐标 眼坐标(应该是以摄像机为坐标系的空间)
Xp是视锥体内点Xe投射到近平面上的坐标点
Xc是裁剪空间的坐标 Xc和Xp的区别是Xc是真正的在裁剪空间里的点的坐标
Xn是Xc映射到标准化设备坐标的点 也就是Xc/Wc = Xn

通过相似三角形获得Xp和Xe的关系

Yp一样

和上面图形学老师的方法一样算出最后一行0,0,-1,0 并且此时Wc换成了Ze

通过简单计算获得Xp和Xn的关系

y和z一样

获取了Xe和Xn的关系 同时获取到Xc和Xe关系

将Xp和Yp代入上述方程式

他能确定那一部分是Xc是因为 Wc当时换成了-Ze

然后通过这个Xc和Xe的关系可以知道矩阵的前两行


他说由于我们知道z不依赖于x或y值(我也不知道为什么知道不依赖) 所以能写成下面这样


然后通过两个近平面和远平面Zn和Ze的关系 近平面Ze一定是-n 远平面一定是-f 而Zn因为是标准化的坐标 所以近远平面z值一定是1和-1 所以就是将
(-n,-1)和(-f,1)代入就行了 最终得出答案

透视投影矩阵

如果是对称的 则r = -l t = -b

最后一行可以是1也可也是-1 主要在于是左手坐标系还是右手坐标系

关于为什么坐标乘完透视投影矩阵之后w值会发生变化

因为我们的目的是将后面那个远平面压成和近平面一样大 从我们上面也能看到 我们假设近平面中的一个点 经过压索之后x和y肯定会变成x丿和y丿那样 所以我们就是以下面这样为结果去建的矩阵

像这样 y丿和x丿就是最终目标 但是这样我们很难计算 所以我们就都×了z 这个是不影响的 我们的目标就变成了 后面那部分

所以我们矩阵最后很自然w值会发生变化 所以/个w值就行了

OpenGL3.3透视矩阵原理计算相关推荐

  1. 逆透视矩阵原理以及应用(平视图转鸟瞰图、俯视图)

    参考博客:逆透视变化详解 参考论文:Lane Detector 真实世界的景象转换为数字图片的步骤流程如下图: 1.刚体变换 从下图中可以看到,世界坐标为(X,Y,Z)相机坐标为(Xc,Yc,Zc), ...

  2. OpenGL中摄像机矩阵的计算原理

    OpenGL中摄像机矩阵的计算原理 熟悉OpenGL|ES的朋友,可能会经常设置摄像机的view矩阵,iOS中相对较好,已经封装了方向,只需要设置摄像机位置,目标点位置以及UP向量即可.下面先介绍下摄 ...

  3. 信息安全风险评估---矩阵法计算风险

    矩阵法计算风险 假设:有以下信息系统中资产面临威胁利用脆弱性的情况: 共有两项重要财产:资产A1和资产A2: 资产A1面临一个主要威胁T1: 资产A2面临两个主要威胁T2,T3: 威胁T1可以利用资产 ...

  4. 动力学矩阵法计算石墨烯声子谱

    上个学期,学习固体物理,老师让写一个程序来计算石墨烯的声子谱和振动的态密度进行画图.大二的假期里自学了Python但是没有实际自己写过,决定用Python代码来实现这个任务(最重要的是自己能力不行,c ...

  5. 数据透视表 字段交叉_删除数据透视表的计算字段的宏

    数据透视表 字段交叉 Have you ever recorded a macro to remove pivot table calculated fields? Just turn on the ...

  6. 图像拼接之转透视矩阵

    前言 在图像拼接领域中,透视矩阵起着至关重要的作用,网络上关于这一知识的介绍已经很多,本人在此稍加总结和归纳一下,也方便自己今后查找一些结论性的要点(别人的再怎么好,还是自己的看起来舒服:)),接下来 ...

  7. 计算机原理 对口单招,对口单招计算机原理计算专题练习-20210622114415.pdf-原创力文档...

    对口单招计算机原理计算专题练习 一.数制转换类 1.十六进制数 1000 转换成十进制数是 ______ . A .4096 B .2048 C .1024 D . 8192 2 .十进制数 25.1 ...

  8. 矩阵乘法计算速度再次突破极限,我炼丹能更快了吗?| 哈佛、MIT

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI n阶矩阵乘法最优解的时间复杂度再次被突破,达到了. 按定义直接算的话,时间复杂度是O(n³). 光这么说可能不太直观,从图上可以看出,n足够 ...

  9. 【数理知识】《数值分析》李庆扬老师-第8章-矩阵特征值计算

    第7章 回到目录 第9章 第8章-矩阵特征值计算 8.1 特征值性质和估计 8.1.1 特征值问题及其性质 定理1 8.2 幂法及反幂法 8.3.1 豪斯霍尔德 (Householder) 变换 8. ...

最新文章

  1. pytorch版本的bert使用笔记
  2. iOS开发之UIMenuController的基本使用
  3. leetcode 反转字符串
  4. 209计算机考试题库,计算机考试题库:计算机考试模拟练习题(209)
  5. 按照秒数延时打印、运行
  6. 认认真真推荐几个机器学习和Python类的公众号
  7. 计算未来轻沙龙 | 当深度学习遇上归纳推理,图神经网络有多强大?
  8. jQuery使用详解
  9. 手机应用在线打包url
  10. 码农必读的 7 本计算机书
  11. 架设流媒体服务器[转]
  12. Linux kernel 4.x中的min和max宏
  13. Sublime Text 3.1 3170正式版+Patch注册机
  14. sql关键字_SQL关键字
  15. python输出文本文件_Python进阶02 文本文件的输入输出
  16. kuangbin专题十二 基础DP1【从入门到熟练】【10题】
  17. MyBatis:CRUD操作及配置解析
  18. 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作
  19. PDF加密如何加密?分享两个方法给你
  20. IntelliJ IDEA 2018.2 x64激活

热门文章

  1. Codeforces Round #620 (Div. 2) D 贪心 revers 的妙用 编程思维的降维打击
  2. 关于我一不小心拆了个USB2.0拓展坞这件事——浅谈HS8836A芯片
  3. 捷通华声与清华海峡研究院联合成立人工智能研究中心 张钹院士出任首席科学家...
  4. 自动化测试 | 解决方案聚焦:如何使用PXI仪器进行高级数字测试
  5. JavaScript 基础知识点
  6. android activity 切换屏幕方向时的生命周期
  7. 华为鸿蒙os视频馀承东,布局智慧家庭:荣耀首款搭载华为鸿蒙OS智慧屏正式发布...
  8. 配置windows iis
  9. Union can only be performed on tables with the compatible column types
  10. 微型计算机的性能指标