这是有关CGAL中3D Surface Mesh Generation工具的问题。
根据文档,我需要提供要以隐式形式网格化的表面作为零水平设置表面。这似乎在输入表面上施加了限制,使其具有多种形式。
问题
在我的用例中,我需要为否则较大的“父”歧管隐式曲面的一个小“区域”生成网格。 “区域”本身是非流形的,因为它没有封装体积。
我想到的解决方法是:
但是,出于性能考虑,我想避免这种情况。
我应该如何进行?CGAL中是否有其他模块可以帮助我实现这一目标?
由于您的表面是隐式的,因此您可以轻松地创建表示该隐式表面与隐式体积(例如球体,边界框或半空间)的相交的函数。
例如,假设您有一个球面的方程:
auto sphere(double x, double, y, double z) {
return x*x + y*y + z*z - 1;
}
然后您可以像这样计算带有半角空格的交点:
auto half_space(double x, double y, double z) {
return y - x > 0 ? -1. : -1.;
}
auto intersection(double, x, double y, double z) {
if(half_space(x, y, z) > 0) return 1.
else return sphere(x, y, z);
}