计算机图形学表面
多边形表面
物体表示为一系列表面的集合。3D物体表示分为两类。
边界表示法 (B-reps) − 它将3D物体描述为一组将物体内部与环境分开的表面。
空间划分表示法 − 通过将包含物体的空间区域划分为一组小的、不重叠的、连续的实体(通常是立方体),它用于描述内部属性。
3D图形物体最常用的边界表示法是一组封闭物体内部的表面多边形。许多图形系统都使用这种方法。存储多边形集合来描述物体。由于所有表面都可以用线性方程描述,这简化并加快了表面的渲染和显示。
多边形表面在设计和实体建模应用中很常见,因为它们的线框显示可以快速完成,从而大致指示表面结构。然后通过在多边形表面上插值阴影图案来产生逼真的场景以进行照明。
多边形表
在这种方法中,表面由顶点坐标集和相关属性指定。如下图所示,共有五个顶点,从v1到v5。
每个顶点存储x、y和z坐标信息,在表中表示为v1:x1、y1、z1。
边表用于存储多边形的边信息。在下图中,边E1位于顶点v1和v2之间,在表中表示为E1:v1、v2。
多边形表面表存储多边形中存在的表面数量。从下图可以看出,表面S1由边E1、E2和E3覆盖,这可以在多边形表面表中表示为S1:E1、E2和E3。
平面方程
平面表面的方程可以表示为:
Ax + By + Cz + D = 0
其中(x, y, z)是平面上的任意一点,系数A、B、C和D是描述平面空间属性的常数。我们可以通过使用平面中三个非共线点的坐标值求解一组三个平面方程来获得A、B、C和D的值。假设平面的三个顶点是(x1, y1, z1)、(x2, y2, z2)和(x3, y3, z3)。
让我们求解以下联立方程以求解比率A/D、B/D和C/D。你将得到A、B、C和D的值。
(A/D) x1 + (B/D) y1 + (C/D) z1 = -1
(A/D) x2 + (B/D) y2 + (C/D) z2 = -1
(A/D) x3 + (B/D) y3 + (C/D) z3 = -1
为了将上述方程表示为行列式形式,将克莱姆法则应用于上述方程。
$A = \begin{bmatrix} 1& y_{1}& z_{1}\\ 1& y_{2}& z_{2}\\ 1& y_{3}& z_{3} \end{bmatrix} B = \begin{bmatrix} x_{1}& 1& z_{1}\\ x_{2}& 1& z_{2}\\ x_{3}& 1& z_{3} \end{bmatrix} C = \begin{bmatrix} x_{1}& y_{1}& 1\\ x_{2}& y_{2}& 1\\ x_{3}& y_{3}& 1 \end{bmatrix} D = - \begin{bmatrix} x_{1}& y_{1}& z_{1}\\ x_{2}& y_{2}& z_{2}\\ x_{3}& y_{3}& z_{3} \end{bmatrix}$
对于具有参数A、B、C和D的任意点(x, y, z),我们可以说:
Ax + By + Cz + D ≠ 0 表示该点不在平面上。
Ax + By + Cz + D < 0 表示该点在表面内部。
Ax + By + Cz + D > 0 表示该点在表面外部。
多边形网格
3D表面和实体可以用一组多边形和线元素来近似。这种表面称为多边形网格。在多边形网格中,每条边最多由两个多边形共享。多边形或面的集合共同构成物体的“皮肤”。
此方法可用于表示图形中广泛的实体/表面类别。可以使用隐藏表面消除算法渲染多边形网格。多边形网格可以通过三种方式表示:
- 显式表示
- 指向顶点列表的指针
- 指向边列表的指针
优点
- 它可以用来模拟几乎任何物体。
- 它们很容易表示为顶点的集合。
- 它们很容易变换。
- 它们很容易在电脑屏幕上绘制。
缺点
- 曲线表面只能近似描述。
- 很难模拟某些类型的物体,例如头发或液体。