📜  计算机图形学表面

📅  最后修改于: 2021-01-13 09:39:44             🧑  作者: Mango


多边形表面

对象表示为表面的集合。 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

要获取行列式形式的上述方程式,请将Cramer法则应用于上述方程式。

$ 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),我们可以说-

  • 斧头通过+ Cz+ D≠0表示该点不在平面上。

  • 斧头通过&plus; Cz&plus; D <0表示该点在曲面内部。

  • 斧头通过&plus; Cz&plus; D> 0表示该点在曲面之外。

多边形网格

3D表面和实体可以通过一组多边形和线元素来近似。这种表面称为多边形网格。在多边形网格中,每个边最多由两个多边形共享。一组多边形或面一起形成对象的“皮肤”。

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

  • 明确表示
  • 指向顶点列表的指针
  • 指向边缘列表的指针

多边形网格

好处

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

缺点

  • 曲面只能大致描述。
  • 模拟某些类型的对象(例如头发或液体)非常困难。