張劍英 ,許 徽,陳 娟,韋文思 ,夏 杰
(1.中國礦業(yè)大學(xué) 信電學(xué)院,江蘇 徐州 221116;2.中國礦業(yè)大學(xué) 材料科學(xué)與工程學(xué)院,江蘇 徐州 221116;3.河南煤業(yè)化工集團(tuán)焦煤公司計訊處,河南 焦作 454002)
樣條函數(shù)自提出以來,以其構(gòu)造簡單、易于計算、及很好的力學(xué)背景等特點被廣泛用于科學(xué)計算、工程設(shè)計和計算機(jī)輔助設(shè)計等領(lǐng)域,從而成為最重要的曲線和曲面構(gòu)造方法之一[1]。
三次樣條曲線在使用中存在局限性,且表示方法缺乏幾何不變性[2]。即當(dāng)平面直角坐標(biāo)系中的型值點發(fā)生旋轉(zhuǎn)等幾何變形時,其曲線的形狀也發(fā)生變形,嚴(yán)重時甚至不能保證滿足x1<x2<…<xn的條件,對表現(xiàn)曲線的幾何形狀極為不便;在使用AutoCAD中spline命令繪制樣條曲線時,可能導(dǎo)致各型值點的橫坐標(biāo)也不能滿足x1<x2<…<xn的條件。為了解決這些問題,一些學(xué)者運用向心參數(shù)法在周期性三次樣條曲線擬合控制多邊形時,取得了較小的偏差[3];基于累加弦長的三次參數(shù)樣條曲線插值在數(shù)控系統(tǒng)中取得了較好的效果[4],但是以累加弦長為參數(shù)的三次參數(shù)樣條曲線插值和基樣條的函數(shù)插值在各分段曲線兩端曲率的符號相同的情況下都有可能產(chǎn)生這段曲線上的拐點,造成曲線不光順。因此一些準(zhǔn)則提出檢查多余的拐點[5],YE J等人修正了Kjellander的方法[6],并從累加弦長參數(shù)化和光順函數(shù)兩方面消除了三次參數(shù)樣條曲線的振蕩和回折[7]。章虎冬等人提出了基于離散曲率的三次參數(shù)樣條曲線的自動光順?biāo)惴╗8]。
本文以三次樣條曲線的第i段的弦長為參數(shù)實現(xiàn)該段的三次樣條曲線的參數(shù)化繪制。
AutoCAD提供了多種軟件接口[9],包括 AutoLISP(Auto List Progressing),ADS(AutoCAD Development System,C-based),DCL(Dialog Control Language),ARX(Auto-CAD Runtime Extension,C++based),VBA(Visual Basic for Applications)和 COM/OLE/ActiveX來實現(xiàn) AutoCAD與其他軟件的數(shù)據(jù)交換。HAO J P等人采用AutoCAD和VBA的可靠性分析可視化系統(tǒng)[10]。于代俊等人在Auto-CAD平臺上和VC++開發(fā)環(huán)境下,利用ObjectARX開發(fā)工具包完成了基于三次參數(shù)樣條曲線等高線的矢量化繪制[11]。ObjectARX開發(fā)的應(yīng)用程序是動態(tài)鏈接庫(DLL),該程序與AutoCAD共享一個地址空間,并可直接調(diào)用AutoCAD的內(nèi)部函數(shù),直接訪問AutoCAD數(shù)據(jù)庫結(jié)構(gòu)、圖形系統(tǒng)以及AutoCAD幾何造型核心,實現(xiàn)快速、穩(wěn)定、實時擴(kuò)展AutoCAD的功能。本文以圖形交換文件(DXF)格式實現(xiàn)AutoCAD與VC++之間的數(shù)據(jù)交換。
DXF是AutoCAD領(lǐng)域的一種標(biāo)準(zhǔn)數(shù)據(jù)交換格式,其包含了所有圖層的幾何形狀和幾何尺寸,該格式對于提取AutoCAD文件的幾何信息提供了強(qiáng)有力的支持。本文將AutoCAD繪制的三次樣條圖形導(dǎo)出形成DXF格式文件之后,提取出各三次樣條曲線的起始端點切向、終止端點切向、型值點數(shù)及相應(yīng)的型值點的坐標(biāo)值,然后利用提取出的數(shù)據(jù)繪制三次參數(shù)樣條曲線。
圖1所示為運用高級軟件VC++編程提取DXF文件中三次樣條曲線的數(shù)據(jù)和參數(shù)繪制三次樣條曲線的流程圖。
三次參數(shù)樣條函數(shù)的基本要求是:已知n個型值點Pi(i=1,2,…,n),且相鄰型值點不重合;若 P(t)滿足下列條件:(1)型值點 P 在函數(shù) P(t)上;(2)P(t)在整個[Pi,Pn]上二次連續(xù)可導(dǎo);(3)在每個子區(qū)間[Pi,Pi+1]上(i=1,2,…,n-1),Pi(t)都是參數(shù) t的三次多項式,而參數(shù) t以相鄰型值點之間的弦長為取值變化范圍。則稱P(t)是過型值點的三次參數(shù)樣條曲線。
如果取消了這些向量中的z分量,就變成了二維曲線。
由于本文繪制二維的三次參數(shù)樣條曲線,所以第i段的三次參數(shù)樣條曲線的表達(dá)式為:
洪口型為[n、?]尾二分型,根據(jù)初步調(diào)查,洪口方言中中古咸、深、山、臻攝讀作[n]尾,宕、江、曾、梗、通攝讀作[?]尾。 例如:
Li為第i段的弦長,且有:
根據(jù)定義中給出的已知條件,確定其各待定系數(shù)。
對Pi(t)2次求導(dǎo)有:
圖1 提取DXF文件中三次樣條曲線數(shù)據(jù)流程圖
當(dāng) t=0時,第 i段子曲線對應(yīng)于端點 Pi,則
當(dāng) t=Li時,第 i段子曲線對應(yīng)于端點 Pi+1,則
設(shè)第i段子曲線在型值點Pi處的二階導(dǎo)數(shù)向量為Mi,則有:
由上述4式可求得各系數(shù)向量為:
因此可得第i段型值點處的二階導(dǎo)數(shù)向量,該段三次參數(shù)樣條函數(shù)為:
利用函數(shù)P(t)的一階導(dǎo)數(shù)連續(xù)求解各型值點處的二階導(dǎo)數(shù)向量Mi。
又 P′i-1(Li-1)=P′i(0)
則有λiMi-1+2Mi+μiMi+1=Dii=2,3,…,n-1
在AutoCAD中,用spline命令繪制三次樣條曲線時,采用邊界約束為夾持端,所以
此時各型值點的二階導(dǎo)數(shù)向量Mi可用矩陣表示如下:
用三對角矩陣的追趕法[12]求得二階導(dǎo)數(shù)向量Mi的值,從而寫出第i段弦長為參數(shù)的三次參數(shù)樣條曲線函數(shù)表達(dá)式。
本文用VC++編程從AutoCAD將繪有三次樣條曲線圖形導(dǎo)出DXF格式文件,并從該DXF格式文件中提取所有三次樣條曲線的起始端點切向、終止端點切向、擬合點數(shù)與擬合點的坐標(biāo)值。編程求出所有三次樣條曲線各段三次參數(shù)樣條曲線函數(shù)表達(dá)式,最后用所求的表達(dá)式將各三次樣條曲線繪制出來。如圖2(除外面邊框外)、圖4(除外面邊框和中心的兩圓外)所示的圖形都是用AutoCAD的spline命令繪制的三次樣條曲線。圖3、圖5分別為圖2、圖4在AutoCAD中用DXFOUT命令導(dǎo)出形成DXF文件格式,并用VC++編程提取出來的DXF文件信息繪制的三次參數(shù)樣條曲線圖。
圖2 AutoCAD繪制的三次樣條曲線
圖3 VC++繪制的三次參數(shù)樣條曲線
圖4 AutoCAD繪制的三次樣條曲線
圖5 VC++繪制的三次樣條曲線
本文介紹了三次參數(shù)樣條曲線的研究現(xiàn)狀和Auto CAD軟件接口,提出了以DXF文件格式為橋梁,實現(xiàn)AutoCAD圖形與VC++之間的數(shù)據(jù)交換,并運用高級語言VC++編程從DXF文件中提取出各三次樣條曲線的起始端點切向、終止端點切向、型值點數(shù)及相應(yīng)型值點坐標(biāo)。同時,提出了三次參數(shù)樣條曲線的生成原理,并應(yīng)用該原理VC++編程實現(xiàn)了三次參數(shù)樣條曲線的繪制。從曲線生成原理及最后結(jié)果可以看出,該方法有效地解決了三次樣條曲線的參數(shù)化繪制,準(zhǔn)確地再現(xiàn)了真實的圖形。
[1]張彩明.高精度三次參數(shù)樣條曲線的構(gòu)造[J].計算機(jī)學(xué)報,2002,25(3):262-268.
[2]魏海濤.計算機(jī)圖形學(xué)[M].北京:電子工業(yè)出版社,2001.
[3]MISCHAEL S, Floater.On the deviation of a parametric cubic spline interpolant from its date polygon[J].Computer Aided Geometric Design, 2008,25:148-156.
[4]談勇,王治森,閆曉婧.基于累加弦長的三次參數(shù)樣條曲線的插補(bǔ)控制[J].合肥工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2004,27(6):619-622.
[5]蘇步青.關(guān)于三次參數(shù)樣條曲線的一些注記[J].應(yīng)用數(shù)學(xué)學(xué)報,1976(1):49-58.
[6]KJELLANDER JA P.Smoothingofcubicparametric splines[J].Compute Aided Des, 1983,15:175-179.
[7]YE J, QU R.Fairing of parametric cubic splines[J].Mathematical and Computer Modeling, 1999,30:121-131.
[8]章虎冬,蔣大為.三次參數(shù)樣條曲線的自動光順?biāo)惴╗J].陜西郵電學(xué)院學(xué)報,2006,11(3)116-118.
[9]MANSOUR N, MOHAMMAD J, DREES I.Cost estimation of structural skeleton using an interactive automation algorithm: A conceptual approach[J].Automation in Construction, 2007,16:797-805.
[10]HAO J P, YU Y L, XUE Q.A maintainability analysis visualization system and its development under the Auto-CAD environment[J].Journal of Materials Processing Technology, 2002,129:277-282.
[11]余代俊,耿留勇.三次參數(shù)樣條曲線在等高線矢量化中的化中的應(yīng)用[J].測繪與空間地球信息,2007,60(6):153-155.
[12]關(guān)治.數(shù)值分析[M].北京:清華大學(xué)出版社,2006.