Fixed_alpha_shape_3() 会破坏或修改原始三角测量吗?
Does Fixed_alpha_shape_3() destroy or modify original triangulation?
Fixed_alpha_shape_3(( 会破坏或修改底层三角测量吗?文档说"此操作破坏了三角测量",但它是否将其替换为 alpha 形状三角测量?源代码表明它正在修改底层的 delaunay 三角测量,因为它正在删除顶点。此外,三角测量对象作为参考传递的事实也使我认为 alpha 形状正在修改底层三角测量。如果这是真的,这意味着我们可以在代码的其余部分自然地继续使用原始三角测量对象。如果三角测量没有被修改,而是真正被破坏并且不再存在,我们是否可以简单地将Fixed_alpha_shape_3对象用作三角测量对象,因为它继承自三角测量类?
最终目标是确保在 alpha 形状删除边界上的像元后,在新的三角测量对象中更新像元邻居。最重要的是,新的三角测量对象需要在边界处包含正确的cell->neighbor(i)->is_inifinite
状态。
例如,原始三角测量的构造照常进行:
RTriangulation T(points.begin(),points.end());
随后是创建Fixed_alpha_shape_3:
Fixed_alpha_shape_3 as(T);
我知道我们可以使用包括as.get_alpha_shape_cells()
在内的各种方法访问 alphaShape INSIDE 和 EXTERIOR 单元格,但如果Fixed_alpha_shape_3只是修改原始三角测量,T
,那么我们应该能够继续使用这样的T
:
const RTriangulation::Finite_cells_iterator cellEnd = T.finite_cells_end();
for (RTriangulation::Finite_cells_iterator cell = T.finite_cells_begin(); cell != cellEnd; cell++) {
for (int i=0;i<4;i++) {
if (cell->neighbor(i)->is_infinite) cell->info().p = 1;
}
}
或者我可以简单地开始使用 alpha 形状对象:
const RTriangulation::Finite_cells_iterator cellEnd = as.finite_cells_end();
for (RTriangulation::Finite_cells_iterator cell = as.finite_cells_begin(); cell != cellEnd; cell++) {
for (int i=0;i<4;i++) {
if (cell->neighbor(i)->is_infinite) cell->info().p = 1;
}
}
最不理想的解决方案是创建带有as.get_alpha_shape_cells()
的新单元格列表,因为这意味着对我们的代码进行重大修改,其中包含许多逻辑拆分。我怀疑这是没有必要的,这就是为什么我要澄清Fixed_alpha_shape_3()
的行动.
感谢您的协助。
"毁灭"这个词是一个不幸的选择。正如您注意到的,类Fixed_alpha_shape_3派生自三角测量类。 将对三角测量 dt 的引用作为输入的构造函数将其与 dt 交换。 所以之后在 dt 中你会发现默认构造的,即空三角测量。
- 修改原始protobuf流
- 如何找到修改后的字符串与原始字符串相等的时间
- 有没有一种优雅的方法可以使用向量修改器并获得新的向量,而不是更改原始向量
- 为什么我可以通过原始指针而不是shared_ptr来修改对象
- 当原始数据是常量时,修改指针指向的位置是 UB 吗?
- Fixed_alpha_shape_3() 会破坏或修改原始三角测量吗?
- 我想知道像素/片段的原始模板值.零还是一个?如果可能的话,以获取哪些特定操作会修改模板值
- 有条件地传递修改后的副本而不是const原始副本变得丑陋
- 当我修改、更改和“删除”原始指针时,是否需要指针副本
- C++修改通过引用传递的类不会更改原始对象
- 打开一个文件,修改每个字符,然后执行反向操作不输出原始文件
- 如何在用户修改后使用旧版驱动程序中的 PE 标头获取原始文件类型
- 为什么我的原始二叉搜索树被修改,即使我在另一个节点中复制了根节点
- 操作员重载=修改原始对象
- 子向量修改原始向量
- 否定分数但不修改原始部分
- 在 Linux 原始套接字中接收完全修改的 icmp 数据包
- C++ 如何确保复制构造函数不会修改原始对象的指针数据成员?
- 创建指针的指针并在不修改原始指针的情况下对其进行修改
- 如何修改通过值传递的原始变量的内容