專利名稱:計算機(jī)圖像處理中多邊形的三角化方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)圖像處理領(lǐng)域,特別涉及一種有序活動邊表的三角化技術(shù)。
背景技術(shù):
計算機(jī)圖像處理領(lǐng)域中的三角化算法是把一系列復(fù)雜多變的多邊形切分成一組三角形,使得三角化的形狀勻稱和計算速度快。由于在圖形處理器內(nèi)部實現(xiàn)了任意三角形的光柵化,因此對于速度的要求更為突出。現(xiàn)有三角化技術(shù)主要如下:Delaunay三角剖分法,其應(yīng)用最為廣泛。從Delaunay三角網(wǎng)的性質(zhì)上可以發(fā)現(xiàn)這些性質(zhì)=Delaunay三角網(wǎng)是唯一的,三角網(wǎng)的外邊界構(gòu)成了點集P的凸多邊形“外殼”,沒有任何點在三角形的外接圓內(nèi)部。如果一個三角網(wǎng)滿足上述條件,則稱為Delaunay三角網(wǎng)。如果將三角網(wǎng)中的每個三角形的最小角進(jìn)行升序排列,則Delaunay三角網(wǎng)的排列得到的數(shù)值最大,從這個意義上講,Delaunay三角網(wǎng)是“最接近于規(guī)則化”的三角網(wǎng)。但是,本發(fā)明的發(fā)明人發(fā)現(xiàn),若從時間復(fù)雜度上講,Delaunay算法得到的三角形數(shù)目較多形狀較小,計算量大、復(fù)雜度高,處理速度比較慢。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種計算機(jī)圖像處理中多邊形的三角化方法及其系統(tǒng),減少了不必要的三角形切分,所組成的三角形數(shù)目較少,形狀較大,大大減少了計算機(jī)圖形處理部件的計算量,后續(xù)在三角形基礎(chǔ)上的圖形處理效率較高。為解決上述技術(shù)問題,本發(fā)明的實施方式公開了一種計算機(jī)圖像處理中多邊形的三角化方法,包括以下步驟:對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序;根據(jù)經(jīng)排序的各頂點建立活動邊表;依次發(fā)出穿過經(jīng)排序的各頂點且垂直于指定坐標(biāo)軸的掃描線,對于每一條穿過當(dāng)前頂點的當(dāng)前掃描線,執(zhí)行以下步驟:根據(jù)活動邊表得到對應(yīng)的活動邊,對當(dāng)前掃描線穿過的活動邊進(jìn)行計數(shù),根據(jù)計數(shù)確定各活動邊之間區(qū)域的有效性,僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用。本發(fā)明的實施方式還公開了一種計算機(jī)圖像處理中多邊形的三角化系統(tǒng),包括以下模塊:排序模塊,用于對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序;建表模塊,用于根據(jù)經(jīng)排序模塊排序的各頂點建立活動邊表;掃描模塊,用于依次發(fā)出穿過經(jīng)排序模塊排序的各頂點且垂直于指定坐標(biāo)軸的掃描線;獲取模塊,用于對于掃描模塊發(fā)出的每一條穿過當(dāng)前頂點的當(dāng)前掃描線,根據(jù)建表模塊建立的活動邊表得到對應(yīng)的活動邊;計數(shù)模塊,用于對于掃描模塊發(fā)出的每一條穿過當(dāng)前頂點的當(dāng)前掃描線,對當(dāng)前掃描線穿過的活動邊進(jìn)行計數(shù);確定模塊,用于根據(jù)計數(shù)模塊得到的計數(shù),確定獲取模塊獲取的各活動邊之間區(qū)域的有效性;組建模塊,用于僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用。本發(fā)明實施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于:僅在與頂點連通的當(dāng)前掃描線之上的有效區(qū)域組建三角形,減少了不必要的三角形切分,所組成的三角形數(shù)目較少,形狀較大,大大減少了計算機(jī)圖形處理部件的計算量,且后續(xù)在三角形基礎(chǔ)上的圖形處理效率較高。進(jìn)一步地,由頂點的下邊表的有序及頂點的有序保證了活動邊的有序,因此在每次發(fā)掃描線時不需要對所有活動邊求交,對交點排序,所以計算量大大減少;進(jìn)一步地,在有序活動邊表的三角化方法中,使用奇偶填充規(guī)則,通過只對在當(dāng)前掃描線之上的當(dāng)前頂點的最近左邊和最近右邊之間的有效區(qū)域,組建三角形,從而進(jìn)一步減少了計算量;進(jìn)一步地,在有序活動邊表的三角化方法中,使用非零填充規(guī)則,通過只對在當(dāng)前掃描線之上的當(dāng)前頂點的最遠(yuǎn)左邊和最遠(yuǎn)右邊之間的有效區(qū)域,組建三角形,從而進(jìn)一步減少了計算量;進(jìn)一步地,在對多邊形的頂點排序時,由于對頂點索引表進(jìn)行的快速排序只交換指針而不交換數(shù)據(jù),使得內(nèi)存數(shù)據(jù)在內(nèi)存中的位置挪移最少,減少了系統(tǒng)負(fù)載,提高了圖形
處理效率。
圖1是本發(fā)明第一實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的流程不意圖;圖2是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的流程不意圖;圖3是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的流程不意圖;圖4是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形示意圖;圖5(a)是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形示意圖;圖5(b)是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形效果示意圖;圖5(c)是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形效果示意圖;圖6(a)是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形示意圖;圖6(b)是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形效果示意圖;圖6(c)是本發(fā)明第二實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形效果示意圖;圖7是本發(fā)明第三實施方式中一種計算機(jī)圖像處理中多邊形的三角化系統(tǒng)的結(jié)構(gòu)示意圖;圖8是本發(fā)明第四實施方式中一種計算機(jī)圖像處理中多邊形的三角化系統(tǒng)的結(jié)構(gòu)示意圖;圖9是本發(fā)明第四實施方式中一種計算機(jī)圖像處理中多邊形的三角化系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式在以下的敘述中,為了使讀者更好地理解本申請而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實施方式的種種變化和修改,也可以實現(xiàn)本申請各權(quán)利要求所要求保護(hù)的技術(shù)方案。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明的實施方式作進(jìn)一步地詳細(xì)描述。本發(fā)明第一實施方式涉及一種計算機(jī)圖像處理中多邊形的三角化方法。圖1是該計算機(jī)圖像處理中多邊形的三角化方法的流程示意圖。具體地說,如圖1所示,該計算機(jī)圖像處理中多邊形的三角化方法包括以下步驟:在步驟101中,對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序。此后進(jìn)入步驟102,根據(jù)經(jīng)排序的各頂點建立活動邊表。將多邊形頂點位置及其先后連接關(guān)系按序排列生成有序頂點集合,用于表示該多邊形,通過對其進(jìn)行遍歷排序即可生成該多邊形的活動邊表。活動邊表的建立方法包括但不限于矢量頂點方式按照坐標(biāo)方向排序生成活動邊表,也可以多邊形頂點對角連線的方式生成活動邊表。此后進(jìn)入步驟103,依次發(fā)出穿過經(jīng)排序的某一頂點且垂直于指定坐標(biāo)軸的掃描線。此后進(jìn)入步驟104,對于穿過當(dāng)前頂點的當(dāng)前掃描線,根據(jù)活動邊表得到對應(yīng)的活動邊。此后進(jìn)入步驟105,根據(jù)所得到的活動邊,對當(dāng)前掃描線穿過的活動邊進(jìn)行計數(shù)。此后進(jìn)入步驟106,根據(jù)計數(shù)確定各活動邊之間區(qū)域的有效性。在本發(fā)明的實施方式中,有效區(qū)域為可以進(jìn)行三角化的區(qū)域。此后進(jìn)入步驟107,在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用。僅在與頂點連通的當(dāng)前掃描線之上的有效區(qū)域組建三角形,減少了不必要的三角形切分,所組成的三角形數(shù)目較少,形狀較大,大大減少了計算機(jī)圖形處理部件的計算量,后續(xù)在三角形基礎(chǔ)上的圖形處理效率較高。
此后進(jìn)入步驟108,判斷當(dāng)前頂點是否為有序活動邊表中的最后一個頂點。若是,則結(jié)束本流程;否則返回步驟103,依次發(fā)出穿過經(jīng)排序的當(dāng)前頂點的下一頂點且垂直于指定坐標(biāo)軸的掃描線。本發(fā)明第二實施方式涉及一種計算機(jī)圖像處理中多邊形的三角化方法。第二實施方式在第一實施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于:有序活動邊表的三角化通過表中的活動邊和頂點的有序,每次發(fā)送掃描線時,不必對所有活動邊求交以及直接對交點排序,大大減少了計算量。同時,使用相應(yīng)的法則,確定三角化的有效區(qū)域,進(jìn)一步減少了計算量,提高了圖像處理效率。圖2是該計算機(jī)圖像處理中多邊形的三角化方法的流程示意圖。具體地說,如圖2所示,該計算機(jī)圖像處理中多邊形的三角化方法,包括以下步驟:在步驟201中,根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小和使用快速排序法,對多邊形的各個頂點進(jìn)行排序。此后進(jìn)入步驟202,根據(jù)經(jīng)排序的各頂點并按照其所對應(yīng)的活動邊的斜率大小排
序建立活動邊表。相應(yīng)地,在活動邊表中,每個頂點所對應(yīng)的活動邊包括但不限于根據(jù)斜率大小排序,若按照斜率進(jìn)行活動邊排序,則其斜率獲取可以通過每條活動邊的一頂點與另一頂點之間的橫坐標(biāo)增量DX與縱坐標(biāo)增量DY的比值DX/DY實現(xiàn),斜率越小表示越“右邊”,斜率越大表示越“左邊”,一個頂點發(fā)了掃描線,并生成完三角形后,會把其所有已排序的下邊,力口入到現(xiàn)有的有序活動邊表,構(gòu)成一個新的有序活動邊表,并且已經(jīng)是排好序的。這樣發(fā)掃描線找最近、最遠(yuǎn)的邊時,就節(jié)省了系統(tǒng)計算工作量,減少了系統(tǒng)負(fù)載,提高了系統(tǒng)工作效率。此后進(jìn)入步驟203,依次發(fā)出穿過經(jīng)排序的當(dāng)前頂點的下一頂點且垂直于指定坐標(biāo)軸的掃描線,被掃描線穿過的該下一頂點為當(dāng)前頂點。由頂點的下邊表的有序及頂點的有序保證了活動邊的有序,因此不需要每次發(fā)掃描線時和所有活動邊求交,然后對交點排序,所以計算量大大減少。此后進(jìn)入步驟204,根據(jù)穿過該當(dāng)前頂點的當(dāng)前掃描線和活動邊表得到對應(yīng)的活動邊。此后進(jìn)入步驟205,根據(jù)活動邊及奇偶填充法則對當(dāng)前掃描線穿過的活動邊計數(shù)。在有序活動邊表的三角化方法中,使用奇偶填充規(guī)則,通過只對在當(dāng)前掃描線之上的當(dāng)前頂點的最近左邊和最近右邊之間的有效區(qū)域,組建三角形,從而進(jìn)一減少了計算量。作為本發(fā)明的一個優(yōu)選例,只有在當(dāng)前掃描線穿過當(dāng)前頂點的活動邊時,才對該活動邊及當(dāng)前掃描線穿過的前一條活動邊之間的區(qū)域進(jìn)行計數(shù)。此后進(jìn)入步驟206,找到在當(dāng)前掃描線之上的當(dāng)前頂點的最近左邊和最近右邊,其中該最近左邊的左方區(qū)域的計數(shù)為偶數(shù),該最近左邊的右方區(qū)域的計數(shù)為奇數(shù),該最近右邊的左方區(qū)域的計數(shù)為奇數(shù),該最近右邊的右方區(qū)域的計數(shù)為偶數(shù)。此后進(jìn)入步驟207,僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,由最近上頂點的掃描線、當(dāng)前掃描線、最近左邊和最近右邊確定可以進(jìn)行三角化的有效區(qū)域,其中,最近左邊或最近右邊的上一頂點中最靠近當(dāng)前掃描線的頂點為最近上頂點。僅在與頂點連通的當(dāng)前掃描線之上的有效區(qū)域組建三角形,減少了不必要的三角形切分,所組成的三角形數(shù)目較少,形狀較大,大大減少了計算機(jī)圖形處理部件的計算量,后續(xù)在三角形基礎(chǔ)上的圖形處理效率較高。此后進(jìn)入步驟208,判斷該有效區(qū)域是否為四邊形。若為四邊形,則進(jìn)入步驟209 ;否則進(jìn)入步驟210。在步驟209中,由穿過該最近上頂點的掃描線、當(dāng)前掃描線、最近左邊和最近右邊圍成的一個區(qū)域,其中,最近左邊或最近右邊的上一頂點中最靠近當(dāng)前掃描線的頂點為最近上頂點,如果該區(qū)域為四邊形,則以對角線將該四邊形劃分為兩個三角形,在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用,此后進(jìn)入步驟210。在當(dāng)前掃描線之上的當(dāng)前頂點的最近左邊和最近右邊之間的有效區(qū)域確定為三角形或者四邊形,之后,通過連接四邊形的左上頂點與右下頂點或者右上頂點與左下頂點形成的對角連線,將該四邊形再次劃分為兩個三角形,從而完成該有效區(qū)域的三角化。在步驟210中,分別更新最近左邊及最近右邊的上端點為各自與當(dāng)前掃描線的交點,對未進(jìn)行三角化有效性判斷的區(qū)域的頂點進(jìn)行刷新,為下一次該區(qū)域的三角化有效性判斷進(jìn)行頂點數(shù)據(jù)準(zhǔn)備。此后進(jìn)入步驟211,從當(dāng)前活動邊表中刪除當(dāng)前頂點的所有上邊,對未三角化有效性判斷的區(qū)域頂點的活動邊進(jìn)行刷新,為下一次該區(qū)域的三角化有效性判斷進(jìn)行活動邊數(shù)據(jù)準(zhǔn)備。此后進(jìn)入步驟212,判斷當(dāng)前頂點是否有下邊。若有下邊,則進(jìn)入步驟213 ;否則返回步驟203,依次發(fā)出穿過經(jīng)排序的當(dāng)前頂點的下一頂點且垂直于指定坐標(biāo)軸的掃描線,被掃描線穿過的該下一頂點為當(dāng)前頂點。在步驟213中,在最近左邊和最近右邊之間,將當(dāng)前頂點的所有下邊依次插入,對多邊形中未被三角化的剩余區(qū)域進(jìn)行活動邊和頂點的有序刷新。此后進(jìn)入步驟214,判斷當(dāng)前頂點是否為有序活動邊表中的最后一個頂點。若是,則結(jié)束本流程;否則返回步驟203,依次發(fā)出穿過經(jīng)排序的當(dāng)前頂點下一頂點且垂直于指定坐標(biāo)軸的掃描線,被掃描線穿過的該下一頂點為當(dāng)前頂點。在掃描到當(dāng)前活動邊為最后一條邊之前,或者在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的剩余區(qū)域都不符合有效區(qū)域的判斷條件時,對于該多邊形中剩余未被三角化的有效區(qū)域的確定,需要在每完成一次的有效區(qū)域三角化之后,更新該有效區(qū)域的最近左邊和最近右邊的上端點為各自與當(dāng)前掃描線的交點,同時在活動邊表中將已進(jìn)行過三角化的有效區(qū)域的活動邊刪除,更新當(dāng)前活動邊表的活動邊都是未被掃描過的活動邊。圖3是該計算機(jī)圖像處理中多邊形的三角化方法的流程示意圖。具體地說,如圖3所示,該計算機(jī)圖像處理中多邊形的三角化方法包括以下步驟:在步驟301中,根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小和使用快速排序法,對多邊形的各個頂點進(jìn)行排序。在本發(fā)明的某些實施方式中,對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序,其排序方法包括但不限于快速排序法,也可以包括其他的排序方法,比如冒泡排序法,折半排序法等。此后進(jìn)入步驟302,根據(jù)經(jīng)排序的各頂點并按照其所對應(yīng)的活動邊的斜率大小排序建立活動邊表。相應(yīng)地,在活動邊表中,每個頂點所對應(yīng)的活動邊包括但不限于根據(jù)斜率大小排序,若按照斜率進(jìn)行活動邊排序,則其斜率獲取可以通過每條活動邊的一頂點與另一頂點之間的橫坐標(biāo)增量DX與縱坐標(biāo)增量DY的比值DX/DY實現(xiàn),斜率越小表示越“右邊”,斜率越大表示越“左邊”,一個頂點發(fā)了掃描線,并生成完三角形后,會把其所有已排序的下邊,力口入到現(xiàn)有的有序活動邊表,構(gòu)成一個新的有序活動邊表,并且已經(jīng)是排好序的。這樣發(fā)掃描線找最近、最遠(yuǎn)的邊時,就節(jié)省了系統(tǒng)計算工作量,減少了系統(tǒng)負(fù)載,提高了系統(tǒng)工作效率。此后進(jìn)入步驟303,依次發(fā)出穿過經(jīng)排序的當(dāng)前頂點的下一頂點且垂直于指定坐標(biāo)軸的掃描線,被掃描線穿過的該下一頂點為當(dāng)前頂點。由頂點的下邊表的有序及頂點的有序保證了活動邊的有序,因此每次發(fā)掃描線時不需要和所有活動邊求交,以及對交點排序,所以計算量進(jìn)一步減少。此后進(jìn)入步驟304,根據(jù)穿過該當(dāng)前頂點的當(dāng)前掃描線和活動邊表得到對應(yīng)的活動邊。此后進(jìn)入步驟305,根據(jù)所得到的活動邊及非零填充法則對當(dāng)前掃描線穿過的活動邊計數(shù)。此后進(jìn)入步驟306,找到在當(dāng)前掃描線之上的當(dāng)前頂點的最遠(yuǎn)左邊和最遠(yuǎn)右邊,其中該最遠(yuǎn)左邊的左方區(qū)域的計數(shù)為零,該最遠(yuǎn)左邊的右方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的左方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的右方區(qū)域的計數(shù)為零。在有序活動邊表的三角化方法中,使用非零填充規(guī)則,通過只對在當(dāng)前掃描線之上的當(dāng)前頂點的最遠(yuǎn)左邊和最遠(yuǎn)右邊之間的有效區(qū)域,組建三角形,從而進(jìn)一減少了計算量。此后進(jìn)入步驟307,僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,由上一頂點的掃描線、當(dāng)前掃描線、最遠(yuǎn)左邊和最遠(yuǎn)右邊確定可以進(jìn)行三角化的有效區(qū)域,其中,該上一頂點為經(jīng)排序的當(dāng)前頂點的上一頂點。若判定最遠(yuǎn)左邊的左邊區(qū)域計數(shù)為零且其右邊區(qū)域的計數(shù)為非零整數(shù),同時最遠(yuǎn)右邊的左邊區(qū)域的計數(shù)為非零整數(shù)且其右邊區(qū)域的計數(shù)為零,則對最遠(yuǎn)左邊和最近右邊之間并且未被確定過有效區(qū)域的區(qū)域,確定為有效區(qū)域。僅在與頂點連通的當(dāng)前掃描線之上的有效區(qū)域組建三角形,減少了不必要的三角形切分,其所組成的三角形數(shù)目較少,形狀較大,大大減少了計算機(jī)圖形處理部件的計算量,后續(xù)在三角形基礎(chǔ)上的圖形處理效率較高。由穿過上一頂點的掃描線、當(dāng)前掃描線、最遠(yuǎn)左邊和最遠(yuǎn)右邊圍成的一個區(qū)域,其中,該上一頂點為經(jīng)排序的當(dāng)前頂點的上一頂點,如果該區(qū)域為四邊形,則以其對角線將該四邊形劃分為兩個三角形。此后進(jìn)入步驟308,判斷該有效區(qū)域是否為四邊形。若是,則進(jìn)入步驟309 ;否則進(jìn)入步驟310。在步驟309中,以對角線將該四邊形劃分為兩個三角形。在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用,此后進(jìn)入步驟310。在當(dāng)前掃描線之上的當(dāng)前頂點的最遠(yuǎn)左邊和最遠(yuǎn)右邊之間的有效區(qū)域確定為三角形或者四邊形,之后,通過連接四邊形的左上頂點與右下頂點或者右上頂點與左下頂點形成的對角線,將該四邊形再次劃分為兩個三角形,從而完成該有效區(qū)域的三角化。在步驟310中,分別更新最遠(yuǎn)左邊及最遠(yuǎn)右邊的上端點為各自與當(dāng)前掃描線的交點,對未進(jìn)行三角化有效性判斷的區(qū)域的頂點進(jìn)行刷新,為該區(qū)域的下次三角化有效性判斷進(jìn)行頂點數(shù)據(jù)準(zhǔn)備。此后進(jìn)入步驟311,從當(dāng)前活動邊表中刪除當(dāng)前頂點的所有上邊,對未三角化有效性判斷的區(qū)域頂點的活動邊進(jìn)行刷新,為該區(qū)域的下一次三角化有效性判斷進(jìn)行活動邊數(shù)據(jù)準(zhǔn)備。此后進(jìn)入步驟312,判斷當(dāng)前頂點是否有下邊。若是,則進(jìn)入步驟313 ;否則返回步驟303,依次發(fā)出穿過經(jīng)排序的當(dāng)前頂點的下一頂點且垂直于指定坐標(biāo)軸的掃描線,被掃描線穿過的該下一頂點為當(dāng)前頂點。在步驟313中,在最遠(yuǎn)左邊和最遠(yuǎn)右邊之間,將當(dāng)前頂點的所有下邊依次插入,對多邊形中未被三角化的剩余區(qū)域中的活動邊和頂點有序刷新。此后進(jìn)入步驟314,判斷當(dāng)前頂點是否為有序活動邊表中的最后一個頂點。若是,則結(jié)束該多邊形三角化流程;否則返回步驟303,依次發(fā)出穿過經(jīng)排序的當(dāng)前頂點的下一頂點且垂直于指定坐標(biāo)軸的掃描線,其中,被掃描線穿過的該下一頂點為當(dāng)前頂點。在掃描到當(dāng)前活動邊為最后一條邊之前,或者在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的剩余區(qū)域都不符合有效區(qū)域的判斷條件時,對于該多邊形中剩余未被三角化的區(qū)域的有效性判斷,需要在每完成一次的有效區(qū)域三角化之后,更新該有效區(qū)域的最遠(yuǎn)左邊和最遠(yuǎn)右邊的上端點為各自與當(dāng)前掃描線的交點,同時在活動邊表中將已進(jìn)行過三角化的有效區(qū)域的活動邊刪除,經(jīng)更新后的當(dāng)前活動邊表的活動邊都是未被掃描過的活動邊。作為本發(fā)明的優(yōu)選例,圖4是本實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形示意圖,活動邊表中每個頂點Vi所對應(yīng)的活動邊根據(jù)斜率大小排序時,只要保證各頂點活動邊按照斜率大小排序的位序方向與穿過經(jīng)排序的各頂點的掃描線的方向一致即可,即都垂直于指定坐標(biāo)軸。如圖4所示,假定坐標(biāo)軸Y軸為指定坐標(biāo)軸,坐標(biāo)軸X軸為垂直于Y軸的坐標(biāo)軸,矢量多邊形的頂點根據(jù)指定坐標(biāo)軸Y軸的方向的坐標(biāo)值的排序為{v8,V7, V9, V6, V0, V1, V5, V2, V3, V4I ,在穿過頂點V。上半?yún)^(qū)域的三角化有效性判斷之后,將頂點Vtl的下邊I1插入有序活動邊表使有序活動邊表數(shù)據(jù)刷新的過程中,只要保證發(fā)出一條平行于坐標(biāo)軸X軸的直線I1,依次與活動邊I1相交的順序進(jìn)行活動邊表中活動邊排序的結(jié)果,就為按照活動邊的斜率排序的結(jié)果,所求斜率可以直接通過頂點與頂點之間的位置數(shù)值關(guān)系進(jìn)行計算。奇偶填充和非零填充都是計算機(jī)圖形學(xué)中的術(shù)語。如果掃描線與一個邊相交,則根據(jù)邊的方向,交后的區(qū)域+1或-1,因此不同的區(qū)域有不同的值。奇偶填充指只填奇區(qū)域,不填偶區(qū)域。非零填充指填充所有非零的區(qū)域,不管是奇區(qū)域還是偶區(qū)域。作為本發(fā)明的優(yōu)選例,圖5(a)是本實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形原始示意圖,經(jīng)過基于奇偶填充規(guī)則的三角化處理之后,得到如圖5(b)所示關(guān)于該多邊形的效果示意圖,經(jīng)過基于非零填充規(guī)則的三角化處理之后,得到如圖5(c)所示關(guān)于該多邊形的效果示意圖,圖6(a)是本實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的另一種多邊形原始示意圖,其中,頂點V2有上邊A,在其活動邊中,邊A在邊B、C、D的左邊,故該頂點V2也認(rèn)為在邊B、C、D的左邊。并且,其下邊F也認(rèn)為在邊B、C、D的左邊。頂點V1X上邊。需要與活動邊B和邊C求交以判斷其位置,該頂點V1在邊A和邊D之間。并且,其下邊邊B和邊C也會在邊A和邊D之間。圖6(b)是本實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的一種多邊形效果示意圖,三角化有效區(qū)域的確定采用奇偶填充法則進(jìn)行計數(shù),對于頂點V1,它在邊A和邊D之間,會找到其最近的左邊A,且該邊右方區(qū)域的計數(shù)為奇數(shù);找到其最近的右邊D,且該邊左方區(qū)域值為奇數(shù)。符合上述條件的邊A和邊D,會與穿過頂點V1的掃描線求交,得到的交點Itl和I1會與頂點V1的上一頂點%組成三角形,發(fā)送給硬件完成繪制工作,并更新交點ItI和I1分別為邊A和邊D的上端點,以及將頂點V1的下邊B和邊C插入到邊A和邊D之間,更新活動邊表。對于頂點V2,它在最左邊,只需找到右邊B,該邊符合左方區(qū)域的計數(shù)為奇數(shù)且右方區(qū)域的計數(shù)為偶數(shù)的條件,會與穿過頂點V2的掃描線求交,交點I2,并與頂點Itl, V1,交點I2組成一個四邊形,該四邊形進(jìn)一步分為兩個三角形,發(fā)送給相應(yīng)硬件處理,并更新交點I2為邊B的上端點,以及將頂點V2的下邊F插入到邊B的左邊用于更新活動邊表。對頂點V2來說,只會生成有效區(qū)域ItlV1I2V2,和邊C及邊D構(gòu)成的區(qū)域不為有效區(qū)域。圖6(c)是本實施方式中一種計算機(jī)圖像處理中多邊形的三角化方法的另一種多邊形效果示意圖,三角化有效區(qū)域的確定采用非零填充法則進(jìn)行計數(shù),穿過頂點V1的掃描線求交,得到的交點Itl和I1會與Vtl組成三角形,發(fā)送給硬件完成繪制工作,并更新交點Itl和I1分別為邊A和邊D的上端點,以及將頂點V1的下邊B和邊C插入到邊A和邊D之間,更新活動邊表。對于頂點v2,它在最左邊,只需找到最遠(yuǎn)右邊D,該邊符合左方區(qū)域的計數(shù)為非零整數(shù),右邊區(qū)域的計數(shù)為零的條件,且距離V2最遠(yuǎn)。會穿過頂點V2的掃描線求交,交點I3,并與頂點I1, 10, V2組成一個四邊形,該四邊形進(jìn)一步分為兩個三角形,發(fā)送給相應(yīng)硬件處理,并更新交點I3為邊D的上端點,以及將頂點V2的下邊F插入到邊B的左邊用于更新活動邊表。對V2來說,只會生成有效區(qū)域I3I1ItlV2,邊B和邊C構(gòu)成的區(qū)域不會再額外生成三角形。在本發(fā)明的其他實施方式中,包括但不限于以非零或者奇偶的方式進(jìn)行三角化有效區(qū)域的確定,也可以以其他渲染規(guī)則進(jìn)行,比如左上填充、馬賽克處理等。本發(fā)明的各方法實施方式均可以以軟件、硬件、固件等方式實現(xiàn)。不管本發(fā)明是以軟件、硬件、還是固件方式實現(xiàn),指令代碼都可以存儲在任何類型的計算機(jī)可訪問的存儲器中(例如永久的或者可修改的,易失性的或者非易失性的,固態(tài)的或者非固態(tài)的,固定的或者可更換的介質(zhì)等等)。同樣,存儲器可以例如是可編程陣列邏輯(Prog rammable ArrayLogic,簡稱“PAL”)、隨機(jī)存取存儲器(Random Access Memory,簡稱“RAM”)、可編程只讀存儲器(Programmable Read Only Memory,簡稱 “PROM”)、只讀存儲器(Read-Only Memory,簡稱 “ROM”)、電可擦除可編程只讀存儲器(Electrically Erasable Prog rammable ROM,簡稱“EEPR0M”)、磁盤、光盤、數(shù)字通用光盤(Digital Versatile Disc,簡稱“DVD”)等等。本發(fā)明第三實施方式涉及一種計算機(jī)圖像處理中多邊形的三角化系統(tǒng)。圖7是該計算機(jī)圖像處理中多邊形的三角化系統(tǒng)的結(jié)構(gòu)示意圖。具體地說,如圖7所示,該計算機(jī)圖像處理中多邊形的三角化系統(tǒng)包括以下模塊:排序模塊,用于對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序。建表模塊,用于根據(jù)經(jīng)排序模塊排序的各頂點建立活動邊表。掃描模塊,用于依次發(fā)出穿過經(jīng)排序模塊排序的各頂點且垂直于指定坐標(biāo)軸的掃描線。獲取模塊,用于對于掃描模塊發(fā)出的每一條穿過當(dāng)前頂點的當(dāng)前掃描線,根據(jù)建表模塊建立的活動邊表得到對應(yīng)的活動邊。計數(shù)模塊,用于對于掃描模塊發(fā)出的每一條穿過當(dāng)前頂點的當(dāng)前掃描線,對當(dāng)前掃描線穿過的活動邊進(jìn)行計數(shù)。確定模塊,用于根據(jù)計數(shù)模塊得到的計數(shù),確定獲取模塊獲取的各活動邊之間區(qū)域的有效性。組建模塊,用于僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用。在本發(fā)明的其他某些實施方式中,掃描模塊可以每發(fā)出一條掃描線,就對該掃描線之上且在未被三角化的有效區(qū)域中組建三角形,也可以先就多邊形的所有頂點全部出掃描線,再對每一條掃描之上且在未被三角化的有效區(qū)域中組建三角形。第一實施方式是與本實施方式相對應(yīng)的方法實施方式,本實施方式可與第一實施方式互相配合實施。第一實施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實施方式中。本發(fā)明第四實施方式涉及一種計算機(jī)圖像處理中多邊形的三角化系統(tǒng)。圖8和圖9是該計算機(jī)圖像處理中多邊形的三角化系統(tǒng)的結(jié)構(gòu)示意圖。第四實施方式在第三實施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于:根據(jù)不同的填充法則,增加了相應(yīng)的子模塊。排序模塊使用快速排序法對各個頂點進(jìn)行排序?;顒舆叡碇忻總€頂點所對應(yīng)的活動邊根據(jù)斜率大小排序。具體地說:如圖8所示,組建模塊還包括以下子模塊:最近邊獲取子模塊,用于找到在當(dāng)前掃描線之上的當(dāng)前頂點的最近左邊和最近右邊,其中該最近左邊的左方區(qū)域的計數(shù)為偶數(shù),該最近左邊的右方區(qū)域的計數(shù)為奇數(shù),該最近右邊的左方區(qū)域的計數(shù)為奇數(shù),該最近右邊的右方區(qū)域的計數(shù)為偶數(shù)。第一生成子模塊,用于由穿過最近上頂點的掃描線、當(dāng)前掃描線、最近邊獲取模塊獲取的最近左邊和最近右邊圍成一個區(qū)域,其中,最近邊獲取模塊獲取的最近左邊或最近右邊的上一頂點中最靠近當(dāng)前掃描線的頂點為最近上頂點。第一劃分子模塊,用于如果第一生成子模塊圍成的區(qū)域為四邊形,則以對角線將該四邊形劃分為兩個三角形。如圖9所示,組建模塊還包括以下子模塊:最遠(yuǎn)邊獲取子模塊,用于找到在當(dāng)前掃描線之上的當(dāng)前頂點的最遠(yuǎn)左邊和最遠(yuǎn)右邊,其中該最遠(yuǎn)左邊的左方區(qū)域的計數(shù)為零,該最遠(yuǎn)左邊的右方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的左方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的右方區(qū)域的計數(shù)為零。
第二生成子模塊,用于由穿過上一頂點的掃描線、當(dāng)前掃描線、最遠(yuǎn)邊獲取模塊獲取的最遠(yuǎn)左邊和最遠(yuǎn)右邊圍成一個區(qū)域,其中,該上一頂點為經(jīng)排序的當(dāng)前頂點的上一頂點。第二劃分子模塊,用于如果第二生成子模塊圍成的區(qū)域為四邊形,則以對角線將該四邊形劃分為兩個三角形。第二實施方式是與本實施方式相對應(yīng)的方法實施方式,本實施方式可與第二實施方式互相配合實施。第二實施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第二實施方式中。需要說明的是,本發(fā)明各設(shè)備實施方式中提到的各模塊都是邏輯模塊,在物理上,一個邏輯模塊可以是一個物理模塊,也可以是一個物理模塊的一部分,還可以以多個物理模塊的組合實現(xiàn),這些邏輯模塊本身的物理實現(xiàn)方式并不是最重要的,這些邏輯模塊所實現(xiàn)的功能的組合是才解決本發(fā)明所提出的技術(shù)問題的關(guān)鍵。此外,為了突出本發(fā)明的創(chuàng)新部分,本發(fā)明上述各設(shè)備實施方式并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的模塊引入,這并不表明上述設(shè)備實施方式并不存在其它的模塊。雖然通過參照本發(fā)明的某些優(yōu)選實施方式,已經(jīng)對本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種計算機(jī)圖像處理中多邊形的三角化方法,其特征在于,包括以下步驟: 對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序; 根據(jù)經(jīng)排序的各頂點建立活動邊表; 依次發(fā)出穿過經(jīng)排序的各頂點且垂直于所述指定坐標(biāo)軸的掃描線,對于每一條穿過當(dāng)前頂點的當(dāng)前掃描線,執(zhí)行以下步驟: 根據(jù)所述活動邊表得到對應(yīng)的活動邊,對當(dāng)前掃描線穿過的活動邊進(jìn)行計數(shù),根據(jù)計數(shù)確定各活動邊之間區(qū)域的有效性,僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用。
2.根據(jù)權(quán)利要求 1所述的計算機(jī)圖像處理中多邊形的三角化方法,其特征在于,所述活動邊表中每個頂點所對應(yīng)的活動邊根據(jù)斜率大小排序。
3.根據(jù)權(quán)利要求1所述的計算機(jī)圖像處理中多邊形的三角化方法,其特征在于,在所述對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序的步驟中,使用快速排序法對各個頂點進(jìn)行排序。
4.根據(jù)權(quán)利要求1至3中任一項所述的計算機(jī)圖像處理中多邊形的三角化方法,其特征在于,所述僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形的步驟,包括以下子步驟: 找到在當(dāng)前掃描線之上的當(dāng)前頂點的最近左邊和最近右邊,其中該最近左邊的左方區(qū)域的計數(shù)為偶數(shù),該最近左邊的右方區(qū)域的計數(shù)為奇數(shù),該最近右邊的左方區(qū)域的計數(shù)為奇數(shù),該最近右邊的右方區(qū)域的計數(shù)為偶數(shù); 由穿過該最近上頂點的掃描線、當(dāng)前掃描線、所述最近左邊和最近右邊圍成一個區(qū)域,如果該區(qū)域為四邊形,則以對角線將該四邊形劃分為兩個三角形,其中,所述最近左邊或最近右邊的上一頂點中最靠近當(dāng)前掃描線的頂點為最近上頂點。
5.根據(jù)權(quán)利要求1至3中任一項所述的計算機(jī)圖像處理中多邊形的三角化方法,其特征在于,所述僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形的步驟,包括以下子步驟: 找到在當(dāng)前掃描線之上的當(dāng)前頂點的最遠(yuǎn)左邊和最遠(yuǎn)右邊,其中該最遠(yuǎn)左邊的左方區(qū)域的計數(shù)為零,該最遠(yuǎn)左邊的右方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的左方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的右方區(qū)域的計數(shù)為零; 由穿過上一頂點的掃描線、當(dāng)前掃描線、所述最遠(yuǎn)左邊和最遠(yuǎn)右邊圍成一個區(qū)域,該上一頂點為經(jīng)排序的當(dāng)前頂點的上一頂點,如果該區(qū)域為四邊形,則以對角線將該四邊形劃分為兩個三角形。
6.一種計算機(jī)圖像處理中多邊形的三角化系統(tǒng),其特征在于,包括以下模塊: 排序模塊,用于對多邊形的各個頂點根據(jù)指定坐標(biāo)軸的坐標(biāo)值大小進(jìn)行排序; 建表模塊,用于根據(jù)經(jīng)所述排序模塊排序的各頂點建立活動邊表; 掃描模塊,用于依次發(fā)出穿過經(jīng)所述排序模塊排序的各頂點且垂直于所述指定坐標(biāo)軸的掃描線; 獲取模塊,用于對于所述掃描模塊發(fā)出的每一條穿過當(dāng)前頂點的當(dāng)前掃描線,根據(jù)所述建表模塊建立的活動邊表得到對應(yīng)的活動邊; 計數(shù)模塊,用于對于所述掃描模塊發(fā)出的每一條穿過當(dāng)前頂點的當(dāng)前掃描線,對當(dāng)前掃描線穿過的活動邊進(jìn)行計數(shù); 確定模塊,用于根據(jù)所述計數(shù)模塊得到的計數(shù),確定所述獲取模塊獲取的各活動邊之間區(qū)域的有效性; 組建模塊,用于僅在當(dāng)前掃描線之上且與當(dāng)前頂點連通又還未被三角化的有效區(qū)域中組建三角形,供計算機(jī)的圖形處理器渲染圖像使用。
7.根據(jù)權(quán)利要求6所述的計算機(jī)圖像處理中多邊形的三角化系統(tǒng),其特征在于,所述活動邊表中每個頂點所對應(yīng)的活動邊根據(jù)斜率大小排序。
8.根據(jù)權(quán)利要求6所述的計算機(jī)圖像處理中多邊形的三角化系統(tǒng),其特征在于,所述排序模塊使用快速排序法對各個頂點進(jìn)行排序。
9.根據(jù)權(quán)利要求6至8中任一項所述的計算機(jī)圖像處理中多邊形的三角化系統(tǒng),其特征在于,所述組建模塊還包括以下子模塊: 最近邊獲取子模塊,用于找到在當(dāng)前掃描線之上的當(dāng)前頂點的最近左邊和最近右邊,其中該最近左邊的左方區(qū)域的計數(shù)為偶數(shù),該最近左邊的右方區(qū)域的計數(shù)為奇數(shù),該最近右邊的左方區(qū)域的計數(shù)為奇數(shù),該最近右邊的右方區(qū)域的計數(shù)為偶數(shù); 第一生成子模塊,用于由穿過最近上頂點的掃描線、當(dāng)前掃描線、所述最近邊獲取模塊獲取的最近左邊和最近右邊圍成一個區(qū)域,其中,所述最近邊獲取模塊獲取的最近左邊或最近右邊的上一頂點中最靠近當(dāng)前掃描線的頂點為最近上頂點; 第一劃分子模塊,用于如果所述第一生成子模塊生成的區(qū)域為四邊形,則以對角線將該四邊形劃分為兩個三角形。
10.根據(jù)權(quán)利要求6至8中任一項所述的計算機(jī)圖像處理中多邊形的三角化系統(tǒng),其特征在于,所述組建模塊還包括以下子模塊: 最遠(yuǎn)邊獲取子模塊,用于找到在當(dāng)前掃描線之上的當(dāng)前頂點的最遠(yuǎn)左邊和最遠(yuǎn)右邊,其中該最遠(yuǎn)左邊的左方區(qū)域的計數(shù)為零,該最遠(yuǎn)左邊的右方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的左方區(qū)域的計數(shù)為非零整數(shù),該最遠(yuǎn)右邊的右方區(qū)域的計數(shù)為零; 第二生成子模塊,用于由穿過上一頂點的掃描線、當(dāng)前掃描線、所述最遠(yuǎn)邊獲取模塊獲取的最遠(yuǎn)左邊和最遠(yuǎn)右邊圍成一個區(qū)域,該上一頂點為經(jīng)排序的當(dāng)前頂點的上一頂點; 第二劃分子模塊,用于如果所述第二生成子模塊圍成的區(qū)域為四邊形,則以對角線將該四邊形劃分為兩個三角形。
全文摘要
本發(fā)明涉及計算機(jī)圖像處理領(lǐng)域,公開了一種計算機(jī)圖像處理中多邊形的三角化方法及其系統(tǒng)。本發(fā)明中,僅在與頂點連通的當(dāng)前掃描線之上的有效區(qū)域組建三角形,減少了不必要的三角形切分,三角形數(shù)目較少形狀較大,大大減少了計算量,后續(xù)在三角形基礎(chǔ)上的圖形處理效率較高,由頂點的下邊表的有序及頂點的有序保證了活動邊的有序,然后對交點排序,進(jìn)一步減少計算量。同時,使用奇偶填充規(guī)則和非零填充法則,對多邊形的頂點使用快速排序法,使得內(nèi)存數(shù)據(jù)在內(nèi)存中挪移最少,提高了圖形處理效率。
文檔編號G06T11/20GK103164864SQ201110415358
公開日2013年6月19日 申請日期2011年12月13日 優(yōu)先權(quán)日2011年12月13日
發(fā)明者張黎, 郭惠 申請人:上海炬力集成電路設(shè)計有限公司