【问题标题】:How can I generate mesh for a portion of level-set surface using CGAL?如何使用 CGAL 为水平集表面的一部分生成网格?
【发布时间】:2019-11-05 13:59:43
【问题描述】:

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

根据文档,我需要提供要以隐式形式进行网格划分的表面作为零水平集表面。这似乎限制了输入表面的多样性。

问题

在我的用例中,我需要为一个更大的“父”流形隐式曲面的一个小“区域”生成网格。 “区域”本身是非流形的,因为它不包含一个卷。

我能想到的解决方法是:

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

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

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

【问题讨论】:

    标签: mesh cgal triangulation implicit-surface


    【解决方案1】:

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

    例如,假设你有一个球体方程:

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多