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

?

基于MATLAB的STL模型切片分層算法

2020-02-14 06:03:57吳建吳婷陳廷豪包涵
科技創(chuàng)新與應(yīng)用 2020年2期
關(guān)鍵詞:面片交點(diǎn)輪廓

吳建 吳婷 陳廷豪 包涵

摘 ?要:為提高STL模型的切片效率,提出一種基于MATLAB的STL模型切片分層新算法。首先對(duì)STL模型進(jìn)行數(shù)據(jù)預(yù)處理,篩選出只與切平面相交的三角片集合,然后利用相鄰三角面片邊的拓?fù)潢P(guān)系依次求交,獲得各層截面輪廓信息。實(shí)驗(yàn)結(jié)果表明,該方法簡(jiǎn)單、有效,不僅優(yōu)化了數(shù)據(jù)結(jié)構(gòu),而且提高了切片效率,具有較好的可行性和準(zhǔn)確性。

關(guān)鍵詞:3D打印;切片;STL模型;MATLAB

中圖分類號(hào):TP391.73 ? ? ?文獻(xiàn)標(biāo)志碼:A ? ? ? ? 文章編號(hào):2095-2945(2020)02-0023-02

Abstract: In order to improve the slicing efficiency of STL model, a new slicing algorithm of STL model based on MATLAB is proposed. First, the STL model is preprocessed, and the set of triangles which only intersect with the tangent plane is selected, and then the topological relationship between the edges of the adjacent triangular patches is used to obtain the profile information of each layer. The experimental results show that the method is simple and effective, not only optimizes the data structure, but also improves the slicing efficiency and has good feasibility and accuracy.

Keywords: 3D printing; slicing; STL model; MATLAB

引言

3D打印,又稱作快速成形,是一種以數(shù)字模型文件為基礎(chǔ),運(yùn)用粉末狀金屬或塑料等可粘合材料,通過(guò)逐層堆疊累積的方式來(lái)構(gòu)造物體的技術(shù)[1]。它對(duì)結(jié)構(gòu)復(fù)雜、形態(tài)多變、骨架分支多的難加工形體具有顯著優(yōu)勢(shì),因而在現(xiàn)代醫(yī)學(xué)、高端制造等領(lǐng)域有著廣泛的應(yīng)用[2]。在3D打印工藝過(guò)程中,分層切片處理是最為關(guān)鍵的內(nèi)容之一。它通過(guò)層切平面與3D模型截面相交, 得到各層截面輪廓信息,因此切片處理的效率和精度直接影響模型制作的精度和質(zhì)量[3]。

本文以MATLAB軟件作為開(kāi)發(fā)平臺(tái),對(duì)3D打印切片問(wèn)題展開(kāi)研究,運(yùn)用矩陣和數(shù)組及MATLAB自帶的一些函數(shù),在MATLAB軟件平臺(tái)下實(shí)現(xiàn)STL模型的快速分層切片處理。

1 算法原理

STL模型是由多個(gè)三角形面片組成的三維物體,因此對(duì)模型進(jìn)行切片就是沿切層方向(z軸)建立多個(gè)切平面,分別求出每層切平面與三角面片的交點(diǎn),然后進(jìn)行拓?fù)渲剡B,從而獲得截面輪廓線。

由于STL模型數(shù)據(jù)量較大,為提高切片處理的效率,本文采用如下方法進(jìn)行計(jì)算:首先對(duì)STL模型進(jìn)行數(shù)據(jù)排序,然后篩選出與各層切平面相交的三角面片集合, 以減少三角面片與切平面的求交判斷次數(shù);在計(jì)算三角面片與各層切平面間的交點(diǎn)時(shí), 利用相鄰三角面片邊的拓?fù)潢P(guān)系求交,可快速確定交點(diǎn),減少冗余點(diǎn)計(jì)算。

1.1 數(shù)據(jù)預(yù)處理

利用MATLAB軟件的stlread函數(shù)讀取STL模型數(shù)據(jù),得到一個(gè)三角網(wǎng)格對(duì)象,其中包含兩個(gè)矩陣成員:一個(gè)為網(wǎng)格頂點(diǎn)的坐標(biāo)矩陣,設(shè)為P;另一個(gè)為組成三角面片的頂點(diǎn)索引矩陣,設(shè)為T。

依次從三角面片索引矩陣T中取出每個(gè)三角面片的頂點(diǎn)索引號(hào),并從頂點(diǎn)坐標(biāo)矩陣P中找到其頂點(diǎn)的x、y、z坐標(biāo),然后將它們按照z坐標(biāo)值的大小進(jìn)行排序,并排成一行:

[x1,y1,zmin,x2,y2,zmid,x3,y3,zmax]

從而得到一個(gè)新的三角面片坐標(biāo)矩陣Vm×9,其中每行表示一個(gè)三角面片坐標(biāo)信息,m為三角面片總數(shù)。然后將矩陣V按照zmin進(jìn)行升序排序,如果zmin相同的,將zmax值小的三角面片排在前面。

1.2 相交三角片的智能篩選

在計(jì)算每層切平面與三角面片的交點(diǎn)時(shí),根據(jù)每個(gè)三角面片的z坐標(biāo)數(shù)據(jù)進(jìn)行判斷,篩選出只與當(dāng)前切平面相交的三角面片集合,以提高分層處理速度。具體步驟如下:

步驟1,首先根據(jù)切片精度Δz和模型z坐標(biāo)的最大值與最小值進(jìn)行等厚度分層,得到各層切平面的高度zi(i=1,2,…,n,n為切片總數(shù))。

步驟2,利用判斷條件篩選出與每層切平面zi相交的三角面片集合。若三角面片與切平面zi相交,則需滿足zmin≤zi≤zmax,如圖1所示,具體分為以下幾種情況:

(1)三角面片的兩條邊與切片面相交(圖1(a));(2)三角面片的一條邊與切平面重合(圖1(b)(c)),若圖1(b)三角片和圖1(c)三角片共邊,為避免產(chǎn)生冗余點(diǎn),只保留圖1(b)所示三角片;(3)三角面片的一個(gè)頂點(diǎn)在切平面上(圖1(d)(e)),為避免產(chǎn)生冗余點(diǎn),只保留圖1(d)所示三角片;(4)三角面片與切平面重合(圖1(f)),這種情況無(wú)法產(chǎn)生有效相交線段,故做排除。

1.3 拓?fù)淝蠼?/p>

三角網(wǎng)格模型中,每條邊都有兩個(gè)三角面片與之共享,因此利用這種鄰接拓?fù)潢P(guān)系,按順序依次求交即可得到首尾相連的切片輪廓。具體步驟如下:

步驟1,從篩選出的相交三角面片集合中,隨機(jī)確定一個(gè)三角面片作為起始三角面片,計(jì)算該三角面片與切平面的交點(diǎn),并保存交點(diǎn)所在的邊,然后從集合中刪除這個(gè)三角面片。

步驟2,在相交三角面片的集合中找到一個(gè)和上一個(gè)三角面片的交點(diǎn)邊是公共邊的三角面片,然后再對(duì)這個(gè)三角面片進(jìn)行交點(diǎn)計(jì)算,保存交點(diǎn)所在的邊后,從集合中刪除這個(gè)三角面片。如圖2所示,根據(jù)三角面片1的交點(diǎn)P1所在的邊AB找到與之相鄰的三角面片2,然后計(jì)算切平面與三角面片2的另一個(gè)交點(diǎn)P2,根據(jù)交點(diǎn)P2所在的邊BC找到三角面片3,依次類推。

步驟3,重復(fù)步驟2,直到找不到下一個(gè)拓?fù)淙敲嫫?,按順序連接交點(diǎn)即可獲得當(dāng)前封閉輪廓。

步驟4,重復(fù)步驟1、步驟2、步驟3,直到相交的三角面片集合為空集,從而完成該層切片所有封閉輪廓的創(chuàng)建。

2 實(shí)例驗(yàn)證

為檢驗(yàn)本文算法的有效性,以圖3所示的蝎子模型為實(shí)例,進(jìn)行切片測(cè)試。該模型共有461708個(gè)三角面片,230856個(gè)頂點(diǎn),X、Y、Z方向總體尺寸約為59mm、42mm、20mm。采用0.4mm的分層精度對(duì)該模型進(jìn)行切片測(cè)試,從圖4結(jié)果可以看出,即使該模型復(fù)雜、具有多條分支結(jié)構(gòu),本文算法也能產(chǎn)生較好的效果。

3 結(jié)束語(yǔ)

本文以MATLAB軟件為平臺(tái),通過(guò)數(shù)據(jù)預(yù)處理、篩選相交三角面片集合、拓?fù)淝蠼坏炔襟E有效地對(duì)模型進(jìn)行切片分層處理,最大化的保留了原始形狀特征,重構(gòu)出準(zhǔn)確率高的切片模型。該方法方便快捷,加強(qiáng)了切片數(shù)據(jù)的可控性,優(yōu)化了切片的效率,提高了切片輪廓的準(zhǔn)確性,且該程序簡(jiǎn)短易懂,具有較好的應(yīng)用價(jià)值。

參考文獻(xiàn):

[1]郭亮,安芬菊,王貴.便攜式3D打印機(jī)設(shè)計(jì)[J].機(jī)電工程技術(shù),2017,46(10):90-92+108.

[2]徐敬華,任新華,陳前勇,等.基于雙傾斜度概率的流形模型3D打印層切優(yōu)化方法[J].機(jī)械工程學(xué)報(bào),2019,55(13):129-143.

[3]徐敬華,盛紅升,張樹有,等.基于鄰接拓?fù)涞牧餍尉W(wǎng)格模型層切多連通域構(gòu)建方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2018,30(1):180-190.

猜你喜歡
面片交點(diǎn)輪廓
OPENCV輪廓識(shí)別研究與實(shí)踐
基于實(shí)時(shí)輪廓誤差估算的數(shù)控系統(tǒng)輪廓控制
初次來(lái)壓期間不同頂板對(duì)工作面片幫影響研究
閱讀理解
借助函數(shù)圖像討論含參數(shù)方程解的情況
試析高中數(shù)學(xué)中橢圓與雙曲線交點(diǎn)的問(wèn)題
甜面片里的人生
幸福家庭(2016年3期)2016-04-05 03:47:08
在線學(xué)習(xí)機(jī)制下的Snake輪廓跟蹤
青海尕面片
老伴逼我搟面片
剑阁县| 金塔县| 延寿县| 大田县| 从化市| 阳曲县| 习水县| 诸暨市| 仁怀市| 大宁县| 永昌县| 梁山县| 德昌县| 康马县| 扎赉特旗| 闽清县| 夏河县| 应用必备| 禄劝| 阳高县| 方山县| 玉山县| 平南县| 延津县| 晴隆县| 华阴市| 长春市| 红原县| 朝阳市| 凯里市| 阿拉善右旗| 廊坊市| 安远县| 山丹县| 孟州市| 工布江达县| 嘉荫县| 吴江市| 开鲁县| 天镇县| 武功县|