如何从半边结构中移除边缘?

时间:2018-04-15 21:49:32

标签: algorithm data-structures graphics computational-geometry

我正在尝试实现一种算法来从半边结构中移除边和顶点。有关说明,请参见附图:

An image to illustrate the remove edge process

An image to illustrate the remove vertex process

我知道Openmesh和CGAL等图书馆可以帮助我实现这一目标,但我打算自己实施。

我最初的想法如下:

previous_predictions = regressor.predict(previous_inputs, batch_size=1).reshape(-1)

如果我走在正确的轨道上,有人可以提出一些建议吗?

我也在网上进行了一些研究,发现一篇在线文章似乎很有帮助。

以下是链接:http://kaba.hilvi.org/homepage/blog/halfedge/halfedge.htm

在删除边缘部分下,它列出了以下步骤:

1. Find out the half edges associated with that edge
2. Find out all the faces associated with each half edge
3. Find out all the edges and vertices corresponds to each face
4. Not sure how to merge them together ie how to merge edge 1 edge 2, vertex 4 and 2 and edge 5 and 4 in the attached graph.
5. Delete all the faces.
6. Delete all the half edges

第一个和最后一个对我有意义。但是,我不确定作者的意思是将边缘的半边缘与网格连接起来?有人可以向我解释一下吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我将这个问题的意思是“如何实现边缘折叠”。

一旦您有一个有效的半边DS,算法本身就不会那么复杂。

  • 获取通过边连接的2个顶点
  • 将他们的外边缘指针设置为所选半边缘和该对边缘的next(以避免创建无效的指针)
  • 获取下一个半边,上一个将其设置为新的半边对。
  • 对一对选定的半边边缘执行相同的操作
  • 选择与半边相反的任何一个顶点。将其设置为两个新生成的半边之间的连接顶点。
  • 删除两个面,未使用的顶点和选定的半边。