我正在尝试创建由任意曲面的交集定义的单元格的交互式 3d 表示。我很难弄清楚如何从中创建网格(或者有什么比我应该瞄准的网格更好的东西来表示 3d 体积?)。每个表面 s 由平面、球体、圆柱体、圆锥体等的解析表达式给出,因为 s = f(x,y,z) = 0,例如这里的那些:
对于每个单元格,我都有一个表面列表和每个表面的 +/- 意义。有了这个,很容易确定一个 x,y,z 点是否位于单元格内,方法是将该点插入每个边界表面的方程中,如果结果是所有 + 表面的 + 和 - 所有 - 表面的点位于里面。显然,如果任何表面的结果为零,则该点位于该表面上。
我可以测试数千个网格点,为每个单元格记下位于该单元格内的那些点,然后使用这些点的最外层为该单元格创建一个网格。但是,我有数千个细胞,这根本不够快。与其他单元格相比,许多单元格非常小或纵横比低,所以如果我要这样做,我需要一个非常精细的点网格。
任何人都可以提出一种有效的方法将这种方式定义的单元格放入静态 3d 模型中吗?是否有任何类型的库可以与这种几何规范一起使用,可以为我构建 3d 网格?我错过了一些明显的东西吗?
谢谢,尼克