- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否Fixed_alpha_shape_3()破坏或修改底层三角剖分?文档说“此操作破坏了三角剖分”但它是否用 alpha 形状三角剖分代替了它?源代码表明它正在修改底层的 delaunay 三角剖分,因为它是 removing vertices。 .此外,三角测量对象是 passed as a reference。也让我觉得 alpha shape 正在修改底层的三角剖分。如果为真,则意味着我们可以在代码的其余部分自然地继续使用原始三角剖分对象。如果三角剖分没有被修改,而是真正被破坏,不再存在,我们是否可以简单地使用 Fixed_alpha_shape_3 对象作为三角剖分对象,因为它 inherits from the Triangulation class ?
最终目标是确保在 alpha shape 移除边界上的单元格后,在新的三角剖分对象中更新单元格邻居。最重要的是,新的三角剖分对象需要在边界处包含正确的 cell->neighbor(i)->is_inifinite
状态。
例如,原始三角剖分的构造照常进行:
RTriangulation T(points.begin(),points.end());
接着创建 Fixed_alpha_shape_3:
Fixed_alpha_shape_3 as(T);
我知道我们可以使用各种方法访问 alphaShape INTERIOR 和 EXTERIOR 单元格,包括 as.get_alpha_shape_cells()
,但如果 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 中你会发现默认构造的,即空三角剖分。
关于c++ - Fixed_alpha_shape_3() 是否破坏或修改原始三角剖分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57572583/
我有一个绕其 3 轴旋转的立方体,当 key[a] == true 时,它会向左旋转,就好像它正在滚动一样。将立方体向任何方向旋转 45 度,将其向后旋转 90 度,以获得继续的错觉。这将保持 3
我是一名优秀的程序员,十分优秀!