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