迭代边缘并使用OpenMesh获取顶点

时间:2013-03-14 12:50:57

标签: c++ iterator mesh openmesh

我开始使用OpenMesh来浏览可能有整体的网格,并且想知道实际检索与每条边相关联的顶点的好方法是什么。

对于半边,有网格的方法opposite_he_opposite_vhopposite_vh,但是如果相反的半边不存在则会触发错误(我们当前在边界的一半 - 边缘)。

鉴于我经常遇到这些问题,迭代所有边缘的更好方法是什么(我实际上并不特别关心半边缘,我为每条边获取数据,但方向无关紧要我需要的是两个顶点)?

3 个答案:

答案 0 :(得分:2)

我认为你可以使用:

  1. MyMesh::to_vertex_handle(MyMesh::HalfedgeHandle)
  2. MyMesh::from_vertex_handle(MyMesh::HalfedgeHandle)
  3. 请确认您可以找到以下方法: - )

答案 1 :(得分:1)

你想要的可能是这个例子:

for ( mesh_t::EdgeIter eit   = _m.edges_begin(); eit != edgesEnd; ++eit) {
  const MeshType::Point to   = _m.point(_m.to_vertex_handle(_m.halfedge_handle(eit,0)));
  const MeshType::Point from = _m.point(_m.from_vertex_handle(_m.halfedge_handle(eit,0)));
}

答案 2 :(得分:0)

其他一个答案对我不起作用b / c迭代器需要被解除引用。 这就是我使用OpenMesh 4.1实现的方法 最佳做法可能有所改变; OpenMesh 6.2现已推出,但我尚未切换。

{{1}}