用于去除四面体网格中的内部元素的算法

时间:2012-08-23 14:40:37

标签: c++ opengl glut

我在OpenGL中渲染四面体网格。每个面使用三角形绘制每个四面体(每个四面体总共4个三角形)。我正在寻找一种简单的方法来删除网格的内部元素。例如,如果网格的形状是单位球体(以原点为中心),我可以平均四面体中每个面的三个坐标,并且仅绘制最大化距离原点的距离的面。这将产生球形壳。

我正在使用的网格比球体更复杂:)。

1 个答案:

答案 0 :(得分:2)

我相信,根据你的描述,当面只是一个四面体的一部分时,面是壳的一部分。您可以通过创建面部每个点的连接点列表来查找面部所属的四面体数量。然后找出每个列表中有多少点在所有三个列表中是共同的 - 这是一个面/三角形所在的四面体的数量。

我能想到的高级伪代码是:

bool isPartOfShell(Triangle triangle)
{ 
  foreach(Point p in triangle)
    make a list of all connected points in p

  x = the number of points common in all lists

  return x == 1;
}