2015-12-09 41 views
1

这又是一个关于CGAL 3D曲面网格的问题。CGAL为无界隐式曲面生成3D曲面网格

http://doc.cgal.org/latest/Surface_mesher/index.html#Chapter_3D_Surface_Mesh_Generation

随着定义

Surface_3 surface(sphere_function,    // pointer to function 
        Sphere_3(CGAL::ORIGIN, 64.0)); // bounding sphere 

(如示例中给出的代码太)我定义由“球函数”和半径的Sphere_3给定的隐式表面8

现在的区别是,“球体函数”的零点(与其现在的误导性名称相反)不再局限于Sphere_3内部。相反,'sphere_function'代表一个无界的表面(想想x^2 + y^2 - z^2 - 1 = 0),我的目的是三角化它在Sphere_3中的部分。

在我的例子中,到目前为止,这个工作很好,如果只是为了一些烦人的问题,我不知道如何克服:隐式表面与Sphere相交的边界非常“粗糙”或“锯齿状”超过可接受的数量。

我已经尝试过'Manifold_with_boundary_tag()',但没有做任何改进。以改善,我考虑输出,

一条道路转换三角网格(一个C2t3)成Polyhedron_3并且这一个Nef_polyhedron和相交,与一个Nef_polyhedron良好近似稍小球体。但是,这看起来有点像用大炮射击麻雀,不过我现在没有更好的主意,Google也没有提示。所以我的问题:这个问题该怎么办?可以用CGAL来完成(并且适度的编程工作),还是使用其他系统是必要的还是更好的?我试图开发一个程序,它构造代数曲面的三维可打印模型,并且在边界中平滑并且在平滑的三角形中是我最后一步,在我能够将表面移交给OpenSCAD生成一个厚度不变的实体)。

回答

1

我看到的唯一解决方案是使用具有清晰特征保留的3D网格生成,并且没有细胞标准。您将不得不自己提供边界球与曲面的交点。 在user manual中有两个相交球体的例子。

+0

你可以在更大的球体中网格化。你会找到与小球相交的脸。这会给你提供清晰的功能来保护。 –