亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

快速成型制造中基于分層鄰接排序算法的stl模型快速切片方法

文檔序號(hào):6333384閱讀:888來源:國(guó)知局
專利名稱:快速成型制造中基于分層鄰接排序算法的stl模型快速切片方法
技術(shù)領(lǐng)域
本發(fā)明為涉及快速成型制造中STL模型的切片算法,具體為快速成型制造中STL 模型的一種快速切片方法。
背景技術(shù)
快速原型技術(shù)根據(jù)切分三維實(shí)體模型獲得的一系列平面幾何信息,逐層堆積原材料制作產(chǎn)品原型。切片處理技術(shù)作為快速原型關(guān)鍵技術(shù)之一,可在兩類三維CAD模型基礎(chǔ)上實(shí)現(xiàn),一類是基于STEP、IGES精確數(shù)據(jù)模型,另一類是基于STL離散數(shù)據(jù)模型。STL文件是快速原型系統(tǒng)應(yīng)用的標(biāo)準(zhǔn)文件類型,由三角形網(wǎng)格單元(以下簡(jiǎn)稱三角形)頂點(diǎn)坐標(biāo)和外法向量構(gòu)成三角網(wǎng)格,不包含三角形拓?fù)浣Y(jié)構(gòu),離散近似表現(xiàn)三維CAD 模型。由于STL模型數(shù)據(jù)格式簡(jiǎn)單,易于交換處理,基于STL模型的切片處理已被大多數(shù)快速原型系統(tǒng)采用。按照對(duì)三角形信息利用方式的不同,已有的STL模型快速切片算法主要可分為兩類(1)基于拓?fù)湫畔⒌那衅惴?。算法提取三角形的點(diǎn)、邊和面信息并建立其間的拓?fù)潢P(guān)系。利用拓?fù)湫畔⒖梢匝杆俨檎业较噜徣切危⑼ㄟ^對(duì)相鄰三角形的追蹤得到有向輪廓曲線。這種算法的優(yōu)點(diǎn)是可直接獲得首尾相連的有向封閉輪廓線,無需對(duì)交點(diǎn)進(jìn)行重新排序。算法的局限性在于獲取模型整體拓?fù)湫畔⒌奶幚頃r(shí)間較長(zhǎng),尤其對(duì)于復(fù)雜的STL 模型,占用系統(tǒng)資源較多。(2)基于三角形位置信息的切片算法。算法根據(jù)三角形頂點(diǎn)坐標(biāo)沿切片方向投影的大小進(jìn)行分組排序,減少三角形與切片平面位置關(guān)系的判斷次數(shù),加快分層處理速度。但耗時(shí)較長(zhǎng)的分組排序會(huì)降低算法的運(yùn)行效率,難以處理數(shù)據(jù)量較大的STL模型。

發(fā)明內(nèi)容
為了克服背景技術(shù)中所述算法處理幾何拓?fù)湫畔r(shí)間較長(zhǎng)、占用系統(tǒng)資源較多以及分組排序切片算法中分組排序耗時(shí)較長(zhǎng)等問題,本發(fā)明提出了基于分層鄰接排序算法的 STL模型切片方法,其具體技術(shù)方案如下算法以切片平面的法線方向?yàn)棣戚S正方向?yàn)槔?,首先,?duì)每一個(gè)三角形,根據(jù)各點(diǎn) ζ坐標(biāo)的最大值、最小值以及切片精度,反求與三角形相交的各切片平面及其索引號(hào),計(jì)算交點(diǎn);其次,將包含交點(diǎn)和前趨后繼指針的節(jié)點(diǎn)依照三角形的鄰接順序插入與當(dāng)前切片平面對(duì)應(yīng)的交點(diǎn)鏈表中。遍歷全部三角形后,形成各切片平面的交點(diǎn)鏈表,依次連接交點(diǎn)即為切片輪廓線。切片平面與三角形網(wǎng)格相交如圖1所示。相鄰兩三角形與切片平面的位置關(guān)系主要有三種形式當(dāng)切片平面與相鄰兩三角形公共邊相交時(shí),如圖2(a)所示,切片時(shí)記錄待插入三角形并計(jì)算交點(diǎn);當(dāng)兩三角形的公共邊在切片平面內(nèi)時(shí),如圖2(b)所示,切片時(shí)不記錄此三角形也不計(jì)算交點(diǎn);當(dāng)切片平面與兩三角形公共邊不相交時(shí),如圖2(c)所示,切片時(shí)記錄此三角形但不計(jì)算交點(diǎn)。已知兩三角形公共邊頂點(diǎn)坐標(biāo),公共邊上的每一點(diǎn)坐標(biāo)都可由空間線段參數(shù)方程 ⑴求得,λ(μ) = ρ + μν (θ<//< )(1)其中λ為空間公共邊上點(diǎn)的坐標(biāo),μ為參數(shù),ρ為起始點(diǎn)坐標(biāo),i;為線段方向向量。 為了得到公共邊與切片平面的交點(diǎn),需確定參數(shù)μ。由于位于切片平面上的交點(diǎn)ζ坐標(biāo)已知,則將其代入?yún)?shù)方程(1),求得μ,μ =(2)其中Ρζ、巧分別為線段起始點(diǎn)坐標(biāo)和線段方向向量在ζ軸上的投影。將μ代入⑴ 即可求得公共邊與切片平面的交點(diǎn)空間坐標(biāo)。與基于三角形位置信息的切片算法求交計(jì)算相比,按照三角形的相鄰關(guān)系計(jì)算交點(diǎn)的方法為單次計(jì)算,不重復(fù)計(jì)算交點(diǎn),有利于提高算法效率。為了輔助分層鄰接排序算法的構(gòu)建,需要自定義幾個(gè)關(guān)鍵的結(jié)構(gòu)體。定義結(jié)構(gòu)體 TriMeshLinkList作為交點(diǎn)鏈表的節(jié)點(diǎn),其包含三個(gè)成員,分別為交點(diǎn)、指向其前驅(qū)的指針和指向其后繼的指針,如圖3所示。切片平面與三角形求交后,將交點(diǎn)存入節(jié)點(diǎn),節(jié)點(diǎn)的前驅(qū)和后繼根據(jù)三角形鄰接順序確定。定義結(jié)構(gòu)體HeadTailPointer作為指向交點(diǎn)鏈表的指針,其包含四個(gè)成員,分別為指向交點(diǎn)鏈表的表頭與表尾的指針和兩個(gè)指向相關(guān)三角形的指針,如圖4所示。帶有鏈表指針的交點(diǎn)鏈表結(jié)構(gòu)如圖5(a)所示,鏈表指針構(gòu)成分組數(shù)組, 如圖5(b)所示。鏈表內(nèi)節(jié)點(diǎn)按三角形鄰接順序排列,節(jié)點(diǎn)內(nèi)包含相鄰三角形公共邊與切片平面的交點(diǎn)。鏈表指針內(nèi)的兩個(gè)三角形指針分別指向與鄰接關(guān)系相關(guān)的兩個(gè)三角形。這兩個(gè)三角形記錄了鏈表的兩個(gè)增長(zhǎng)方向。三角形與切片平面相交次數(shù)由STL網(wǎng)格精度決定,平均每個(gè)三角形與m = p/q個(gè)切片平面相交,對(duì)每個(gè)三角形切片操作的時(shí)間復(fù)雜度為0(m);對(duì)η個(gè)三角形分層鄰接排序的時(shí)間復(fù)雜度為Ο(η);采用順序查找方式在list數(shù)據(jù)結(jié)構(gòu)中查找與待插入三角形相鄰的三角形,查找算法的平均時(shí)間復(fù)雜度為0(n/2),插入和刪除元素的時(shí)間復(fù)雜度為0(1)。綜上,算法的平均時(shí)間復(fù)雜度為0(mn2/2),其中m為三角形平均切分層數(shù),η為三角形個(gè)數(shù),當(dāng) m<<n時(shí),算法平均時(shí)間復(fù)雜度趨近于O (n2/2) ( O (η2)。STL模型有η個(gè)三角形網(wǎng)格單元,平均每個(gè)三角形與m = p/q個(gè)切片平面相交,每個(gè)TriMeshLinkList結(jié)構(gòu)體包含三個(gè)成員,因此該算法的最大空間復(fù)雜度為0(3mn),當(dāng)m <<n時(shí),算法平均時(shí)間復(fù)雜度趨近于O (3η)。算法在運(yùn)行之初會(huì)產(chǎn)生較多斷裂的交點(diǎn)鏈表,鏈表的指針存儲(chǔ)頭三角形和尾三角形的索引號(hào),內(nèi)存占用逐漸增加。隨著算法的運(yùn)行,斷裂的交點(diǎn)鏈表逐漸被新建立的節(jié)點(diǎn)連接,鏈表個(gè)數(shù)逐漸減少,內(nèi)存占用趨于平穩(wěn),最終形成連續(xù)的交點(diǎn)鏈表,鏈表個(gè)數(shù)等于當(dāng)前切片平面中封閉輪廓的個(gè)數(shù)。鏈表中每個(gè)節(jié)點(diǎn)包含交點(diǎn)和節(jié)點(diǎn)前趨后繼指針,數(shù)據(jù)量較小。 因此算法具有良好的空間復(fù)雜度。由前述可知,本發(fā)明具有如下有益效果算法不進(jìn)行模型整體幾何拓?fù)湫畔⒌奶崛?,而是根?jù)三角形坐標(biāo)在切片方向上投影的最大值和最小值,反求與三角形相交的切片平面,讀取一次信息即可建立有序的交點(diǎn)鏈表,從而獲得完整的有向封閉輪廓線,大大提高了切片速度。


圖1,切片平面與三角形網(wǎng)格相交。圖1示出局部區(qū)域切片平面與三角形網(wǎng)格的交線。在圖1中,1代表三角形網(wǎng)格, 2代表交線。圖2,切片平面與相鄰兩三角形公共邊關(guān)系。圖2示出切片平面與相鄰兩三角形公共邊關(guān)系。在圖2中,圖2(a)為兩三角形公共邊與切片平面相交,圖2(b)為兩三角形公共邊在切片平面內(nèi),圖2(c)為兩三角形公共邊與切片平面不相交。在各個(gè)圖中,1、2分別代表兩相鄰三角形,3代表切片平面,4代表相鄰兩三角形的公共邊。圖 3,TriMeshLinkList 結(jié)構(gòu)體。圖3示出TriMeshLinkList結(jié)構(gòu)體。在圖3中,1代表切片平面與三角形邊的交
點(diǎn)ο圖 4,HeadTailPointer 結(jié)構(gòu)體。圖4示出HeadTailPointer結(jié)構(gòu)體。在圖4中,1代表鏈表中的頭三角形,2代表
尾三角形。圖5,算法數(shù)據(jù)結(jié)構(gòu)。圖5示出了交點(diǎn)鏈表和分組數(shù)組的數(shù)據(jù)結(jié)構(gòu)。在圖5中,1代表切片平面與三角形邊的交點(diǎn),2代表鏈表中的頭三角形,3代表尾三角形。圖6,分層鄰接關(guān)系算法流程圖。
具體實(shí)施例方式根據(jù)前述的描述,以下給出發(fā)明者的對(duì)所發(fā)明的算法的一個(gè)具體實(shí)施流程,但本專利所保護(hù)的范圍并不限于該實(shí)施流程。首先建立行數(shù)為切片平面?zhèn)€數(shù)的分組數(shù)組,每行存儲(chǔ)指向交點(diǎn)鏈表的指針。(1)插入下一個(gè)三角形,如果已遍歷各三角形,結(jié)束算法;否則判斷三角形是否與切片平面平行,如果判斷為真,返回(1),否則轉(zhuǎn)向(2);(2)反求與該三角形相交的切片平面及其序號(hào),考察分組數(shù)組中各序號(hào)對(duì)應(yīng)的行, 生成新的節(jié)點(diǎn)。如果行為空,以此節(jié)點(diǎn)建立帶有鏈表指針的鏈表并存入行中,返回(1)。若行不為空,在行中查找鏈表指針指向的頭三角形與插入的三角形相鄰的鏈表指針。如果找到該指針,保留該指針信息并將其從行中刪除。求出交點(diǎn)并存入對(duì)應(yīng)節(jié)點(diǎn),按鄰接順序?qū)⒋斯?jié)點(diǎn)插入該指針指向的鏈表,更新鏈表指針,轉(zhuǎn)向(3),否則轉(zhuǎn)向(4);(3)判斷行中剩余各鏈表指針指向的頭三角形和尾三角形是否與插入的三角形相鄰。如果頭尾三角形均與插入的三角形相鄰,求出交點(diǎn)并存入對(duì)應(yīng)節(jié)點(diǎn),按鄰接順序連接 (2)中節(jié)點(diǎn)所在鏈表和該指針指向的鏈表,更新鏈表指針,轉(zhuǎn)向(1);如果僅頭三角形與插入的三角形相鄰,求出交點(diǎn),反轉(zhuǎn)鏈表,按鄰接關(guān)系連接⑵中節(jié)點(diǎn)所在鏈表和該指針指向的鏈表,更新鏈表指針,轉(zhuǎn)向(1);如果僅尾三角形與插入的三角形相鄰,求出交點(diǎn),按鄰接關(guān)系連接O)中節(jié)點(diǎn)所在鏈表和該指針指向的鏈表,更新鏈表指針,轉(zhuǎn)向(1);如果頭尾三角形均不與插入的三角形相鄰,則將O)中鏈表存儲(chǔ)在對(duì)應(yīng)行中,轉(zhuǎn)向(1);(4)在行中查找鏈表指針的尾三角形與插入的三角形相鄰的鏈表指針。如果未找到該指針,轉(zhuǎn)向(5),否則保留該指針信息并將其從行中刪除。求交點(diǎn),將節(jié)點(diǎn)插入鏈表。判斷行中剩余各鏈表指針的尾三角形是否與插入的三角形相鄰。如果相鄰,反轉(zhuǎn)當(dāng)前鏈表,將 ⑵中節(jié)點(diǎn)所在鏈表與該指針指向的鏈表相連,更新鏈表指針,返回(1),否則將⑵中鏈表存入行中,返回⑴;(5)以此節(jié)點(diǎn)建立新鏈表并存入行中,鏈表指針中指向交點(diǎn)鏈表表頭和表尾的兩指針均指向此節(jié)點(diǎn),指向兩個(gè)相關(guān)三角形的兩個(gè)指針均指向插入的三角形,返回(1)至此已建立各切片平面有序的交點(diǎn)鏈表,依次鏈接交點(diǎn)即可得到切片輪廓。
權(quán)利要求
1.快速成型制造中基于分層鄰接排序算法的STL模型快速切片方法采用鄰接插入法建立三角形鄰接關(guān)系,根據(jù)三角形各點(diǎn)坐標(biāo)在切片方向上投影的最大值和最小值反求與此三角形相交的切片平面,并通過分析相鄰兩三角形公共邊與切片平面的位置關(guān)系,按鄰接順序建立交點(diǎn)鏈表。相比已有的基于STL全模型拓?fù)湫畔⑻崛〉那衅椒ㄒ约胺纸M矩陣切片方法,該方法并不進(jìn)行整體拓?fù)湫畔⒌奶崛『腿切蔚姆纸M排序,而是將三角形順序關(guān)系融合于交點(diǎn)鏈表中,從而達(dá)到節(jié)省系統(tǒng)資源,提高切片效率的目的。
2.根據(jù)權(quán)利1所述的基于分層鄰接排序算法的STL模型快速切片方法,其特征在于 該算法不進(jìn)行模型整體幾何拓?fù)湫畔⒌奶崛 ?br> 3.根據(jù)權(quán)利1所述的基于分層鄰接排序算法的STL模型快速切片方法,其特征還在于 切片過程中按照三角形的相鄰關(guān)系計(jì)算交點(diǎn)的方法為單次計(jì)算,不重復(fù)計(jì)算交點(diǎn)。
4.根據(jù)權(quán)利1所述的基于分層鄰接排序算法的STL模型快速切片方法,其特征還在于 切片過程根據(jù)三角形坐標(biāo)在切片方向上投影的最大值和最小值,反求與三角形相交的切片平面,讀取一次信息即可建立有序的交點(diǎn)鏈表。
全文摘要
快速成型制造中基于分層鄰接排序算法的STL模型快速切片方法采用鄰接插入法建立三角形鄰接關(guān)系,根據(jù)三角形各點(diǎn)坐標(biāo)在切片方向上投影的最大值和最小值反求與此三角形相交的切片平面,并通過分析相鄰兩三角形公共邊與切片平面的位置關(guān)系,按鄰接順序建立交點(diǎn)鏈表。相比已有的基于STL全模型拓?fù)湫畔⑻崛〉那衅椒ㄒ约胺纸M矩陣切片方法,該方法并不進(jìn)行整體拓?fù)湫畔⒌奶崛『腿切蔚姆纸M排序,而是將三角形順序關(guān)系融合于交點(diǎn)鏈表中,從而達(dá)到節(jié)省系統(tǒng)資源,提高切片效率的目的。
文檔編號(hào)G06T19/00GK102446368SQ201010501908
公開日2012年5月9日 申請(qǐng)日期2010年10月11日 優(yōu)先權(quán)日2010年10月11日
發(fā)明者劉恒, 王素 申請(qǐng)人:劉恒, 王素
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1