如何使用CGAL为水平设置的表面生成网格?

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

这是有关CGAL中3D Surface Mesh Generation工具的问题。

根据文档,我需要提供要以隐式形式网格化的表面作为零水平设置表面。这似乎在输入表面上施加了限制,使其具有多种形式。

问题

在我的用例中,我需要为否则较大的“父”歧管隐式曲面的一个小“区域”生成网格。 “区域”本身是非流形的,因为它没有封装体积。

enter image description here

我想到的解决方法是:

  • 将整个“父”表面网格化,然后
  • 提取与所需“区域”相对应的网格。

但是,出于性能考虑,我想避免这种情况。

我应该如何进行?CGAL中是否有其他模块可以帮助我实现这一目标?

mesh cgal triangulation implicit-surface
1个回答
0
投票

由于您的表面是隐式的,因此您可以轻松地创建表示该隐式表面与隐式体积(例如球体,边界框或半空间)的相交的函数。

例如,假设您有一个球面的方程:

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.