在本节中,您将会了解到OpenMesh提供的一些基本的网格操作,边的翻转。
边的翻转
对于两个邻接的三角形,它们的公共边可能有两种存在形式。调用函数OpenMesh::TriConnectivity::flip(EdgeHandle _eh)可以将指定的边翻转到另一种形式,如下图所示。
代码如下所示:
TriMesh mesh;
// Add some vertices
TriMesh::VertexHandle vhandle[4];
vhandle[0] = mesh.add_vertex(MyMesh::Point(0, 0, 0));
vhandle[1] = mesh.add_vertex(MyMesh::Point(0, 1, 0));
vhandle[2] = mesh.add_vertex(MyMesh::Point(1, 1, 0));
vhandle[3] = mesh.add_vertex(MyMesh::Point(1, 0, 0));
// Add two faces
std::vector<TriMesh::VertexHandle> face_vhandles;
face_vhandles.push_back(vhandle[2]);
face_vhandles.push_back(vhandle[1]);
face_vhandles.push_back(vhandle[0]);
mesh.add_face(face_vhandles);
face_vhandles.clear();
face_vhandles.push_back(vhandle[2]);
face_vhandles.push_back(vhandle[0]);
face_vhandles.push_back(vhandle[3]);
mesh.add_face(face_vhandles);
// Now the edge adjacent to the two faces connects
// vertex vhandle[0] and vhandle[2].
// Find this edge and then flip it
for(TriMesh::EdgeIter it = mesh.edges_begin();it != mesh.edges_end(); ++it)
{
if(!mesh.is_boundary(*it))
{
// Flip edge
mesh.flip(*it);
}
}
// The edge now connects vertex vhandle[1] and vhandle[3].
译者说明:因科研需要,避免重复造轮子,近来借用OpenMesh,因其结构封装严谨,灵活可靠,且十分方便,故抽出时间对官网的说明做点翻译。英文水平不高,如翻译有误请多多包涵,也请您多多指正。
上一篇:OpenMesh译稿:使用并理解OpenMesh-网格的导航
下一篇:OpenMesh译稿:使用并理解OpenMesh-边的折叠
英文原文地址:http://www.openmesh.org/Documentation/OpenMesh-Doc-Latest/index.html
---------------------
作者:feengg
来源:优快云
原文:https://blog.youkuaiyun.com/feengg/article/details/88367579
版权声明:本文为博主原创文章,转载请附上博文链接!
更多精彩文章,请扫码关注公众号,嘿嘿