概念页
直线与平面求交
Line & Plane Intersections
本页收录 RTR4 第 22.15~22.16 节的基础几何工具:二维直线/光线/线段求交(垂直点积法与无除法的早期拒绝法)、三维直线求交与异面直线最近点,以及三个平面的交点公式(可用于求 k-DOP 等平面围成凸体的角点)。这些在游戏中常用于射线检测、二维几何、碰撞与包围体构建。
二维:垂直点积法(22.15.1 节)
两直线 、。利用垂直向量 ,两边分别点乘 、 消去另一个参数:
时平行。有效范围:直线任意;光线 ;方向归一化、长度 的线段 、;若令 等端点差,则 。
二维:无除法线段测试(Antonio)
令 ,,,,,,则 ,; 时共线。由于分母相同且不需要显式的 ,用比较代替除法: 时若 或 则不相交; 时若 或 则不相交;对 同样测试,都通过则相交。比上一方法更快(更多比较和早期拒绝,避免除法),有整数版本源码。
三维直线(22.15.2 节)
三维中用叉积()代替垂直点积:两边减去原点后分别叉乘 、,再点乘 ,得
分母为 0 表示平行;两直线异面(不共面)时,、 给出两条直线上最近点的位置。当作线段使用时检查 、。健壮处理特殊情况的完整解法与源码见 Rhodes。
三平面交点(22.16 节)
三个平面以单位法线 和平面上任一点 给出,唯一交点
分母是三法线的行列式,有两个及以上平面平行时为零。平面以隐式形式 给出时,取离原点最近的点最便宜:沿法线从原点发射光线 与平面相交得 ,即 (法线须为单位长度, 是原点到平面的负垂直距离)。用合适的平面组合代入,可求出由 k 个平面组成的 k-DOP 等凸多面体的角点。
出处
- realtime_rendering_4ed.pdf 第 22 章 Intersection Test Methods
相关页面
游戏数学相交测试基础与分离轴Intersection Test Fundamentals & Separating Axis相交测试判断两个对象是否相交(包含、边界相交或分离),有时还需要最近交点或穿透深度与方向,是碰撞检测、视锥剔除、拾取和光线追踪的基础。本页汇总 RTR4 第 22 章的通用工具:光线与曲面的表示、常见包围体定义(AABB、OBB、k-DOP、凸多面体、胶囊与菱形体)、分离轴测试 (SAT)、几何概率与表面积启发式 (SAH)、设计相交例程的经验法则,以及基于 GPU 的拾取。游戏数学光线求交测试Ray Intersection Tests光线求交用于拾取、光线追踪、地面高度查询等。本页给出四类经典测试:光线-球(代数解与带早期拒绝的几何优化解)、光线-盒(平板法与光线斜率法)、光线-三角形(Möller-Trumbore,直接从顶点求重心坐标与距离)、光线-多边形(先求平面交点,再投影到二维做交叉数测试)。共同思路是先做便宜的拒绝测试、推迟除法与开方、必要时降维。游戏数学包围体构建Bounding Volume Construction紧凑的包围体能降低相交测试成本:光线击中凸体的概率与其表面积成正比,拒绝永远不比相交慢,所以求交加速应最小化 BV 表面积;碰撞检测则常最小化体积。本页讲 AABB/k-DOP、包围球(AABB 法、Ritter 近似法、Welzl 最优法)、凸包(Quickhull)以及 OBB(PCA 法、数值最小化、Larsson 与 Källberg 的近优线性算法)的构建方法与取舍。游戏数学齐次坐标与矩阵约定Homogeneous Coordinates & Matrix Conventions实时渲染用 4×4 矩阵和四元素齐次坐标统一表示点和方向:方向向量 w=0,点 w=1。这样线性变换与平移可以合成为仿射变换并连乘。RTR4 采用列向量记法、右手观察坐标系;DirectX 采用行向量记法,书中强调这只是记法差异。游戏数学点与向量运算Points & Vector Operations游戏程序员最常用的数学是三维向量与矩阵(三维线性代数)。本页按 GEA 第 5 章整理点与向量的基础:坐标系与手性、点与方向的区别、标量乘与 Hadamard 积、加减、模长与归一化、点积与投影、叉积、伪向量与外代数,以及线性插值 (lerp)。贯穿全章的两条经验是:能在二维里想清楚的问题先在二维里想,以及能不开方就不开方。游戏数学几何图元的表示Geometric Primitive Representations除点、向量、矩阵、四元数外,游戏引擎还天天用到直线/射线/线段、球、平面、AABB、OBB、视锥和凸多面体区域。本页按 GEA 整理它们在内存中如何表示以及最基本的「点在内部吗」测试;各种求交与重叠算法见 RTR4 来源的相交测试系列页面。游戏数学光线微分与纹理足迹Ray Differentials & Texture Footprint光线微分 (ray differentials) 给每条相机光线附带两条在图像上偏移一个像素样本的辅助光线,借此估计交点处 \partial p/\partial x、\partial p/\partial y 和纹理坐标对屏幕坐标的导数,也就是纹理采样率(纹理足迹)。这是离线光线追踪器做纹理抗锯齿的基础;本页对应 PBRT 4e 10.1.1–10.1.3 及其延伸阅读,并对照实时光线追踪中的光线锥。