我有很多CGAL::Point_set_3,有没有一种快速的方法可以把它们写成一个ply文件?
我目前做的是用Point_set_3::join()把它们连接在一起,然后用CGAL::write_ply_points()。但是这样做会复制所有的条目,而且会花费很多时间。
有什么办法可以避免复制条目?
谢谢。
请看下面的代码示例
typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_3 Point_3;
typedef CGAL::Point_set_3<Point_3> Point_set;
Point_set ps1, ps2;
// insert points
ps1 += ps2 // merge point_set, duplicate happens here
CGAL::write_ply_points(...); // write ply to disk
我找到了一个解决方案。
创建一个std::vector< std::pair< Point_3, Vector_3 > >;
用std::move在每个point_set, push_back点和法线上迭代。
使用创建的向量写入ply文件。
函数 write_ply_points()
写入一个流。 所以你可以用不同的点集调用几次。