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

OpenGL为什么要用4X4矩阵

目标:用4×4矩阵把1个点从 (2, 3, 4) 平移到 (5, 3, 4)(即x方向+3)


第1步:齐次坐标表示齐次坐标是给普通3D坐标 (x,y,z) 加一个魔法数字 w,变成 (x,y,z,w),让计算机能统一处理移动、旋转、缩放和透视
  • 普通3D坐标(2, 3, 4)

  • 齐次坐标:加一个 w=1 → (2, 3, 4, 1)
    w=1 代表“这是一个点”,w=0 代表“方向”,比如光线)


第2步:构造平移矩阵

要移动 (x+3, y+0, z+0),对应的4×4矩阵是:

解读

  • 左上角3×3部分(1,0,0; 0,1,0; 0,0,1)负责旋转/缩放(这里不变)。

  • 最右边一列 (3, 0, 0, 1) 负责平移x+3)。


第3步:矩阵乘法计算

 

 结果(5, 3, 4, 1) → 去掉 w 就是 (5, 3, 4),平移成功!


Q1:为什么不能直接用3×3矩阵?

  • 尝试用3×3矩阵做平移:

错误! 结果 (14, 3, 4) 不是我们想要的 (5, 3, 4)
原因:3×3矩阵的平移项会乘以 z 值(这里 3×4=12),无法单独加3。

Q2:w=0 时会发生什么?

  • 如果是方向向量 (2, 3, 4, 0)(比如光线方向):

 结果不变! 因为 w=0 让平移失效(方向向量不受位置影响)。

http://www.dtcms.com/a/302874.html

相关文章:

  • 构建 P2P 网络与分布式下载系统:从底层原理到安装和功能实现
  • 分布式高可用架构核心:复制、冗余与生死陷阱——从主从灾难到无主冲突的避坑指南
  • 文件夹隐藏精灵 for Win的文件隐私管理痛点
  • 中国汽车能源消耗量(2010-2024年)
  • 点击事件的防抖和节流
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-42,(知识点:D触发器,D锁存器,工作原理,区别)
  • Java HashMap中的compute及相关方法详解:从基础到Kafka Stream应用
  • C++ 哈希算法、贪心算法
  • CLion 远程 Linux C++开发配置
  • 【数据结构】递归暴力美学:二叉树链式结构的深度解析(含源码)
  • 2025最新Mybatis-plus教程(三)
  • 国内使用git clone下载huggingface
  • 鱼皮项目简易版 RPC 框架开发(一)
  • 设计模式(十五)行为型:命令模式详解
  • 简单工厂模式 Simple Factory Pattern
  • Qt元类型系统(QMetaType)详解
  • 11、Docker Compose 配置Mysql主从(单虚拟机)
  • 树状数组的概念、结构及实现
  • 塔能科技物联运维平台及城市照明市场竞争力分析
  • 国产测试用例管理工具横向评测:DevOps时代如何选择最适合的协作平台?
  • window显示驱动开发—RecycleCreateCommandList
  • Angular 依赖注入
  • 网络 编程
  • 洛谷刷题7.28
  • 基于AFLFast的fuzz自动化漏洞挖掘(1)
  • 【HTTP】防XSS+SQL注入:自定义HttpMessageConverter过滤链深度解决方案
  • 【React Context API 优化与性能实践指南】
  • DBAPI 实现分页查询的两种方法
  • 阿里云Ubuntu 22.04 ssh隔一段时间自动断开的解决方法
  • 【力扣热题100】哈希——两数之和