《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > EDA與制造 > 設(shè)計(jì)應(yīng)用 > 基于Visual Fortran和AutoCAD的Bezier曲線的自動(dòng)繪制及應(yīng)用
基于Visual Fortran和AutoCAD的Bezier曲線的自動(dòng)繪制及應(yīng)用
來源:微型機(jī)與應(yīng)用2010年第18期
楊 帆1, 湯方平2
(1. 揚(yáng)州大學(xué) 水利科學(xué)與工程學(xué)院, 江蘇 揚(yáng)州 225009; 2. 揚(yáng)州大學(xué) 能源與動(dòng)力工程學(xué)
摘要: 以Fortran90語(yǔ)言和AutoCAD圖形軟件為平臺(tái),,開發(fā)了Bezier曲線繪制子程序,,該程序能夠保存,、處理數(shù)據(jù)文件,,形成直觀曲線供用戶輸出,實(shí)現(xiàn)了計(jì)算機(jī)自動(dòng)繪圖的目的,?;谠撟映绦蚓幹屏瞬糠謶?yīng)用主程序體現(xiàn)出自動(dòng)繪圖子程序的應(yīng)用價(jià)值。
Abstract:
Key words :

摘  要: 以Fortran90語(yǔ)言和AutoCAD圖形軟件為平臺(tái),,開發(fā)了Bezier曲線繪制子程序,,該程序能夠保存、處理數(shù)據(jù)文件,,形成直觀曲線供用戶輸出,,實(shí)現(xiàn)了計(jì)算機(jī)自動(dòng)繪圖的目的?;谠撟映绦蚓幹屏瞬糠謶?yīng)用主程序體現(xiàn)出自動(dòng)繪圖子程序的應(yīng)用價(jià)值,。
關(guān)鍵詞:Bezier曲線; 自動(dòng)繪制; 應(yīng)用

1 Bezier曲線及其原理
    20世紀(jì)60年代,法國(guó)雷諾汽車公司的工程師貝濟(jì)爾提出了用控制多邊形定義曲線的方法,即Bezier曲線,,因該曲線采用了一組獨(dú)特的多項(xiàng)式基函數(shù),,使其具有許多優(yōu)良的特性,在諸多形式的參數(shù)多項(xiàng)式曲線中獨(dú)樹一幟,,一經(jīng)問世,,就受到工業(yè)界和計(jì)算機(jī)輔助幾何設(shè)計(jì)研究者的廣泛重視[1],。Bezier曲線算法是一種直觀、易于調(diào)整,、高效率的曲線擬合方法,,這種方法能使使用者在工程設(shè)計(jì)中比較直觀地意識(shí)到所給條件與設(shè)計(jì)出的曲線之間的關(guān)系,能方便地控制輸入控制點(diǎn)以改變曲線的形狀,。Bezier曲線的形狀由點(diǎn)的位置確定,,而且曲線可能并不通過除兩端點(diǎn)外的所有給定點(diǎn),,點(diǎn)數(shù)量不夠或點(diǎn)位置難以處理的情況下,,用三次樣條曲線方法也許不能生產(chǎn)光滑曲線。
    Bezier曲線有不同的數(shù)學(xué)定義形式,,如德卡斯特里奧遞歸(deCasteljau)算法,、波恩斯坦基(Bernstein)原理等。本文中Bezier曲線的自動(dòng)繪制方法采用Bernstein原理和參考文獻(xiàn)[2]提出的將中點(diǎn)分割和拐點(diǎn)分割相混合的Bezier曲線降階方法,,其中Bezier曲線的數(shù)學(xué)基礎(chǔ)(影響曲線形狀的加權(quán)系數(shù))來自下式給出的Bernstein原理[1]:
 
2 軟件的接口及編程
 Fortran語(yǔ)言具有強(qiáng)大的數(shù)學(xué)計(jì)算功能,,AutoCAD具有強(qiáng)大的圖形繪制和編輯功能, 兩種軟件均是許多行業(yè)的工程技術(shù)人員所必備的工具,,但集成兩種軟件的優(yōu)勢(shì),,將兩者有機(jī)地結(jié)合起來卻并非易事。目前,,F(xiàn)ortran語(yǔ)言與AutoCAD軟件間數(shù)據(jù)通信方式主要有下面兩種[3-4]:
    (1)將Fortran的計(jì)算結(jié)果輸出為DXF格式,,利用AutoCAD將其打開即可看到計(jì)算的結(jié)果圖像。DXF(Autodesk Drawing Exchange Format)是AutoCAD中的矢量文件格式,,它以ASCⅡ碼方式存儲(chǔ)文件,,在表現(xiàn)圖形的大小方面十分精確。
    (2) 通過VB實(shí)現(xiàn)Fortran與AutoCAD之間的數(shù)據(jù)通信,,VB是通過AutoCAD ActiveX Automation接口來建立與AutoCAD對(duì)象之間的聯(lián)系,。
    本文采用第一種方法,對(duì)AutoCAD軟件常用的基本繪圖命令利用Fortran語(yǔ)言編寫相應(yīng)的接口子程序,,即建立Fortran與AutoCAD間的接口軟件,。通過Fortran語(yǔ)言編程直接讀取離散控制點(diǎn)數(shù)據(jù),通過對(duì)離散控制點(diǎn)進(jìn)行曲線擬合,,最后生成AutoCAD支持的DXF文件,,最終利用編程生成的模型在AutoCAD環(huán)境下顯示,使其具有工程技術(shù)人員熟悉的友好用戶界面,,并且具有人機(jī)交互的功能,。下面僅給出了部分程序的清單。
    繪制多段線的程序:
    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
    計(jì)算影響曲線形狀的加權(quán)系數(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 實(shí)例應(yīng)用
    本文基于Bezier曲線自動(dòng)繪制程序,在實(shí)例3.2與實(shí)例3.3中添加了部分程序,體現(xiàn)Bezier曲線自動(dòng)繪制程序的價(jià)值所在,。
3.1 翼型曲線的自動(dòng)繪制
    利用所編程序來繪制翼型的外形曲線,,表1為某翼型控制點(diǎn)數(shù)據(jù),由數(shù)據(jù)分析可知該翼型為對(duì)稱翼型,,通過自編程序,,實(shí)現(xiàn)其自動(dòng)繪制,并閉合曲線,,繪制后的曲線如圖1所示,。若圖形不夠理想,還可以改變控制點(diǎn)的參數(shù)來重新繪圖調(diào)整圖形,。

3.2 泵性能曲線的繪制
    泵段及泵裝置在試驗(yàn)結(jié)束后便需要進(jìn)行性能曲線的繪制,,而傳統(tǒng)的手工曲線繪制方法速度比較慢,且無(wú)法保證精度要求,,目前,,泵性能曲線的繪制多基于VB、VC軟件基礎(chǔ)來開發(fā),。本文基于自行編制的Bezier曲線繪制程序來達(dá)到性能曲線自動(dòng)繪制的目的,,曲線更加光滑平順、便于控制,,能滿足水泵汽蝕和效率的不同要求,。通過該程序給出了某泵裝置的流量-揚(yáng)程(Q-H)曲線(如圖2所示)、流量-效率(Q-η)曲線(如圖3所示),,其余的特性曲線均可采用本程序進(jìn)行繪制,。該程序不僅適用于水泵復(fù)雜特性曲線的擬合,對(duì)其他如風(fēng)機(jī),、水輪機(jī)等動(dòng)力機(jī)械的特性曲線擬合也會(huì)有較好的效果,。

3.3 流場(chǎng)計(jì)算分析
    以立柱繞流的流場(chǎng)計(jì)算為例,在該程序的基礎(chǔ)上編寫有限元分析主體程序,。在曲線自動(dòng)繪制基礎(chǔ)上,利用有限元法生成了立柱繞流的部分流場(chǎng)圖,。生成好的DXF格式的模型圖,可以在任何版本的AutoCAD環(huán)境下打開觀察,,具有良好的直觀性,。圖4給出了部分流場(chǎng)的流速矢量圖。

    基于AutoCAD平臺(tái),,利用Fortran語(yǔ)言編程,,實(shí)現(xiàn)了Bezier曲線的自動(dòng)繪制,讓用戶直觀地感受Bezier曲線優(yōu)良的幾何特性,。該程序具有良好的通用性,,本文立足于該程序在翼型繪制,、泵性能曲線繪制、有限元分析方面的應(yīng)用,。通過本程序的開發(fā)對(duì)Bezier曲線的數(shù)學(xué)表達(dá)和幾何意義有了深刻的理解和直觀的認(rèn)識(shí),,也對(duì)Fortran90和AutoCAD間的鏈接及編程機(jī)制、圖形處理功能建立了初步的認(rèn)識(shí),。以該程序?yàn)榛A(chǔ),,可進(jìn)一步編寫與自己專業(yè)相關(guān)的專用接口子程序。
參考文獻(xiàn)
[1]  孫家廣,,楊長(zhǎng)貴.計(jì)算機(jī)圖形學(xué)(第二版)[M].北京:清華大學(xué)出版社,,1995.
[2]  許凱,趙新明.基于拐點(diǎn)分割的Bezier曲線降階[J].上海交通大學(xué)學(xué)報(bào),,2007,,41(8):1223-1226.
[3]  費(fèi)璟昊,李俊杰,,齊同軍.Fortran與AutoCAD間數(shù)據(jù)通信的幾種方法[J].電腦編程技巧與維護(hù),2001(6):41- 42,,45.
[4]  湯方平.Fortran語(yǔ)言生成DXF圖形交換文件通用子程序設(shè)計(jì)[J].微型計(jì)算機(jī),,1995,15(6):57-58.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。