專利名稱:提取最小封閉圖形的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖形處理技術(shù)領(lǐng)域,尤其涉及一種計(jì)算任意交叉的直線線段提取所有互不覆蓋的最小封閉圖形的方法。
背景技術(shù):
開發(fā)CAD圖形平臺(tái)的時(shí)候,需要針對(duì)對(duì)用戶繪制的線條切割出互不覆蓋的最小的封閉圖形。現(xiàn)有的任意相交直線線段提取所有互不覆蓋的封閉圖形算法的方法,如圖1所示,一般是遍歷所有線條,提取所有封閉圖形,將提取的封閉圖形進(jìn)行覆蓋判斷,過(guò)濾互相覆蓋的圖形,得到所有互不覆蓋的最小單元封閉圖形。當(dāng)線條復(fù)雜、交點(diǎn)數(shù)量大的時(shí)候提取封閉圖形的的效率低、需時(shí)長(zhǎng)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對(duì)現(xiàn)有技術(shù)提取最小封閉圖形效率低、需時(shí)長(zhǎng)等的缺陷,提供一種計(jì)算任意交叉的直線線段提取所有互不覆蓋的最小封閉圖形的方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:根據(jù)本發(fā)明的一方面,提供一種提取最小封閉圖形的方法,包括:S1、建立交點(diǎn)信息表;S2、根據(jù)交點(diǎn)信息表,確定構(gòu)成封閉圖形的交點(diǎn);S3、逐一判斷確定的多個(gè)封閉圖形中,是否存在包含了所有交點(diǎn)的封閉圖形,如是,則刪除封閉圖形;S4、保存為最終結(jié)果。優(yōu)選的,所述SI具體包括:S11、計(jì)算所有線段的交點(diǎn);S12、提取所有交點(diǎn)組成的有向線段列表;S13、提取以同一起點(diǎn)的關(guān)聯(lián)線段列表;S14、以起點(diǎn)為原點(diǎn)及水平方向射線為基線,計(jì)算關(guān)聯(lián)線段的終點(diǎn)與基線形成的象限角;S15、根據(jù)象限角的大小,對(duì)同一起點(diǎn)的關(guān)聯(lián)線段進(jìn)行排序形成有向線段集合。優(yōu)選的,所述S2具體包括:S21、判斷交點(diǎn)信息表中的有向線段集合是否為空,若是,則跳轉(zhuǎn)S3 ;若否,則執(zhí)行S22 ;S22、從有向線段集合中提取任意一條有向線段作為起始邊,確定封閉圖形的起點(diǎn)和第二個(gè)點(diǎn);S23、在有向線段集合中,找到有向線段的反向邊的序列位置L ;S24、判斷L是否是最后一個(gè)序列位置,如是,則執(zhí)行S25 ;如否,則執(zhí)行S26 ;
S25、提取序列位置為I的有向線段作為封閉圖形的下一條邊線,并執(zhí)行S27 ;S26、提取L的下一序列位置的有向線段,作為組成封閉圖形的下一條邊線;S27、把確定的有向線段從有向線段集合中刪除;S28、判斷確定的交點(diǎn)是否和起點(diǎn)相同;若否,則提取下一條邊線,并跳轉(zhuǎn)S22 ;若是,封閉圖形提取成功,保存到封閉圖形列表中,并跳轉(zhuǎn)S21。優(yōu)選的,所述判斷L是否是最后ー個(gè)序列位置具體為:當(dāng)交點(diǎn)存在n條關(guān)聯(lián)線段,根據(jù)所述象限角排序后,處于第n條線段的就是最后ー個(gè)序列位置的線段。實(shí)施本發(fā)明的提取最小封閉圖形的方法的技術(shù)方案,具有以下優(yōu)點(diǎn)或有益效果:本發(fā)明可快速提取最小封閉圖像,尤其是在交點(diǎn)數(shù)量大的時(shí)候,可快速提取互不覆蓋的最小封閉圖形,效率聞。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖,附圖中:圖1是現(xiàn)有技術(shù)提取封閉圖形的方法實(shí)施例的流程示意圖;圖2是本發(fā)明提取封閉圖形的方法第一實(shí)施例的流程示意圖;圖3是本發(fā)明提取封閉圖形的方法第一實(shí)施例的SI的流程示意圖;圖4是本發(fā)明提取封閉圖形的方法第一實(shí)施例的S2的流程示意圖;圖5是本發(fā)明提取封閉圖形的方法第二實(shí)施例的交點(diǎn)示意圖;圖6是本發(fā)明提取封閉圖形的方法第二實(shí)施例的有向線段示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下文將要描述的各種實(shí)施例將要參考相應(yīng)的附圖,這些附圖構(gòu)成了實(shí)施例的一部分,其中描述了實(shí)現(xiàn)本發(fā)明可能采用的各種實(shí)施例。應(yīng)明白,還可使用其他的實(shí)施例,或者對(duì)本文列舉的實(shí)施例進(jìn)行結(jié)構(gòu)和功能上的修改,而不會(huì)脫離本發(fā)明的范圍和實(shí)質(zhì)。本發(fā)明提取最小封閉圖形的方法第一實(shí)施例,如圖2所示,包括:S1、建立交點(diǎn)信息表;S2、根據(jù)交點(diǎn)信息表,確定構(gòu)成封閉圖形的交點(diǎn);S3、逐一判斷確定的多個(gè)封閉圖形中,是否存在包含了所有交點(diǎn)的封閉圖形,如是,則刪除所述封閉圖形;如否,則跳轉(zhuǎn)S4 ;S4、保存為最終結(jié)果。如圖3所示,更為具體的,步驟SI包括:S11、計(jì)算所有線段的交點(diǎn);S12、提取由所有交點(diǎn)組成的有向線段列表;S13、提取以同一起點(diǎn)的關(guān)聯(lián)線段列表;S14、以起點(diǎn)為原點(diǎn)及水平方向射線為基線,計(jì)算關(guān)聯(lián)線段的終點(diǎn)與基線形成的象限角;S15、根據(jù)象限角的大小,對(duì)同一起點(diǎn)的關(guān)聯(lián)線段進(jìn)行排序形成有向線段集合。其中,計(jì)算所有線段的交點(diǎn)具體為:先判斷線段是否相交,如果是,則計(jì)算交點(diǎn)。判斷線段相交,可以使用向量的叉積性質(zhì),如果其中一條線段的兩個(gè)端點(diǎn)在另一條線段的同ー側(cè)時(shí),則不相交,否則,相交。計(jì)算交點(diǎn)的方法可以有很多。列舉ー種如下:設(shè)直線I上的兩點(diǎn):(axl, ayl), (ax2, ay2);直線 2 上的兩點(diǎn):(bxl, byl), (bx2, by2),設(shè)交點(diǎn)為(ix, iy)。那么設(shè)
權(quán)利要求
1.一種提取最小封閉圖形的方法,其特征在于,包括: 51、建立交點(diǎn)信息表; 52、根據(jù)所述交點(diǎn)信息表,確定構(gòu)成封閉圖形的交點(diǎn); 53、逐一判斷確定的多個(gè)封閉圖形中,是否存在包含了所有交點(diǎn)的封閉圖形,如是,則刪除所述封閉圖形; 54、保存為最終結(jié)果。
2.根據(jù)權(quán)利要求1所述的提取最小封閉圖形的方法,其特征在于,所述SI具體包括: 511、計(jì)算所有線段的交點(diǎn); 512、提取所有所述交點(diǎn)組成的有向線段列表; 513、提取以同一起點(diǎn)的關(guān)聯(lián)線段列表; 514、以起點(diǎn)為原點(diǎn)及水平方向射線為基線,計(jì)算所述關(guān)聯(lián)線段的終點(diǎn)與所述基線形成的象限角; 515、根據(jù)所述象限角的大小,對(duì)同一起點(diǎn)的所述關(guān)聯(lián)線段進(jìn)行排序形成有向線段集ムロ o
3.根據(jù)權(quán)利要求2所述的提取最小封閉圖形的方法,其特征在于,所述S2具體包括:521、判斷所述交點(diǎn)信息表中的有向線段集合是否為空,若是,則跳轉(zhuǎn)S3;若否,則執(zhí)行S22 ; 522、從所述有向線段集合中提取任意一條有向線段作為起始邊,確定封閉圖形的起點(diǎn)和第二個(gè)點(diǎn); 523、在所述有向線段集合中,找到所述有向線段的反向邊的序列位置L;524、判斷所述L是否是最后ー個(gè)序列位置,如是,則執(zhí)行S25;如否,則執(zhí)行S26 ; 525、提取序列位置為I的有向線段作為封閉圖形的下一條邊線,并執(zhí)行S27; 526、提取所述L的下一序列位置的有向線段,作為組成封閉圖形的下一條邊線; 527、把確定的所述有向線段從所述有向線段集合中刪除; 528、判斷確定的交點(diǎn)是否和起點(diǎn)相同;若否,則提取下一條邊線,并跳轉(zhuǎn)S22;若是,封閉圖形提取成功,保存到封閉圖形列表中,并跳轉(zhuǎn)S21。
4.根據(jù)權(quán)利要求3所述的提取最小封閉圖形的方法,其特征在于,所述判斷L是否是最后ー個(gè)序列位置具體為: 當(dāng)所述交點(diǎn)存在n條關(guān)聯(lián)線段,根據(jù)所述象限角排序后,處于第n條線段的就是最后一個(gè)序列位置的線段。
全文摘要
本發(fā)明公開了一種提取最小封閉圖形的方法,包括S1、建立交點(diǎn)信息表;S2、根據(jù)交點(diǎn)信息表,確定構(gòu)成封閉圖形的交點(diǎn);S3、逐一判斷確定的多個(gè)封閉圖形中,是否存在包含了所有交點(diǎn)的封閉圖形,如是,則刪除所述封閉圖形;S4、保存為最終結(jié)果。本發(fā)明可快速提取最小封閉圖像,尤其是在交點(diǎn)數(shù)量大的時(shí)候,可快速提取互不覆蓋的最小封閉圖形,效率高。
文檔編號(hào)G06T11/20GK103116900SQ201310034839
公開日2013年5月22日 申請(qǐng)日期2013年1月30日 優(yōu)先權(quán)日2013年1月30日
發(fā)明者李嘉 申請(qǐng)人:深圳聯(lián)友科技有限公司