日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

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

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

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


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