Convert BSpline Curve to Arc Spline in OpenCASCADE

Abstract. The paper based on OpenCASCADE algorithms to approximate the NURBS curve to arc spline. The method is most useful in numerical control to drive the cutter along straight line or circular paths. Or in the shipbuilding industry to manufacture section bar for cold frame bender.算法

Key Words. NURBS, Biarc approximation, arc spline,數據結構

1.Introductionapp

在數控加工CNC領域,一般須要用盡可能少段數的圓弧和直線段來對曲線進行擬合。有的數控繪圖機也只有直線和圓弧插補器,即只能繪製直線和圓弧,因此也須要將自由曲線轉換成直線和圓弧來進行繪製。在船舶製造方面,如肋骨冷彎機只有兩種狀態:彎和不彎,也只能加工出直線和圓弧,因此也須要將曲面型材的彎曲信息轉換成肋骨冷彎機能加工的數據。以下圖所示爲型材模型及其基線:測試

wps366D.tmp

Figure 1. 型材模型及基線ui

wps367E.tmp

Figure 2. 肋骨冷彎機3d

如上圖所示,型材都是直線的,經過彎曲加工出曲線效果。因此也須要將實際的自由曲線的型材數據轉換成圓弧樣條(直線和圓弧)便於加工。國內外關於這方面的論文不少,本文基於opencascade作了一個測試,opencascade平臺相關的數據結構完善,B樣條相關算法齊全,能夠基於這個開源平臺作些開發。blog

2.Algorithmip

看了國內外的一些論文,對NURBS曲線進行圓弧樣條擬合的大概思路都是一個先對NURBS曲線離散的過程。一個極端狀況就是生成NURBS曲線的顯示數據,即多段線來逼近。多段線對於有的機器設備(CNC)而言,加工不便,因此提出儘可能使用少的圓弧和直線段來逼近NURBS曲線這種問題。ci

總的思路是先將NURBS曲線離散成多段線,或將NURBS轉換成分段Bezier曲線,而後再用雙圓弧樣條曲線來進行擬合。開發

3.Polygon Approximation

將曲線離散成多段線的相關算法是個相對重要的算法,由於能夠用於對NURBS曲線的顯示。生成曲線顯示數據時也有用盡可能少的多段線來逼近曲線的問題。因此能夠先用生成曲線顯示數據的算法來對曲線進行離散化。OpenCASCADE中取曲線上點的相關類都在包GCPnts中:

wps367F.tmp

如類GCPnts_TangentialDeflection能夠在知足角度誤差和曲率誤差的條件下對曲線進行離散化。根據文檔註釋可知:

wps3680.tmp

wps3681.tmp

由上圖可知,曲線離散的算法知足條件爲向量P1P3和P3P2之間的夾角和P1P2與P1P3之間的夾角分別知足角度和曲率誤差。

若是對通過上述算法處理過的曲線上相鄰兩個點,根據切線來擬合一段圓弧,這樣處理起來程序比用雙圓弧擬合要簡單,對於尖點的處理也很方便。

過樣條曲線上相鄰兩個節點,且在節點處都切於樣條曲線的圓弧通常是不存在的,但卻能夠決定一圓弧使得在節點處兩對切線間的夾角相等,這種方法稱爲平均切線法。故結合樣條曲線離散算法和平均切線法,能夠將樣條曲線轉換成直線和圓弧來逼近表示的圓弧樣條曲線。直線的狀況就是相鄰兩個節點處的切線之間的夾角小於必定的誤差,則認爲是直線,其餘狀況都認爲是圓弧。

4.Arc Spline Fitting

根據上述原理使用OpenCascade編寫程序,OpenCascade在NURBS方面的算法仍是很全面的,如計算NURBS曲線曲面上的點或切線,或任意階導數等等。也有關於圓弧、線段等全面的數據結構,因此藉助OpenCascade這個平臺,能夠快速實現一些想法。

wps3682.tmp

上圖所示爲當精度爲0.5時B樣條曲線轉換成圓弧樣條曲線的結果。其中紅色曲線爲B樣條曲線,黃色爲圓弧樣條。

wps3683.tmp

當精度爲0.1時獲得的圓弧樣條。

wps3684.tmp

當精度爲0.01時獲得的圓弧樣條。由圖可知,圓弧樣條與B樣條基本重合。

5.Conclusion

綜上所述,當離散精度越高時,獲得的圓弧樣條越逼近原始的B樣條,可是圓弧和直線段的數量也會越多。

使用上述算法實現程序簡單,避免了雙圓弧擬合的一些複雜計算。

OpenCascade中有完善的NURBS相關算法及常見的幾何曲線曲面的數據結構,因此藉助這個平臺,能夠快速驗證一些想法。

6.References

1.Les A. Piegl, Wayne Tiller. Biarc approximation of NURBS curves.

2.盧建彪,雍俊海. 二次Bezier曲線的雙圓弧樣條插值二分算法.

3.何援軍. 計算機圖形學. 機械工業出版社. 2010

PDF Version: Convert BSpline Curve to Arc Spline in OpenCASCADE

相關文章
相關標籤/搜索