《3D 数学基础:图形与游戏开发》十二、几何图元(略)

84 阅读2分钟

12.1 表示方法

12.1.1 隐式表示

通过定义一个布尔函数 f(x,y,z)f(x, y, z),我们能够隐式表示一个图元。若所指定的点在这个图元上,这个函数就为真;对于其他的点,这个函数为假。如等式:

x2+y2+z2=1x^2+y^2+z^2=1

对中心在原点的单位球表面上的所有点为真。隐式表示法用于测试图元是否包含某点时非常有用

12.1.2 参数形式表示

图元也能以参数形式表示。我们从一个简单的2D 例子开始,定义如下两个关于 t 的函数

x(t)=cos2πty(t)=sin2πtx(t)=cos2\pi t \\ y(t)=sin2\pi t

这里 t 被称作参数,当 t 从 0 变化至 1 时,点 (x(t)y(t))(x(t),y(t)) 的轨迹就是所要描述的形状

若函数只使用一个参数,就称这些函数为单变量的。单变量函数的轨迹是一条曲线。有时函数可能有多于一个参数,双变量函数接受两个参数,经常设为 s 和 t。双变量函数的轨迹是一个曲面

12.1.3 “直接”形式表示

它们随图元的类型而变化,且经常能直接地体现图元最本质和最明显的信息。如用两个端点来表示一个线段;用球心和半径来表示一个球

12.1.4 自由度

每个几何图元都有一个固有的属性:自由度。自由度是无歧义地描述该实体所需信息量的最小数目。

12.2 直线和射线

本书对“射线”的定义作出修改:

射线就是有向线段

任何射线都定义了包含这个射线的一条直线和线段。射线在计算几何和图形学中非常重要

12.2.1 两点表示法

12.2.2 射线的参数形式

2D 和 3D 射线都能用参数形式表示。2D射线的参数形式使用两个函数

3D 射线是对 2D 的一种直接扩展,只需要再加上第 3 个函数 z(t) 即可。参数 t 的范围是 0 到 1

向量记法能使射线的参数形式更加紧凑

p(t)=p0+td\boldsymbol{p}(t)=\boldsymbol{p}_0+t\boldsymbol{d}

射线的起点 p(0)=p0p(0)=p_0,这样 p0p_0 就指定了射线的位置信息,同时增量向量 d 指定了它的长度和方向。射线的终点 p(1)=p0+dp(1)=p_0+d

12.2.3 特殊的 2D 直线表示方法

12.3 球和圆

12.4 矩形边界框

12.5 平面

12.6 三角形

12.7 多边形