我有一个包含数百万个三角形的三角形网格。目前在我的数据结构中只存储三角形和顶点。我想重建所有边,并将它们存储在数据容器中。这个想法可能是这样的:遍历所有的三角形,得到它们的每两个顶点,并在它们之间创建一个边。问题是共享边缘可能会创建两次。所以为了克服这个问题,我需要一个数据容器EdgeContainer
来存储边缘,它应该有一个函数来检查边缘是否已经被创建。因此,它是象一个具有多按键的地图,但根据我的问题,这张图还应该具备以下功能:重建三角形网格中的所有边缘
EdgeContainer(v1, v2)
应该返回相同的结果EdgeContainer(v2, v1)
,其中v1
和v2
是指向两个顶点。EdgeContainer
应该有一个功能类似EdgeContainer::Remove(v1)
,这将删除所有边缘事件到顶点v1
。- 实施应尽可能高效。
是否有可以处理这个任何现有的图书馆吗?
为什么不能简单'map>'不够? –
@NicoSchertler,'Edge'必须明确地存储以供进一步使用,即存储其长度或一些其他属性。你的建议无法处理它,可以吗? –
然后让它'map>'。 –