2015-12-09 40 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

你可以在更大的球體中網格化。你會找到與小球相交的臉。這會給你提供清晰的功能來保護。 –