【问题标题】:How to join two CGAL::Point_set_3 without duplicate如何在不重复的情况下加入两个 CGAL::Point_set_3
【发布时间】:2020-06-11 07:17:07
【问题描述】:

我有很多 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


【解决方案1】:

我找到了解决办法:

  1. 创建一个 std::vector>;

  2. 使用 std::move 对每个 point_set、push_back 点和法线进行迭代;

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

【讨论】:

    【解决方案2】:

    函数write_ply_points() 写入流。因此,您可以使用不同的点集多次调用它。

    【讨论】:

    • ply文件中有header,一一追加其内容是不行的。
    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    相关资源
    最近更新 更多