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

可凹區(qū)域的3D快速打印路徑規(guī)劃方法與流程

文檔序號:12333987閱讀:1131來源:國知局
可凹區(qū)域的3D快速打印路徑規(guī)劃方法與流程

本發(fā)明涉及3D打印領域,具體而言,涉及可凹區(qū)域的3D快速打印路徑規(guī)劃方法。



背景技術:

3D打印中的路徑規(guī)劃算法就是對切片分層所獲得的截面輪廓進行掃描填充,合理的路徑規(guī)劃不僅能夠提高3D打印速度,而且還可以節(jié)省打印材料。傳統(tǒng)的3D打印路徑生成算法在處理凹多邊形打印區(qū)域時可能面臨激光中斷和繼續(xù)問題。



技術實現(xiàn)要素:

為了解決現(xiàn)有技術中的上述問題,本發(fā)明提出了一個多邊形打印區(qū)域的順時針&逆時針雙向凸化分割算法(Clockwise and Counterclockwise Two-way Convexify Segment Algorithm,CCTCSA),簡稱CCTCSA算法。提高了激光器的使用效率,延長了激光器的壽命。

CCTCSA算法的基本思想是將多邊形打印區(qū)域分割成若干個非凹的凸形區(qū)域,以此避開多邊形打印區(qū)域路徑規(guī)劃時可能面臨的激光中斷和繼續(xù)問題。

為此,本發(fā)明提供一種可凹區(qū)域的3D快速打印路徑規(guī)劃方法,包括下列步驟:

步驟1.任意選取區(qū)域邊界上的一點A作為凸化邊界邊起始搜索節(jié)點;

步驟2.初始化存儲“頭尾節(jié)點”和“頭尾邊界邊”的兩個雙向隊列,隊頭節(jié)點Hp=A,隊尾節(jié)點Rp=A,隊頭邊界邊He=null,隊尾邊界邊Re=null;

步驟3.沿著區(qū)域邊界的“順時針”方向進行凸化邊界搜索,將順時針方向的下一個邊界點記為P,判斷點P是否符合凸化邊界條件,如果是,則更新所述兩個雙向隊列,將點P作為順時針方向的下一個凸化邊界邊節(jié)點,重復步驟3,否則,進行到步驟4;

步驟4.沿著區(qū)域邊界的“逆時針”方向進行凸化邊界搜索,將逆時針方向的下一個邊界點記為Q,判斷點Q是否符合凸化邊界條件,如果是,則更新所述兩個雙向隊列,將點Q作為逆時針方向的下一個凸化邊界邊節(jié)點,重復步驟4,否則,進行到步驟5;

步驟5.判斷隊頭節(jié)點和隊尾節(jié)點是否相同,如果不同,則連接隊頭節(jié)點Hp和隊尾節(jié)點Rp作為下一輪凸化邊界邊搜索的起始搜索邊界邊,將這兩個節(jié)點作為下一輪凸化邊界邊搜索的頭尾節(jié)點,初始化所述兩個雙向隊列,返回到步驟3。

優(yōu)選地,點P符合凸化邊界的條件如下:

隊尾邊界邊Re為空或點P在隊尾邊界邊的右側,并且

隊頭邊界邊He為空或點P在隊頭邊界邊的左側,并且

隊頭節(jié)點Hp在隊尾節(jié)點Rp和點P形成的連線的右邊。

優(yōu)選地,點Q符合凸化邊界的條件如下:

隊頭邊界邊He為空或點P在隊頭邊界邊反向邊的左側,并且

隊尾邊界邊Re為空或點P在隊尾邊界邊的右側,并且

隊尾節(jié)點Rp在隊頭節(jié)點Hp和點P形成的連線的左邊。

優(yōu)選地,令點P或點Q的坐標為P(x,y),則根據(jù)如下步驟來判斷點P(x,y)是在有向線段的左側還是右側:

計算由P(x,y),A(x1,y1),B(x2,y2)組成的兩個向量和的叉積υ(P,A,B)若υ>0,則所述點在有向線段的右側;若υ<0,則所述點在有向線段的左側;若υ=0,則所述點與有向線段共線。

優(yōu)選地,所述叉積υ(P,A,B)的計算公式如下:

υ(P,A,B)=(x-x1)×(y2-y1)-(x2-x1)×(y-y1)。

附圖說明

將參考附圖中所說明的示范性的實施例而在下文中更詳細地解釋本發(fā)明。

圖1是CCTCSA算法的處理流程圖。

圖2是以A為起點進行多邊形打印區(qū)域的凸化邊界搜索過程圖。

圖3示出了多邊形打印區(qū)域的另一個凸化邊界“EHGFE"。

具體實施方式

圖1示出了CCTCSA算法進行打印區(qū)域多邊形的凸化分割流程。其中,CCTCSA算法將可能為凹的多邊形打印區(qū)域轉變?yōu)橐幌盗型剐螀^(qū)域的方法是:

首先,任意選取區(qū)域邊界上的一點作為凸化邊界搜索的起始點,初始化存儲起止邊界點和起止邊界邊的兩個雙端隊列Hp,Rp,He,Re。

然后,沿著打印區(qū)域多邊形的邊界“順時針”方向進行凸化邊界搜索,采用貪心策略,直到不滿足條件的邊界點出現(xiàn)或搜索結束;

緊接著,采用貪心策略,沿著打印區(qū)域多邊形的邊界“逆時針”方向進行凸化邊界搜索,直到不滿足條件的邊界點出現(xiàn)或搜索結束;

最后,根據(jù)起止邊界點是否相同,判斷打印區(qū)域多邊形的邊界凸化過程是否結束。若是,則結束算法;否則,連接隊頭和隊尾邊界點,形成下一輪搜索的起始條件,進行下一輪邊界凸化。

以圖2所示的多邊形打印區(qū)域為例,若以A為起始搜索點、且先沿著打印區(qū)域多邊形邊界順時針方向進行搜索,后沿著打印區(qū)域多邊形邊界逆時針方向進行搜索,則多邊形打印區(qū)域的雙向凸化分割過程如圖2所示。

初始時刻隊頭邊界點為Head-PNT=A,隊尾邊界點為Rear-PNT=A,隊頭邊界邊為Head-EDGE=null,隊尾邊界邊為Rear-EDGE=null,如圖2(1)所不。

步驟1:采用貪心策略,沿著順時針方向進行凸化邊界搜索。如圖2(2~5)所示。

步驟1.1:獲得順時針方向的第一個邊界頂點K,形成第一條邊界邊并更新隊頭邊界點Head-PNT、隊尾邊界點Rear-PNT,隊頭邊界邊Head-EDGE,隊尾邊界邊Rear-EDGE,使得Head-PNT=A,Rear-PNT=K,如圖2(2)所示。

步驟1.2:循環(huán)。沿著順時針方向尋找凸化邊界點,直到碰到不滿足條件的邊界點或邊界點搜索結束。如圖2(2~5)所示。

首先,找到邊界點J,判斷:(1)點J是否在當前隊尾邊界邊的右側(順時針方向)?(2)點J是否在隊頭邊的反向邊的左側(逆時針方向)?(3)隊頭邊界點Head-PNT=A是否在形成的邊界邊的右側(順時針方向)?因為三個條件皆成立,因此,點J符合凸化邊界條件,為下一條凸邊界邊,并更新隊尾邊界點Rear-PNT=J和隊尾邊界邊如圖2(3)所示。

然后,找到邊界點H,判斷:(1)點H是否在當前隊尾邊界邊的右側(順時針方向)?(2)點H是否在隊頭邊的反向邊的左側(逆時針方向)?(3)隊頭邊界點Head-PNT=A是否在形成的邊界邊的右側(順時針方向)?因為三個條件皆成立,因此,點H符合凸化邊界條件,為下一條凸邊界邊,并更新隊尾邊界點Rear-PNT=H和隊尾邊界邊如圖2(4)所示。

緊接著,找到邊界點G,判斷:(1)點G是否在當前隊尾邊界邊的右側(順時針方向)?(2)點G是否在隊頭邊的反向邊的左側(逆時針方向)?(3)隊頭邊界點Head-PNT=A是否在形成的邊界邊的右側(順時針方向)?由于條件(1)不成立,即邊界點G在當前隊尾邊界邊的左側,不構成凸化邊界,且邊界點G不是隊頭邊界點Head-PNT=A,因此結束順時針方向的邊界點搜索,進入下一步驟“逆時針方向的凸化邊界點搜索”。如圖2(5)所示。

步驟2:采用貪心策略,沿著逆時針方向進行凸化邊界搜索。如圖2(6~10)所示。

步驟2.1:循環(huán)。沿著逆時針方向尋找凸化邊界點,直到碰到不滿足條件的邊界點或邊界點搜索結束。如圖2(6~10)所示。

首先,找到邊界點B,判斷:(1)點B是否在當前隊頭邊界邊反向邊的左側(逆時針方向)?(2)點B是否在當前隊尾邊界邊的右側(順時針方向)?(3)隊尾邊界點Rear-PNT=H是否在形成的邊界邊的左側(逆時針方向)?因為三個條件皆成立,因此,點B符合凸化邊界條件,為下一條凸化邊界邊,并更新隊頭邊界點Head-PNT=B和隊頭邊界邊如圖2(6)所示。

然后,找到邊界點C,判斷:(1)點C是否在當前隊頭邊界邊反向邊的左側(逆時針方向)?(2)點C是否在當前隊尾邊界邊的右側(順時針方向)?(3)隊尾邊界點Rear-PNT=H是否在形成的邊界邊的左側(逆時針方向)?因為三個條件皆成立,因此,點C符合凸化邊界條件,為下一條凸化邊界邊,并更新隊頭邊界點Head-PNT=C和隊頭邊界邊如圖2(7)所示。

緊接著,找到邊界點D,判斷:(1)點D是否在當前隊頭邊界邊反向邊的左側(逆時針方向)?(2)點D是否在當前隊尾邊界邊的右側(順時針方向)?(3)隊尾邊界點Rear-PNT=H是否在形成的邊界邊的左側(逆時針方向)?因為三個條件皆成立,因此,點D符合凸化邊界條件,為下一條凸化邊界邊,并更新隊頭邊界點Head-PNT=D和隊頭邊界邊如圖2(8)所示。

再者,找到邊界點E,判斷:(1)點E是否在當前隊頭邊界邊反向邊的左側(逆時針方向)?(2)點E是否在當前隊尾邊界邊的右側(順時針方向)?(3)隊尾邊界點Rear-PNT=H是否在形成的邊界邊的左側(逆時針方向)?因為三個條件皆成立,因此,點E符合凸化邊界條件,為下一條凸化邊界邊,并更新隊頭邊界點Head-PNT=E和隊頭邊界邊如圖2(9)所示。

最后,找到邊界點F,判斷:(1)點F是否在當前隊頭邊界邊反向邊的左側(逆時針方向)?(2)點F是否在當前隊尾邊界邊的右側(順時針方向)?(3)隊尾邊界點Rear-PNT=H是否在形成的邊界邊的左側(逆時針方向)?因為條件(1)成立、條件(2)不成立,因此,點F不符合凸化邊界條件,不是下一條凸化邊界邊,逆時針凸化邊界搜索結束。如圖2(10)所示。

步驟3:順時針和逆時針凸化邊界搜索都結束后,若隊頭節(jié)點E和隊尾節(jié)點H不相同,則連接E和H兩個節(jié)點,形成一個局部凸化邊界。如圖2(11)所示。

經過上述步驟1~3之后,因為尋找到的凸化邊界的起始節(jié)點分別為E和H,不相同。因此,連接E和H兩個節(jié)點形成一個局部凸化邊界。之后,以凸化邊界為隊頭邊界邊,開始新一輪的凸化邊界搜索,便可找到下一個凸化邊界EHGF。如圖3所示,具體過程在此省略。

CCTCSA算法實現(xiàn)的核心步驟和偽代碼如以下清單。

CCTCSA算法使用到的核心操作是:判斷點P(x,y)是在有向線段的左側?還是右側?其原理是計算三個點P(x,y),A(x1,y1),B(x2,y2)組成的2個向量和的叉積υ(P,A,B)。若υ>0,則點P在有向線段的右側;若υ<0,則點P在有向線段的左側;若υ=0,則點P與有向線段共線。其中,叉積υ(P,A,B)的計算公式如下:

υ(P,A,B)=(x-x1)×(y2-y1)-(x2-x1)×(y-y1)

對于規(guī)模為n的打印區(qū)域多邊形,因為CCTCSA算法在進行邊界凸化時每個邊界節(jié)點只搜索一次,核心計算時間是判斷點與邊界邊之間的左右側向(順逆時針方向)關系,由于叉積υ的計算可以視為常量時間,因此,規(guī)模為n的打印區(qū)域多邊形的邊界凸化的時間復雜度為O(n),而打印路徑規(guī)劃所使用的核心算法為經典的方法,可見CCTCSA算法的時間復雜度與經典的路徑規(guī)劃算法一樣。

上面結合附圖和實施例對本發(fā)明做了詳細的說明。但是,應當理解,本發(fā)明的實施例并不限于所公開的特定實施例,并且對該實施例的修改和其他實施例也意圖被包含在所附權利要求書的范圍內。盡管此處使用了特定術語,但是它們僅在通用和描述性意義上使用,而非為了限制的目的。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1