当前位置: 首页 > article >正文

浅析正交投影矩阵和透视投影矩阵的推导

先上矩阵的内容。在opengl中,分别通过glOrtho函数和glFrustum函数得到正交投影矩阵和透视投影矩阵。

glOrtho 函数描述生成正交投影矩阵。 (、 、 ) 和 (、 、 ) 参数分别指定近剪裁平面上映射到窗口左下角和右上角的点,假定眼睛位于 (0、0、0) 。 far 参数指定远剪裁平面的位置。 zNear 和 zFar 可以是正数或负数。 下图显示了相应的矩阵。

其中

在往NDC坐标系转化时,要求z在近裁剪面位置时,被转换为-1;而在远裁剪面位置时,转换为1

这就不难推导出以上的六个参数。

glFrustum 函数描述生成透视投影矩阵。 (、 、 zNear) 和 (、 、 zNear) 参数分别指定映射到窗口左下角和右上角的近剪裁平面上的点,假设眼睛位于 (0,0,0) 。 zFar 参数指定远距剪切平面的位置。 zNear 和 zFar 都必须为正数。 下图中显示了相应的矩阵。

 

这里一共有六个参数需要推导。其中前四个参数,通过相似三角形的比例关系得出。

参数C和D的推导,也是要求z在近裁剪面位置时,被转换为-1;而在远裁剪面位置时,转换为1。这就可以通过列一个二元一次方程组,求解出来。

参考链接:

glOrtho 函数 (Gl.h) - Win32 apps | Microsoft Learn

glFrustum 函数 (Gl.h) - Win32 apps | Microsoft Learn

若您还有什么疑惑之处,欢迎在下方留言评论!


http://www.kler.cn/a/372438.html

相关文章:

  • 【系统架构设计师】真题论文: 论软件测试中缺陷管理及其应用(包括解题思路和素材)
  • Python|Pyppeteer实现自动化获取reCaptcha验证码图片以及提示词(29)
  • [C/C++]智能指针是什么?实现原理是什么?
  • 选择FPGA开发,学历是硬性要求吗?
  • 突发!GitLab将停止对中国区用户提供GitLab.com账号服务
  • 【Python】基础语法介绍
  • OpenJudge:找和为K的两个元素
  • Flutter 自定义组件继承与调用的高级使用方式
  • 重构代码之提取子类
  • 聚水潭商品信息集成到MySQL的高效解决方案
  • 蓝海创意云入选中国夏衍电影学会工业与科技影视专业委员会成员单位
  • PyTorch distributions模块介绍
  • Mybatis-09.基础操作-删除(预编译SQL)
  • 从零学习大模型(八)-----P-Tuning(上)
  • 【大数据学习 | kafka】kafka的shell操作
  • 【数据库】数据库管理(下)存储过程 触发器 慢查询日志 备份与恢复
  • 在vue项目中,如何写一个自定义指令
  • 【JavaScript】JavaScript 进阶-3-编程思想构造函数原型(更新中)
  • python 实现了一个简单的五子棋游戏
  • 三季度业绩获多家机构首肯,“听劝的”B站终于“起死回生”?
  • Python的协程与传统的线程相比,是否能更有效地利用计算资源?在多大程度上,这种效率是可测量的?如何量化Python协程的优势|协程|线程|性能优化
  • 【系统设计】深入理解HTTP缓存机制:从Read-Through缓存到HTTP缓存的交互流程
  • 小红书小眼睛低于100的进
  • 视频协议与封装格式
  • 题目:输入某年某月某日,判断这一天是这一年的第几天?
  • 【Qt】QProcess用法小结