Operations on Surface_mesh in CGAL
2016-03-04 09:33
309 查看
http://doc.cgal.org/latest/BGL/group__PkgBGLIterators.html#ga7746cb7b28520877375dfff6ec7bd32c
note the difference between Surface_mesh and Polyhedron when referring to data from descriptor
In Polyhedron
Halfedge_handle h;
Halfedge_handle g = h->next()->opposite()->next();
In Surface_mesh
CGAL::Halfedge_around_face_iterator<Mesh> hbegin;
m.face(m.opposite(*hbegin))
#include <vector> #include <boost/foreach.hpp> #include <CGAL/Simple_cartesian.h> #include <CGAL/Surface_mesh.h> typedef CGAL::Simple_cartesian<double> K; typedef CGAL::Surface_mesh<K::Point_3> Mesh; typedef Mesh::Vertex_index vertex_descriptor; typedef Mesh::Face_index face_descriptor; int main() { Mesh m; // u x // +------------+ // | | // | | // | f | // | | // | | // +------------+ // v w // Add the points as vertices vertex_descriptor u = m.add_vertex(K::Point_3(0,1,0)); vertex_descriptor v = m.add_vertex(K::Point_3(0,0,0)); vertex_descriptor w = m.add_vertex(K::Point_3(1,0,0)); vertex_descriptor x = m.add_vertex(K::Point_3(1,1,0)); face_descriptor f = m.add_face(u,v,w,x); { std::cout << "vertices around vertex " << v << std::endl; CGAL::Vertex_around_target_circulator<Mesh> vbegin(m.halfedge(v),m), done(vbegin); do { std::cout << *vbegin++ << std::endl; } while(vbegin != done); } { std::cout << "edges around face " << f << std::endl; CGAL::Halfedge_around_face_iterator<Mesh> hbegin, hend; for(boost::tie(hbegin, hend) = halfedges_around_face(m.halfedge(f), m); hbegin != hend; ++hbegin){ std::cout << *hbegin << std::endl; std::cout << m.face(*hbegin) << std::endl; std::cout << m.opposite(*hbegin) << std::endl; std::cout << m.face(m.opposite(*hbegin)) << std::endl; } } { std::cout << "vertices around face " << f << std::endl; CGAL::Vertex_around_face_iterator<Mesh> vbegin, vend; for(boost::tie(vbegin, vend) = vertices_around_face(m.halfedge(f), m); vbegin != vend; ++vbegin){ std::cout << *vbegin << std::endl; } } // or the same again, but directly with a range based loop BOOST_FOREACH(vertex_descriptor vd,vertices_around_face(m.halfedge(f), m)){ std::cout << vd << std::endl; } return 0; }
note the difference between Surface_mesh and Polyhedron when referring to data from descriptor
In Polyhedron
Halfedge_handle h;
Halfedge_handle g = h->next()->opposite()->next();
In Surface_mesh
CGAL::Halfedge_around_face_iterator<Mesh> hbegin;
m.face(m.opposite(*hbegin))
相关文章推荐
- linux下tomcat安装
- poj2443Set Operation (bitset)
- Linux音视频(SDL库)
- 关于tomcat启动报错:java.io.EOFException
- linux下jdk安装
- eclipse下的tomcat内存设置大小
- Linux下查看文件内容的命令
- Linux 添加开机启动项的两种方法
- linux的svn服务器搭建--Subversion Edge
- linux常用命令
- 嵌入式Linux开发学习笔记:编译与调试
- shell循环
- linux下配置lamp
- 使用 adb shell 抓取 Android 性能数据
- 笔记:Linux常用命令(七)磁盘管理
- Nginx+CI框架出现404错误怎么解决
- 专访阿里王峰:Hadoop生态下一代计算引擎-streaming和batch的统一
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论
- Linux文件系统
- Linux用户和用户管理