《游戏引擎实现原理》8.3 变换复合与逆变换
把平移、旋转、缩放按固定顺序复合,就是每个物体的世界变换。本节给出 helio 的 TRS 复合与分量逆变换实现,用 vitest 断言 M 乘 M⁻¹ 约等于单位阵并写出实测误差,并说明非均匀缩放下法线为什么要用 R 乘 S⁻¹ 来变换。
tag
把平移、旋转、缩放按固定顺序复合,就是每个物体的世界变换。本节给出 helio 的 TRS 复合与分量逆变换实现,用 vitest 断言 M 乘 M⁻¹ 约等于单位阵并写出实测误差,并说明非均匀缩放下法线为什么要用 R 乘 S⁻¹ 来变换。
同一组 16 个数字,按行主序读和按列主序读会得到两个不同的变换。本节讲清主序、手性与转置陷阱,说明 WebGPU / WGSL 的列主序约定与 CPU 到 GPU 的统一口径做法,给出 helio 可编译的列主序 Mat4,并用实测数字展示同一矩阵两种解释下的结果差异。
向量在引擎里怎么存,决定了批量运算能跑多快。本节把三维向量放进 Float32Array,对照 AoS 交错布局与 SoA 分离布局的字节分布,给出零分配的 addInto 约定,以及可编译的 Vec3Store 与 Vec3SoA 实现和实测求和结果。
精选 LeetCode 数学类 8 道必刷题:质数计数、快乐数、回文数、进制转换、整数反转、Pow(x,n) 快速幂、最大公约数、阶乘后的零,覆盖面试高频的数学建模与数论技巧。
从向量与矩阵出发,深入推导图形学核心变换链:Model-World-View-Clip-NDC-Screen、LookAt矩阵、正交与透视投影、四元数插值、齐次坐标及法线变换。附C++与GLSL代码实现。