国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MATLAB的Bezier樣條在曲線曲面造型中的應(yīng)用

2013-04-29 17:12:38張書華馬蘇奇
新課程·下旬 2013年6期

張書華 馬蘇奇

摘 要:Bezier樣條作為曲線曲面造型技術(shù)的一個(gè)重要分支被廣泛運(yùn)用于CAD/CAM技術(shù)。以MATLAB為程序平臺(tái),以Bezier樣條為理論基礎(chǔ),首先設(shè)計(jì)出繪制曲線曲面的程序算法,進(jìn)而通過算法編寫出可實(shí)際操作的程序,最后用實(shí)例進(jìn)行驗(yàn)證。其中更實(shí)現(xiàn)了對(duì)曲線的擬合以及將設(shè)計(jì)得到的曲面數(shù)據(jù)輸入逆向工程軟件imageware,從而達(dá)到利用造型成果其進(jìn)行更加復(fù)雜的造型構(gòu)造的目的。

關(guān)鍵詞:Bezier樣條;MATLAB;imageware

Bezier曲線起源于20世紀(jì)60年代晚期,著名的法國(guó)數(shù)學(xué)家皮耶爾·Bezier運(yùn)用數(shù)學(xué)方法為雷諾公司的汽車制造業(yè)研究出一種矢量繪制曲線的方法。這種方法的巧妙之處在于它是利用控制矢量點(diǎn)位置的變動(dòng)從而改變曲線的形態(tài)?,F(xiàn)代設(shè)計(jì)師大部分都是在計(jì)算機(jī)上進(jìn)行設(shè)計(jì),而在過去并沒有發(fā)明手寫板的時(shí)候,設(shè)計(jì)師們很難用鼠標(biāo)繪制理想的曲線。Bezier樣條的出現(xiàn)大大改變了這種困境,讓設(shè)計(jì)師們通過輸入控制點(diǎn)坐標(biāo),從而很容易地得到所需要的曲線。

MATLAB是美國(guó)MathWorks公司出品的一款商業(yè)數(shù)學(xué)軟件,主要包括MATLAB和Simulink兩大部分,是一種編程語言和數(shù)值計(jì)算環(huán)境。和其他數(shù)學(xué)類科技應(yīng)用軟件相比,MATLAB無論在數(shù)值計(jì)算還是圖形處理上都占有很大優(yōu)勢(shì)。本文主要討論的就是運(yùn)用Bezier樣條原理在MATLAB上實(shí)現(xiàn)曲線擬合以及曲線曲面造型。

一、Bezier曲線造型

1.Bezier曲線理論原理

在空間中設(shè)定n+1個(gè)點(diǎn)p0,…pn,則下列參數(shù)曲線為n次Bezier曲線:

P(t)=■PiJi,n(t),0≤t≤1

式中Ji,n(t)是伯恩斯坦基函數(shù),即

Ji,n(t)=Cinti(1-t)n-i

Cin=■,i=0,……,n

以三次Bezier曲線為例,如果p0、p1、p2、p3是空間中的四個(gè)點(diǎn),那么三次多項(xiàng)式曲線

p3(t)=■PiB3,t(t)

可用矩陣表示如下:

P(t)=[t3t2t1]-1 3 -3 13 -6 3 0-3 3 0 01 0 0 0P0P1P2P3

式中Bi是第i個(gè)Bezier多項(xiàng)式,被稱為三次Bezier曲線包含了控制點(diǎn)p0,…p3。

2.Bezier曲線造型程序設(shè)計(jì)

在實(shí)際擬合造型的操作中,更為復(fù)雜的圖形往往由多種曲線構(gòu)成,它們的復(fù)雜程度和拐點(diǎn)個(gè)數(shù)各不相同。按照上面的思路,則每遇到一種曲線就需要編寫一個(gè)程序,這顯然是麻煩而不切實(shí)際的。為了實(shí)現(xiàn)造型目的,需要編寫一種不受函數(shù)次數(shù)限制的程序,以適應(yīng)所有的曲線情況。

通過構(gòu)造參數(shù)點(diǎn)坐標(biāo)矩陣,以伯恩斯坦基函數(shù)為基礎(chǔ)而非某個(gè)特定次數(shù)的Bezier函數(shù),用for循環(huán)實(shí)現(xiàn)i從0到n(輸入控制點(diǎn)個(gè)數(shù))的伯恩斯坦基函數(shù)的疊加,得到參數(shù)t以1/m為步長(zhǎng)從0到1變化時(shí)曲線上m個(gè)點(diǎn)的坐標(biāo)并填入坐標(biāo)矩陣,最后連接這些坐標(biāo)點(diǎn)得到曲線,從而達(dá)到不受函數(shù)次數(shù)限制的目的。根據(jù)上述思路編寫了以下程序:

這樣,當(dāng)輸入不同個(gè)數(shù)的參數(shù)點(diǎn),就可以得到不同次數(shù)的曲線。

當(dāng)需要對(duì)曲線進(jìn)行擬合的時(shí)候,只知道曲線情況,而不知道控制點(diǎn)的坐標(biāo),則需要通過曲線上的點(diǎn)對(duì)其進(jìn)行反求。根據(jù)Bezier曲線的矩陣形式以及伯恩斯坦基函數(shù)可以很容易寫出數(shù)值方法反求控制點(diǎn)坐標(biāo)的程序。

3.Bezier曲線造型應(yīng)用

首先在坐標(biāo)紙上設(shè)計(jì)出需要的圖案。

根據(jù)曲線實(shí)際情況(復(fù)雜程度、拐點(diǎn)個(gè)數(shù)、曲率大小等)將曲線分段并選擇坐標(biāo)點(diǎn),通過對(duì)上文編寫得到的反求控制點(diǎn)程序以及曲線造型程序的結(jié)合使用,最終可以在MATLAB上得到下面這幅擬合度很高的圖案(因?yàn)樵煨瓦^程較為繁瑣復(fù)雜,本文省略中間造型程序)。

二、Bezier曲面造型

1.Bezier曲面理論原理

先給出一條以u(píng)為參數(shù)的m次Bezier曲線:

P=■PiBi,m(u),0≤u≤1(1)

式中Bi,m(u)為伯恩斯坦基函數(shù)。

讓p的(m+1)個(gè)控制點(diǎn)分別沿著空間的(m+1)條曲線運(yùn)動(dòng),而這些曲線都是以w為參數(shù)的n次Bezier曲線:

Pi=■Pi,jBi,n(w),0≤w≤1(2)

將方程(2)代入方程(1),得到Bezier曲面的表達(dá)式

P(u,w)=P=■■Pi,jBi,m(u)Bj,n(w) 0≤u,0≤w≤1(3)

將Bezier曲面方程(3)改寫成矩陣形式

P(u,w)=B0,m(u)B1,m(u)…Bm,m(u)·

P0,0 P0,1…P0,nP1,0 P1,1…P1,nPm,0 Pm,1…Pm,nB0,n(w)B1,n(w)Bm,n(w)0≤u,w≤1(4)

把方程(4)用冪基的形式表示出來,表示為:

P(u,w)=[U][Mm][p][Mn]T[W]0≤u,w≤1(5)

式中,[U]=[um um-1…u 1];[W]=[wn wn-1…w 1]T;[Mm],[Mn]分別為m次與n次的冪基矩陣。

2.Bezier曲面造型程序設(shè)計(jì)

由上述方程的冪基形式編寫曲面造型主要程序:

編寫曲面造型程序的難點(diǎn)依然在于因?yàn)槿绾巫尦绦蜻m應(yīng)不同次數(shù)的Bezier函數(shù)的需要。顯然由于這是一個(gè)以矩陣為基礎(chǔ)的程序,則同曲面程序那樣采用循環(huán)語句的方式是很麻煩的。由上述程序可以看出,不同次數(shù)的Bezier函數(shù)所需要的參數(shù)矩陣和系數(shù)矩陣都不相同,參數(shù)矩陣很容易改變。所以問題在于如何快速創(chuàng)建龐大的系數(shù)矩陣。

還是以雙三次Bezier曲面為例,首先用taylor對(duì)曲線函數(shù)進(jìn)行泰勒展開:

接下來使用命令sym2poly提取其中的系數(shù):

最后用reshape將系數(shù)轉(zhuǎn)化為矩陣形式:

這樣,當(dāng)輸入命令xishujuzhen(n)時(shí),就可以直接得到n次Bezier曲面的系數(shù)矩陣。

3.Bezier曲線造型應(yīng)用

以雙三次Bezier曲面為例,通過輸入控制點(diǎn)坐標(biāo)可得到以下曲面:

Px=[2 4 6 8; 2 4 6 8; 2 4 6 8; 2 4 6 8];

Py=[8 7 7 8; 6 6 6 6; 4 4 4 4; 2 3 3 2];

Pz=[20 0 0 20; 8 10 10 8; 8 10 10 8; 20 0 0 20];

由于MATLAB所繪制的曲面是無法直接導(dǎo)入imageware的。所以可以想到通過把程序計(jì)算所得的矩陣數(shù)據(jù)經(jīng)過一系列矩陣變形與合并,最后將其存儲(chǔ)為點(diǎn)云數(shù)據(jù)文件,導(dǎo)入imageware中。繼而在imageware里將點(diǎn)云擬合成曲面,從而更加直觀地把構(gòu)造得到的曲面體現(xiàn)出來,并實(shí)現(xiàn)對(duì)其加工編輯,甚至直接制造工件。以上面最后一個(gè)曲面為例,得到以下點(diǎn)云圖,以及最終曲面。

總之,Bezier樣條作為曲線曲面造型中極為重要的基礎(chǔ)樣條之一,被廣泛運(yùn)用于CAD/CAM技術(shù)中。借助其方便快捷的控制方法以及優(yōu)秀的曲線屬性,曲線曲面的快速造型得以實(shí)現(xiàn)。

本文設(shè)計(jì)的造型程序不受函數(shù)次數(shù)限制,只需輸入控制點(diǎn)數(shù)據(jù)即可進(jìn)行造型。同時(shí),在曲線造型中實(shí)現(xiàn)了根據(jù)手繪的曲線在MATLAB中擬合出相應(yīng)圖形,在曲面造型中實(shí)現(xiàn)了造型數(shù)據(jù)向三維制作程序的對(duì)接。使得程序具有了極強(qiáng)的實(shí)用性。

參考文獻(xiàn):

[1]徐甜,劉凌霞.Bezier曲線的算法描述及其程序?qū)崿F(xiàn)[N].安陽師范學(xué)院學(xué)報(bào),2006(46).

[2]郝小忠.Bezier曲面建模方法研究與實(shí)現(xiàn)[J].中國(guó)制造業(yè)信息化,2011,40(23):42-45.

[3]王天軍.一個(gè)反求Bezier曲面控制點(diǎn)的算法[N].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),1992(3).

[4]Prof Denis Zorin. Bezier Curves and B-splines[Z]. New York: New York University, 2002.

(作者單位 張書華:中國(guó)農(nóng)業(yè)大學(xué)理學(xué)院2009級(jí)數(shù)學(xué)1班 馬蘇奇:中國(guó)農(nóng)業(yè)大學(xué)理學(xué)院)

云安县| 莆田市| 梓潼县| 镇雄县| 嫩江县| 璧山县| 四子王旗| 荔浦县| 银川市| 遂昌县| 启东市| 星子县| 荔波县| 巴马| 交口县| 绥化市| 大庆市| 余庆县| 高雄市| 绍兴市| 宁南县| 呈贡县| 临朐县| 宣武区| 黄陵县| 溆浦县| 嘉定区| 玉溪市| 开化县| 扎囊县| 泰州市| 普洱| 宁化县| 景洪市| 东丽区| 四子王旗| 金溪县| 隆回县| 应城市| 如东县| 石林|