计算机图形表面


多边形表面

对象被表示为表面的集合。3D 对象表示分为两类。

  • 边界表示(B-reps) - 将 3D 对象描述为一组将对象内部与环境分开的表面。

  • 空间分区表示- 它用于通过将包含对象的空间区域划分为一组小的、不重叠的、连续的实体(通常是立方体)来描述内部属性。

3D 图形对象最常用的边界表示是一组包围对象内部的表面多边形。许多图形系统都使用这种方法。存储一组多边形用于对象描述。这简化并加速了对象的表面渲染和显示,因为所有表面都可以用线性方程描述。

多边形表面在设计和实体建模应用中很常见,因为它们的线框显示可以快速完成以给出表面结构的一般指示。然后通过在多边形表面上插入阴影图案来照明来产生逼真的场景。

多边形表面

多边形表

在此方法中,表面由一组顶点坐标和关联属性指定。如下图所示,有五个顶点,从 v 1到 v 5

  • 每个顶点存储x、y和z坐标信息,在表中表示为v 1 : x 1 , y 1 , z 1

  • 边表用于存储多边形的边信息。在下图中,边 E 1位于顶点 v 1和 v 2之间,在表中表示为 E 1 : v 1 , v 2

  • 多边形曲面表存储多边形中存在的曲面数。从下图中,曲面S 1被边E 1、E 2和E 3覆盖,这些边可以在多边形曲面表中表示为S 1:E 1、E 2和E 3

多边形表

平面方程

平面的方程可以表示为 -

斧头 + By + Cz + D = 0

其中(x,y,z)是平面上的任意点,系数A、B、C和D是描述平面空间特性的常数。我们可以通过使用平面上三个不共线点的坐标值求解一组三个平面方程来获得 A、B、C 和 D 的值。让我们假设平面的三个顶点是(x 1 , y 1 , z 1 )、(x 2 , y 2 , z 2 ) 和(x 3 , y 3 , z 3 )。

让我们求解以下比率 A/D、B/D 和 C/D 的联立方程。您将获得 A、B、C 和 D 的值。

(A/D) x 1 + (B/D) y 1 + (C/D) z 1 = -1

(A/D) x 2 + (B/D) y 2 + (C/D) z 2 = -1

(A/D) x 3 + (B/D) y 3 + (C/D) z 3 = -1

要获得行列式形式的上述方程,请将克莱默规则应用于上述方程。

$A = \begin{bmatrix} 1& y_{1}& z_{1}\\ 1& y_{2}& z_{2}\\ 1& y_{3}& z_{3} \end{bmatrix} B = \开始{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 表面和实体可以通过一组多边形和线元素来近似。这样的表面称为多边形网格。在多边形网格中,每条边最多由两个多边形共享。一组多边形或面共同构成了对象的“皮肤”。

此方法可用于表示图形中的一大类实体/曲面。可以使用隐藏表面去除算法来渲染多边形网格。多边形网格可以用三种方式表示 -

  • 明确表示
  • 指向顶点列表的指针
  • 指向边列表的指针
多边形网格

优点

  • 它可用于对几乎任何对象进行建模。
  • 它们很容易表示为顶点的集合。
  • 它们很容易变形。
  • 它们很容易在计算机屏幕上绘制。

缺点

  • 曲面只能近似描述。
  • 模拟某些类型的物体(例如头发或液体)很困难。