Posted on 2023-05-23 23:21
eryar 閱讀(889)
評論(0) 編輯 收藏 引用 所屬分類:
2.OpenCASCADE
OpenCASCADE曲面求交之網格離散法3
eryar@163.com
1 Introduction
由朱心雄等著《自由曲線曲面造型技術》書中對曲面求交之網格離散法描述如下:該法的基本思想是先將曲面離散為由小平面片組成的網格,當網格足夠密時,可以認為已經非常接近真實曲面,對分別表示不同曲面的兩張網格,利用平面片求交法求得的交線,并以此交線近似代表曲面間的交線。這種方法原理簡明,便于實現,適用范圍廣,任意參數曲面均可利用該法求交。但為獲取精確地交線,則必須生成非常細密的網格,這將導致占用內存多,計算花費大。因此,實際工作中很少單一使用離散網格法,而常將其與其他方法結合使用。
OpenCASCADE中對于曲面求交也提供離散網格法,其中曲面的離散網格由類IntPatch_Polyhedron表示,兩個網格面求交使用類IntPatch_InterferencePolyhedron。在實際計算兩個面相交時并沒有使用這個類,而是使用類IntPolyh_Intersection,而離散網格使用類IntPolyh_MaillageAffinage。
2 網格離散
使用類IntPolyh_MaillageAffinage主要用來生成曲面的網格,其中MaillageAffinage是法語,翻譯過來是Mesh Refining網格細化,網格精度主要是通過參數U,V方向上的采樣點數量來確定。當不指定采樣點數量時,默認是參數U,V方向分別10個,即默認會生成10x10個采樣點,即使是平面也是生成100個采樣點。通過函數FillArrayOfPnt()生成采樣點。通過函數FillArrayOfTriangles()來生成三角形,三角形的數量通過如下圖所示公式計算,默認數量 為2x(10-1)x(10-1)=162。

對于簡單的平面,如果不指定采樣點數量,也會生成100個采樣點及162個三角形:

3 網格求交
兩個網格求交是通過類IntPolyh_Intersection來計算,計算的結果也是兩個網格之間的交線。還是將交線顯示出來便于觀察:

從生成的交線來看,這個結果要比IntPatch_InterferencePolyhedron要好,沒有多余的交線。類IntPolyh_Intersection中使用BVH來過濾不相交的三角形,所以速度也會快很多。
4 Conclusion
綜上所述,使用類IntPolyh_Intersection來計算兩個曲面網格的交線。曲面網格生成直接通過參數U,V上的采樣點數量來確定,雖然生成網格速度快,但是精度控制不好,即使是平面也會根據采樣數量生成大量采樣點和三角形,影響求交速度。網格求交作為曲面求交的預處理步驟,如何用更少的三角形來表示曲面,可提高網格求交性能。