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

?

一種基于de Casteljau算法的Bezier曲線(xiàn)插補(bǔ)方法

2017-07-06 09:50:14宋健桑運(yùn)曉劉同壯
山東工業(yè)技術(shù) 2017年12期

宋健+桑運(yùn)曉+劉同壯

摘 要:為了克服數(shù)據(jù)采樣法插補(bǔ)Bezier曲線(xiàn)必然會(huì)產(chǎn)生軌跡誤差而且運(yùn)算量大、實(shí)時(shí)性不好的問(wèn)題,以Paul de Casteljau在1959年提出的de Casteljau算法為理論依據(jù),研究出了一種用DDA直線(xiàn)插補(bǔ)器級(jí)聯(lián)的方式遞推出任意階Bezier曲線(xiàn)的新方法。該方法用多個(gè)DDA直線(xiàn)插補(bǔ)器分級(jí)同時(shí)進(jìn)行插補(bǔ),前一級(jí)的輸出脈沖用來(lái)修正相鄰后一級(jí)的被積函數(shù)寄存器,最后一級(jí)輸出用來(lái)驅(qū)動(dòng)進(jìn)給。最后用Visual Studio 2010編寫(xiě)了仿真程序進(jìn)行了模擬插補(bǔ),證實(shí)了其正確性。這個(gè)全新的加工Bezier曲線(xiàn)的方法更加準(zhǔn)確、實(shí)時(shí)性更好,同時(shí)也為B樣條、NURBS等曲線(xiàn)的加工提供了嶄新的思路。

關(guān)鍵詞:Bezier曲線(xiàn);直接插補(bǔ);de Casteljau算法;DDA法

DOI:10.16640/j.cnki.37-1222/t.2017.12.220

0 引言

目前的CNC系統(tǒng),對(duì)于直線(xiàn)和圓弧可以采用脈沖增量插補(bǔ)原理直接進(jìn)行插補(bǔ)。而對(duì)于Bezier曲線(xiàn)、樣條曲線(xiàn)等的插補(bǔ)只能采用數(shù)據(jù)采樣插補(bǔ)原理,先進(jìn)行粗插補(bǔ),然后再用脈沖增量插補(bǔ)法對(duì)微小的直線(xiàn)段進(jìn)行精插補(bǔ)。數(shù)據(jù)采樣法在原理上決定了其逼近的過(guò)程中肯定會(huì)產(chǎn)生軌跡誤差,而且插補(bǔ)程序比較復(fù)雜。為了避免數(shù)據(jù)采樣插補(bǔ)法所帶來(lái)的問(wèn)題,在de Casteljau算法的幾何模型的啟發(fā)下,提出了用DDA法遞推插補(bǔ)出Bezier曲線(xiàn)的基本思想。

1 de Casteljau算法

de Casteljau算法最基本的過(guò)程就是在向量上取一個(gè)點(diǎn)C,使得C分向量為(即)。下文中稱(chēng)此過(guò)程為在某線(xiàn)段(這里為)上取Bezier點(diǎn)。給定端點(diǎn)A和B的坐標(biāo)以及的值,點(diǎn)C的坐標(biāo)便為:。

當(dāng)Bezier曲線(xiàn)階數(shù)大于等于2時(shí),即可利用上述過(guò)程進(jìn)行迭代,具體步驟如下。定義Bezier曲線(xiàn)的控制點(diǎn)編號(hào)為ij,其中i表示迭代次數(shù),j表示每次迭代中的控制點(diǎn)序號(hào)。為了計(jì)算n階貝塞爾曲線(xiàn)(控制點(diǎn)個(gè)數(shù)為n+1)上的點(diǎn)C(),,首先將控制點(diǎn)依次連接形成一條折線(xiàn)00-01-02-……-0(n-1)-0n。按上述過(guò)程,在構(gòu)成折線(xiàn)的每條線(xiàn)段上取Bezier點(diǎn),總共有n個(gè),記為10、11、12、……、1(n-2)、1(n-1),然后再把這些點(diǎn)依次連成一條折線(xiàn)10-11-12-……-1(n-2)-1(n-1),再在此折線(xiàn)的每條線(xiàn)段上取Bezier點(diǎn),總共有n-1個(gè),以此類(lèi)推。

2 利用DDA法對(duì)Bezier曲線(xiàn)進(jìn)行直接插補(bǔ)

在上述de Casteljau算法的理論基礎(chǔ)上,研究出了直接用直線(xiàn)插補(bǔ)迭代遞推出Bezier曲線(xiàn)的方法。

2.1 二階及以上Bezier曲線(xiàn)插補(bǔ)

由de Casteljau算法可知,二階Bezier曲線(xiàn)上的點(diǎn)可以按如下方法獲?。喊芽刂泣c(diǎn)依次連成一條折線(xiàn),在折線(xiàn)的每條線(xiàn)段上取Bezier點(diǎn),再把兩個(gè)Bezier點(diǎn)連起來(lái),在此連線(xiàn)上取Bezier點(diǎn)即為二階Bezier曲線(xiàn)上的點(diǎn)。要插補(bǔ)的線(xiàn)段是不斷變化的,線(xiàn)段的起點(diǎn)和終點(diǎn)要根據(jù)前一級(jí)插補(bǔ)的驅(qū)動(dòng)脈沖進(jìn)行修正。在所有的線(xiàn)段上用同一個(gè)插補(bǔ)控制脈沖進(jìn)行插補(bǔ)即可插補(bǔ)出任意階Bezier曲線(xiàn)。

如圖1所示為DDA法直接插補(bǔ)二階Bezier曲線(xiàn)的原理框圖:

圖中和分別為三個(gè)控制點(diǎn)的橫坐標(biāo)和縱坐標(biāo),和為最終驅(qū)動(dòng)相應(yīng)坐標(biāo)軸的進(jìn)給脈沖,為插補(bǔ)迭代控制脈沖。此處,需要強(qiáng)調(diào)的是三個(gè)插補(bǔ)脈沖為同一個(gè),每來(lái)一個(gè)脈沖,三個(gè)插補(bǔ)器同時(shí)進(jìn)行插補(bǔ),六個(gè)被積函數(shù)寄存器中的值都要送往相應(yīng)的積分累加器中相加一次。第一級(jí)的兩個(gè)插補(bǔ)器的溢出脈沖用來(lái)修正后一級(jí)插補(bǔ)器的被積函數(shù)寄存器的值。在第一級(jí)的第一個(gè)插補(bǔ)器中,當(dāng)(或)時(shí),(或)的溢出脈沖(或)為正,每輸出一個(gè)脈沖,第二級(jí)插補(bǔ)器對(duì)應(yīng)的起點(diǎn)坐標(biāo)就加一,即;當(dāng)(或)時(shí),(或)的溢出脈沖(或)為負(fù),每輸出一個(gè)脈沖,第二級(jí)插補(bǔ)器對(duì)應(yīng)的起點(diǎn)坐標(biāo)就減一。同樣,第一級(jí)的第二個(gè)插補(bǔ)器每輸出一個(gè)脈沖,第二級(jí)插補(bǔ)器對(duì)應(yīng)的終點(diǎn)坐標(biāo)就加一或減一。第二級(jí)插補(bǔ)器的輸出脈沖用來(lái)驅(qū)動(dòng)進(jìn)給。更高階的Bezier曲線(xiàn)可以用上述同樣的方法進(jìn)行推廣。

2.2 軟件模擬

最后,按照上述原理用微軟的托管C++語(yǔ)言——C++/CLI在Visual Studio 2010中編寫(xiě)了模擬插補(bǔ)程序,在屏幕上畫(huà)線(xiàn)模擬機(jī)床的走刀路徑符合我們預(yù)期的設(shè)計(jì), 此方法基本可以控制刀具插補(bǔ)出理論輪廓。

3 結(jié)論

此方法創(chuàng)新性的把de Casteljau算法運(yùn)用到數(shù)控機(jī)床的插補(bǔ)過(guò)程中,研究出了用DDA法迭代遞推出Bezier曲線(xiàn)的理論,為Bezier曲線(xiàn)的加工提供了全新的、更加準(zhǔn)確、實(shí)時(shí)性更好的方法,甚至也為B樣條、NURBS等曲線(xiàn)的加工提供了嶄新的思路。此類(lèi)非圓曲線(xiàn)在實(shí)際中應(yīng)用非常廣泛,尤其是在復(fù)雜輪廓的零件中,幾乎所有的專(zhuān)業(yè)建模軟件都提供了此類(lèi)曲線(xiàn)建模工具,因此該方法將會(huì)對(duì)數(shù)控加工技術(shù)產(chǎn)生重要的影響。

參考文獻(xiàn):

[1]SUH SH,KANG SK,CHUNG DH,et al.Theory and Design of CNC Systems[M].London:Springer-Verlag,2008:73-79.

[2]孫家廣.計(jì)算機(jī)圖形學(xué)3版[M].北京:清華大學(xué)出版社,1998: 301-326.

[3]Hearn D,Baker M P著,蔡士杰等譯.Computer Graphics with OpenGL 3rd ed[M].北京:電子工業(yè)出版社,2005:355-372.

[4]Boehm M,Müller A.On de Casteljau's algorithm[J].Computer Aided Geometric Design,1999,16(07):587-605.

作者簡(jiǎn)介:宋?。?991-),男,安徽亳州人,碩士研究生,主要研究方向:計(jì)算機(jī)控制技術(shù)。

澄迈县| 安乡县| 石泉县| 天镇县| 文水县| 宝鸡市| 新建县| 伊宁市| 旌德县| 噶尔县| 岱山县| 富顺县| 迭部县| 库伦旗| 邵阳县| 罗田县| 九龙县| 镇安县| 乌兰县| 两当县| 西贡区| 镇赉县| 固原市| 从化市| 庐江县| 铁力市| 永和县| 三台县| 嵊泗县| 英吉沙县| 井研县| 三门县| 灵武市| 西平县| 娱乐| 宜丰县| 工布江达县| 龙游县| 扎兰屯市| 万安县| 松阳县|