尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

《C++从零打造渲染器》学习笔记 第1讲(上):3D数学基础(上)

《C++从零打造渲染器》学习笔记 第1讲(上):3D数学基础(上)
📅 发布时间:2026/7/10 2:19:05
《C++从零打造渲染器》学习笔记 第1讲(上):3D数学基础(上)本教程基于B站图形学大佬 发财学长 制作的 C++从零打造渲染器 系列视频。写这篇文章的目的主要是作个人学习笔记,如果这份笔记能帮到他人,本人不胜荣幸

第1讲(上):3D数学基础(上)


说明:本教程基于B站图形学大佬 发财学长 制作的 C++从零打造渲染器 系列视频。写这篇文章的目的主要是作个人学习笔记,如果这份笔记能帮到他人,本人不胜荣幸

多数内容在 初高中数学 高等数学 线性代数 课程已经介绍很详细了,这里不过多解释。本文章主要讨论这些课程未覆盖到,与图形学强相关的知识点

视频链接:【C++从零打造渲染器】第1讲(上集):3D数学基础(线性代数、向量、行列式、旋转矩阵、缩放矩阵)

视频链接:【C++从零打造渲染器】第1讲(下集):3D数学基础(平移变换、坐标系间的转换、世界坐标系、世界变换矩阵)


坐标系

二维坐标系

三维坐标系:左手系 右手系

极坐标系

球面坐标系


向量

向量矩阵形式:行向量 列向量(常用)

运算:加,减,数乘,取模,单位化,点乘,叉乘

向量混合积=向量构成平行六面体体积=向量构成行列式

\[\mathbf{a} \cdot (\mathbf{b} \times \mathbf{c}) = \begin{vmatrix} a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \\ c_1 & c_2 & c_3 \end{vmatrix} \]


行列式

克拉默法则

假设有一个包含 \(n\) 个未知数、\(n\) 个方程的线性方程组:

\[\begin{cases} a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n = b_1 \\ a_{21}x_1 + a_{22}x_2 + \dots + a_{2n}x_n = b_2 \\ \dots \\ a_{n1}x_1 + a_{n2}x_2 + \dots + a_{nn}x_n = b_n \end{cases} \]

将其写成矩阵形式 \(A\mathbf{x} = \mathbf{b}\)。

第 \(j\) 个未知数 \(x_j\) 的值为:

\[x_j = \frac{|A_j|}{|A|} \]

  • \(|A_j|\):将系数矩阵 \(A\) 的第 \(j\) 列替换为常数向量 \(\mathbf{b}\) 后,得到的新矩阵的行列式。

几何变换

  • 任何一个矩阵变换都可以写成矩阵的形式

  • 几何变换的逆,就是矩阵的逆

缩放

例1:把下面的图形放大\(5\)倍

2026-07-04-10-36-07-image

例2:沿着\(x\)轴放大\(3\)倍,沿\(y\)轴缩小\(\frac{1}{3}\)

2026-07-10-01-17-38-image

变换矩阵:\(\begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix}\) 逆变换:\(\begin{bmatrix} \frac{1}{s_x} & 0 \\ 0 & \frac{1}{s_y} \end{bmatrix}\)

旋转

例1:在二维平面中,把P点旋转\(\theta\)度

2026-07-10-01-26-10-1783617968728428330

变换矩阵:\(\begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}\)逆变换:\(\begin{bmatrix} \cos\theta & sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix}\)

例2:在三维空间中,把P点绕Z轴旋转\(\theta\)度

2026-07-10-01-29-48-image

绕z轴旋转\(\begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}\)

绕x轴旋转\(\begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix}\)

绕y轴旋转\(\begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix}\)

旋转方向遵循右手螺旋法则

例3:把P点绕X轴旋转\(\alpha\)度,再绕Y轴旋转\(\beta\)度,再绕X轴旋转\(\gamma\)度

其实就是左乘三个旋转矩阵

变换矩阵:\(\begin{bmatrix} \cos\gamma & -\sin\gamma & 0 \\ \sin\gamma & \cos\gamma & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} \cos\beta & 0 & \sin\beta \\ 0 & 1 & 0 \\ -\sin\beta & 0 & \cos\beta \end{bmatrix}\begin{bmatrix} \cos\alpha & -\sin\alpha & 0 \\ \sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \end{bmatrix}\)

\(\alpha,\beta,\gamma\)合称为欧拉角

欧拉角既可以表示变换,也可以表示朝向

朝向和变换本质是一回事的,朝向的意思就是对图形原始朝向做了什么变换

相关新闻

  • 泰格豪雅中国官方售后服务中心|地址与客服服务热线权威信息通知(2026年7月最新) - 亨得利官方服务中心
  • 提示词工程(Prompt_Engineering)实战指南
  • 基于传统 Spring Boot 接入 AI:知识、组件与环境准备方案

最新新闻

  • MATLAB R2025b安装避坑指南:系统补丁、GPU加速与静默失败点
  • STC89C51 定时器2 16位自动重装模式配置:3步核心代码实现1ms精准定时
  • 2026年7月最新苏州积家官方售后客服服务电话及地址网点大全 - 积家官方售后服务中心
  • C/C++ assert 宏实战:5个常见调试场景与 NDEBUG 开关性能对比
  • 哔咔漫画下载器:打造个人漫画图书馆的完整解决方案
  • AI多模型策略:避免单一依赖,提升系统韧性与成本效益

日新闻

  • OpenClaw本地化部署:xParse文档解析引擎实战指南
  • 蓝牙 5.4 协议栈深度解析:从 HCI 到 L2CAP 的 7 层数据流
  • PyTorch nn.CrossEntropyLoss 实战:3种权重设置与标签平滑对比(附代码)

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号