如何索引非结构化网格?

时间:2014-01-22 16:05:17

标签: 3d computer-science mesh scientific-computing

我想导入非结构化的2d / 3d网格,如下所示: 3d

或者

enter image description here

进入我的模拟。

我认为非结构化网格用顶点列表和边缘列表(即哪些顶点连接到哪些顶点)来描述。我不知道如何从中获得能够索引网格中的子体积。

然后我想在网格上运行模拟。为了做到这一点,我需要能够:

1)索引网格 2)生成邻居列表

我如何做到这一点?

1 个答案:

答案 0 :(得分:1)

对于顶点和边,您有一个无向图。有不同的数据结构用于表示图形和用于遍历它们的不同算法。它并不像遍历图表那么简单,因为你需要数量。

如果您有两个列表,那就太好了:

  1. 顶点坐标列表
  2. 每个卷的列表,每个卷都由第一个列表中的索引列表描述。
  3. 类似的东西:

    列出1

    0.4 0.7 0.8
    0.4 0.8 0.9
    0.6 0.8 0.9
    0.7 0.7 0.8
    ....
    

    列表2

    1 2 3
    4 2 3
    ....
    

    (假设卷是四面体。如果它们是四边形或棱柱,则必须指出哪些顶点由边连接。)

    如果是这种情况,您只需将第二个列表编入索引。


    如果你只有顶点(坐标向量)和边(顶点索引对),那么你必须弄清楚如何将边转换成体积。

    边缘的坐标向量列表和边缘的整数索引对(到第一个列表)可能是存储顶点的最有效方法,但您可能需要使用不同的数据结构来提高效率,例如列表顶点的坐标向量和作为边的稀疏矩阵存储的邻接矩阵。矩阵中的每个元素表示是否存在一对顶点的边(1是,0否)。行号是一个顶点的索引,列号是另一个顶点的索引。 (这是一个对称矩阵。)

    您可以通过找到三个顶点(1,2,3)从顶点(0)开始形成一个四面体,每个顶点与0共享一个边,另外两个顶点,但是您不希望包含相交的四面体所以你必须要小心。然后,您可以按顶点索引以升序(或降序)索引四面体,以便每个四面体都具有唯一索引。对于具有更多顶点的卷,您必须提出更复杂的索引方案,例如按升序(或降序)顺序进行索引索引。例如(42,54)将在升序系统中出现(67,89)。因此,一个卷将由这些有序对中的几个组成,其中对按顺序列出,而顶点索引按顺序排列。