摘 要: 以Fortran90語言和AutoCAD圖形軟件為平臺,,開發(fā)了Bezier曲線繪制子程序,該程序能夠保存,、處理數(shù)據(jù)文件,,形成直觀曲線供用戶輸出,實現(xiàn)了計算機自動繪圖的目的,?;谠撟映绦蚓幹屏瞬糠謶弥鞒绦蝮w現(xiàn)出自動繪圖子程序的應用價值。
關鍵詞:Bezier曲線; 自動繪制; 應用
1 Bezier曲線及其原理
20世紀60年代,,法國雷諾汽車公司的工程師貝濟爾提出了用控制多邊形定義曲線的方法,即Bezier曲線,,因該曲線采用了一組獨特的多項式基函數(shù),使其具有許多優(yōu)良的特性,,在諸多形式的參數(shù)多項式曲線中獨樹一幟,,一經(jīng)問世,就受到工業(yè)界和計算機輔助幾何設計研究者的廣泛重視[1],。Bezier曲線算法是一種直觀,、易于調(diào)整、高效率的曲線擬合方法,,這種方法能使使用者在工程設計中比較直觀地意識到所給條件與設計出的曲線之間的關系,,能方便地控制輸入控制點以改變曲線的形狀,。Bezier曲線的形狀由點的位置確定,而且曲線可能并不通過除兩端點外的所有給定點,,點數(shù)量不夠或點位置難以處理的情況下,,用三次樣條曲線方法也許不能生產(chǎn)光滑曲線。
Bezier曲線有不同的數(shù)學定義形式,,如德卡斯特里奧遞歸(deCasteljau)算法,、波恩斯坦基(Bernstein)原理等。本文中Bezier曲線的自動繪制方法采用Bernstein原理和參考文獻[2]提出的將中點分割和拐點分割相混合的Bezier曲線降階方法,,其中Bezier曲線的數(shù)學基礎(影響曲線形狀的加權系數(shù))來自下式給出的Bernstein原理[1]:
2 軟件的接口及編程
Fortran語言具有強大的數(shù)學計算功能,,AutoCAD具有強大的圖形繪制和編輯功能, 兩種軟件均是許多行業(yè)的工程技術人員所必備的工具,,但集成兩種軟件的優(yōu)勢,,將兩者有機地結合起來卻并非易事。目前,,F(xiàn)ortran語言與AutoCAD軟件間數(shù)據(jù)通信方式主要有下面兩種[3-4]:
(1)將Fortran的計算結果輸出為DXF格式,利用AutoCAD將其打開即可看到計算的結果圖像,。DXF(Autodesk Drawing Exchange Format)是AutoCAD中的矢量文件格式,,它以ASCⅡ碼方式存儲文件,在表現(xiàn)圖形的大小方面十分精確,。
(2) 通過VB實現(xiàn)Fortran與AutoCAD之間的數(shù)據(jù)通信,,VB是通過AutoCAD ActiveX Automation接口來建立與AutoCAD對象之間的聯(lián)系。
本文采用第一種方法,,對AutoCAD軟件常用的基本繪圖命令利用Fortran語言編寫相應的接口子程序,,即建立Fortran與AutoCAD間的接口軟件。通過Fortran語言編程直接讀取離散控制點數(shù)據(jù),,通過對離散控制點進行曲線擬合,,最后生成AutoCAD支持的DXF文件,最終利用編程生成的模型在AutoCAD環(huán)境下顯示,,使其具有工程技術人員熟悉的友好用戶界面,,并且具有人機交互的功能。下面僅給出了部分程序的清單,。
繪制多段線的程序:
SUBROUTINEPLINE(X,Y,K,LY)
CHARACTER*(*)LY
DIMENSION(X(K),Y(K))
NA=0
WRITE(3,200)NA
WRITE(3,600)’POLYLINE’
NA=8
WRITE(3,200) NA
WRITE(3,600) LY
NA=66
WRITE(3,600) LY
WRITE(3,600) LY
NA=70
WRITE(3,200) NA
WRITE(3,600) LY
DO I=1,K
NA=0
WRITE(3,200) NA
WRITE(3,600)’VERTEX’
NA=8
WRITE(3,200) NA
WRITE(3,600) LY
NA=10
WRITE(3,200) NA
WRITE(3,210) Y(I)
CONTINUE
NA=0
WRITE(3,200) NA
WRITE(3,600)‘SEQEND’
NA=8
WRITE(3,200) NA
WRITE(3,600) LY
FORMAT(I3)
FORMAT(F12.6)
FORMAT(A)
RETURN
END
計算影響曲線形狀的加權系數(shù)的程序:
allocate(j(k+1,n))
m=n-1
t=1.0/k
call factorial(m,a)
do i=0,1,t
q=q+1
do w=0,m
call factorial(w,b)
,!求階乘的子程序
c=m-w
call factorial(c,d)
call power(i,w,e)
!求冪次的子程序
f=1.0-i
call power(f,c,g)
j(q,w+1)=a/(b*d)*e*g
end do
end do
3 實例應用
本文基于Bezier曲線自動繪制程序,,在實例3.2與實例3.3中添加了部分程序,,體現(xiàn)Bezier曲線自動繪制程序的價值所在。
3.1 翼型曲線的自動繪制
利用所編程序來繪制翼型的外形曲線,,表1為某翼型控制點數(shù)據(jù),,由數(shù)據(jù)分析可知該翼型為對稱翼型,,通過自編程序,實現(xiàn)其自動繪制,,并閉合曲線,,繪制后的曲線如圖1所示。若圖形不夠理想,,還可以改變控制點的參數(shù)來重新繪圖調(diào)整圖形,。
3.2 泵性能曲線的繪制
泵段及泵裝置在試驗結束后便需要進行性能曲線的繪制,而傳統(tǒng)的手工曲線繪制方法速度比較慢,,且無法保證精度要求,,目前,泵性能曲線的繪制多基于VB,、VC軟件基礎來開發(fā),。本文基于自行編制的Bezier曲線繪制程序來達到性能曲線自動繪制的目的,曲線更加光滑平順,、便于控制,,能滿足水泵汽蝕和效率的不同要求。通過該程序給出了某泵裝置的流量-揚程(Q-H)曲線(如圖2所示),、流量-效率(Q-η)曲線(如圖3所示),,其余的特性曲線均可采用本程序進行繪制。該程序不僅適用于水泵復雜特性曲線的擬合,,對其他如風機,、水輪機等動力機械的特性曲線擬合也會有較好的效果。
3.3 流場計算分析
以立柱繞流的流場計算為例,,在該程序的基礎上編寫有限元分析主體程序,。在曲線自動繪制基礎上,利用有限元法生成了立柱繞流的部分流場圖。生成好的DXF格式的模型圖,,可以在任何版本的AutoCAD環(huán)境下打開觀察,,具有良好的直觀性。圖4給出了部分流場的流速矢量圖,。
基于AutoCAD平臺,,利用Fortran語言編程,實現(xiàn)了Bezier曲線的自動繪制,,讓用戶直觀地感受Bezier曲線優(yōu)良的幾何特性,。該程序具有良好的通用性,本文立足于該程序在翼型繪制,、泵性能曲線繪制,、有限元分析方面的應用。通過本程序的開發(fā)對Bezier曲線的數(shù)學表達和幾何意義有了深刻的理解和直觀的認識,,也對Fortran90和AutoCAD間的鏈接及編程機制,、圖形處理功能建立了初步的認識,。以該程序為基礎,可進一步編寫與自己專業(yè)相關的專用接口子程序,。
參考文獻
[1] 孫家廣,,楊長貴.計算機圖形學(第二版)[M].北京:清華大學出版社,1995.
[2] 許凱,,趙新明.基于拐點分割的Bezier曲線降階[J].上海交通大學學報,,2007,41(8):1223-1226.
[3] 費璟昊,,李俊杰,,齊同軍.Fortran與AutoCAD間數(shù)據(jù)通信的幾種方法[J].電腦編程技巧與維護,2001(6):41- 42,,45.
[4] 湯方平.Fortran語言生成DXF圖形交換文件通用子程序設計[J].微型計算機,,1995,15(6):57-58.