如何将两个CGAL::Point_set_3连接起来而不重复?

问题描述 投票:1回答:2

我有很多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
cgal
2个回答
0
投票

我找到了一个解决方案。

  1. 创建一个std::vector< std::pair< Point_3, Vector_3 > >;

  2. 用std::move在每个point_set, push_back点和法线上迭代。

  3. 使用创建的向量写入ply文件。


0
投票

函数 write_ply_points() 写入一个流。 所以你可以用不同的点集调用几次。

© www.soinside.com 2019 - 2024. All rights reserved.