專利名稱:用于對(duì)三角形進(jìn)行柵格化的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像圖形處理領(lǐng)域,更具體地涉及一種用于對(duì)三角形進(jìn)行柵格化的方
法和系統(tǒng)。
背景技術(shù):
柵格化是計(jì)算機(jī)圖形學(xué)中將圖元掃描變換成顯示像素的一種技術(shù),是將矢量圖形 格式表示的圖像變換成柵格圖像以用于顯示器或打印機(jī)等的輸出的過程。對(duì)圖元進(jìn)行柵格 化的過程主要包括兩個(gè)步驟首先,確定顯示平面上哪些像素是由圖元覆蓋的;其次,將圖 元的屬性(顏色、深度、以及紋理等)賦給每個(gè)像素。 三角形具有一些好的屬性,比如凸性質(zhì)、幾何變換之后保持在同一個(gè)平面中、容 易裁剪、容易轉(zhuǎn)換為二維圖像等,所以是三維圖形中的一種重要圖元。三角形柵格化方法是 圖元柵格化領(lǐng)域中比較重要的分支。傳統(tǒng)的三角形柵格化方法常常需要將三角形分割成上 下兩個(gè)部分,當(dāng)碰到裁剪時(shí)還需要將三角形分割成若干個(gè)子三角形。這些條件使得傳統(tǒng)的 柵格化架構(gòu)變得非常復(fù)雜,增加了實(shí)現(xiàn)難度,浪費(fèi)了軟件及硬件資源。
發(fā)明內(nèi)容
鑒于以上所述的問題,本發(fā)明提出了一種新穎的用于對(duì)三角形進(jìn)行柵格化的方法 和系統(tǒng),以通過簡(jiǎn)單的柵格化架構(gòu)來實(shí)現(xiàn)圖像的柵格化。 根據(jù)本發(fā)明實(shí)施的用于對(duì)三角形進(jìn)行柵格化的方法,包括以下步驟確定需要進(jìn)
行柵格化的三角形的最長(zhǎng)邊,并構(gòu)造該三角形的最長(zhǎng)邊的八方向鏈碼;沿特定方向、以特定
步長(zhǎng)移動(dòng)該三角形的最長(zhǎng)邊,確定移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)之
間的線段的起始端點(diǎn)和終止端點(diǎn),并利用起始端點(diǎn)和終止端點(diǎn)、以及該三角形的最長(zhǎng)邊的
八方向鏈碼獲取該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)之間的線段的八
方向鏈碼;以及根據(jù)該三角形的最長(zhǎng)邊的八方向鏈碼、和該移動(dòng)后三角形的最長(zhǎng)邊與該三
角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼,描畫該三角形的像素。 根據(jù)本發(fā)明實(shí)施例的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),包括鏈碼構(gòu)造單元,用于
確定需要進(jìn)行柵格化的三角形的最長(zhǎng)邊,并構(gòu)造該三角形的最長(zhǎng)邊的八方向鏈碼;鏈碼獲
取單元,用于沿特定方向、以特定步長(zhǎng)移動(dòng)該三角形的最長(zhǎng)邊,確定移動(dòng)后三角形的最長(zhǎng)邊
與該三角形的另外兩邊的交點(diǎn)之間的線段的起始端點(diǎn)和終止端點(diǎn),并利用起始端點(diǎn)和終止
端點(diǎn)、以及該三角形的最長(zhǎng)邊的八方向鏈碼獲取該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另
外兩邊的交點(diǎn)之間的線段的八方向鏈碼;以及像素描畫單元,用于根據(jù)該三角形的最長(zhǎng)邊
的八方向鏈碼、和/或該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)之間的線段
的八方向鏈碼,描畫該三角形的相應(yīng)像素。 在本發(fā)明中,掃描可以沿著三角形的最長(zhǎng)邊進(jìn)行,并且不需要進(jìn)行三角形分割,所 以對(duì)三角形進(jìn)行格柵化的效率很高。
圖1示出了八方向鏈碼的概念示意圖; 圖2示出了從起始端點(diǎn)(0, 1)到終止端點(diǎn)(10, 7)的三角形一條邊的鏈碼;
圖3示出了根據(jù)本發(fā)明實(shí)施例的主方向的概念示意圖; 圖4示出了根據(jù)本發(fā)明實(shí)施例的用于對(duì)三角形進(jìn)行柵格化的方法的概括流程 圖5示出了根據(jù)本發(fā)明實(shí)施例的用于對(duì)三角形進(jìn)行柵格化的方法的詳細(xì)流程 圖6示出了根據(jù)本發(fā)明實(shí)施例的最長(zhǎng)邊在主方向的三角形的示例;
圖7示出了根據(jù)本發(fā)明實(shí)施例的最長(zhǎng)邊不在主方向的三角形的示例;
圖8示出了根據(jù)本發(fā)明實(shí)施例的在Y軸的負(fù)方向移動(dòng)三角形的最長(zhǎng)邊的示例;
圖9示出了根據(jù)本發(fā)明實(shí)施例的在X軸的負(fù)方向移動(dòng)三角形的最長(zhǎng)邊的示例;
圖10示出了根據(jù)本發(fā)明實(shí)施例的裁剪出了具有七個(gè)頂點(diǎn)的七邊形的三角形的示例; 圖ll示出了根據(jù)本發(fā)明實(shí)施例的裁剪三角形得出具有五個(gè)頂點(diǎn)的五邊形的示例; 圖12示出了根據(jù)本發(fā)明實(shí)施例的移動(dòng)裁剪得出的五邊形的最長(zhǎng)邊的示例;
圖13示出了對(duì)從三角形裁剪得出的多邊形進(jìn)行柵格化的過程的詳細(xì)流程圖;以及 圖14示出了根據(jù)本發(fā)明實(shí)施例的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng)的框圖。
具體實(shí)施例方式
鏈碼是描述物體邊界的一個(gè)好工具。給定一個(gè)起始像素,鏈碼可以逐步找到物體邊界的下一個(gè)像素。八方向鏈碼有八個(gè)可能的方向,但是每一步只存在一個(gè)方向。如果掃描能沿著三角形的最長(zhǎng)邊進(jìn)行,并且不需要進(jìn)行三角形分割,那么三角形的柵格化效率將會(huì)很高。
在本發(fā)明的實(shí)施例中,使用如下的坐標(biāo)系統(tǒng)原點(diǎn)在左下方,X軸向右,Y軸向上。
圖1示出了八方向鏈碼的概念。如圖1所示,從起始像素102開始,存在八個(gè)可能的方向來
尋找物體邊界的終止像素104。這八個(gè)方向按逆時(shí)針方向從0到7進(jìn)行標(biāo)記。然而,如果以
從左往右或者從下往上的順序?qū)ふ医K止像素,則只有鏈碼元素7、0、1、2和3需要用到。圖2
示出了從起始端點(diǎn)(O,l)到終止端點(diǎn)(10,7)的三角形一條邊的鏈碼。在本發(fā)明的實(shí)施例
中,定義主方向?yàn)榕cX軸的交角的絕對(duì)值不大于45度的線所在的方向,如圖3所示。 圖4示出了根據(jù)本發(fā)明實(shí)施例的用于對(duì)三角形進(jìn)行柵格化的方法的概括流程圖。
如圖4所示,用于對(duì)三角形進(jìn)行柵格化的方法大體包括以下步驟S402,確定需要進(jìn)行柵格
化的三角形的最長(zhǎng)邊,并構(gòu)造該三角形的最長(zhǎng)邊的八方向鏈碼;S404,沿特定方向、以特定
步長(zhǎng)移動(dòng)該三角形的最長(zhǎng)邊,確定該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)
之間的線段的起始端點(diǎn)和終止端點(diǎn),并利用起始端點(diǎn)和終止端點(diǎn)、以及該三角形的最長(zhǎng)邊
的八方向鏈碼獲取該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)之間的線段的
八方向鏈碼;以及S406,根據(jù)該三角形的最長(zhǎng)邊的八方向鏈碼、和該移動(dòng)后三角形的最長(zhǎng)
邊與該三角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼,描畫該三角形的像素。 當(dāng)然,在構(gòu)造出三角形的最長(zhǎng)邊的八方向鏈碼之后,也可以先根據(jù)三角形的最長(zhǎng)CN 最長(zhǎng)邊與三角形的另外兩邊的交點(diǎn) 之間的線段的八方向鏈碼并描畫該線段,接著獲取進(jìn)一步移動(dòng)后的線段的八方向鏈碼并描 畫相應(yīng)線段,直到三角形的最長(zhǎng)邊移出該三角形為止。 圖5示出了根據(jù)本發(fā)明實(shí)施例的用于對(duì)三角形進(jìn)行柵格化的方法的詳細(xì)流程圖。 如圖5所示,用于對(duì)三角形進(jìn)行柵格化的方法具體包括以下步驟 S502,通過計(jì)算三角形的輸入頂點(diǎn)(xO, y0) 、 (xl, yl)和(x2, y2)之間的偽歐氏距 離,尋找三角形的最長(zhǎng)邊E。該過程可以通過以下程序段實(shí)現(xiàn) 101 = (xl-x0)2+(yl-y0)2, 102 = (x2-x0)2+(y2-y0)2, 112 = (x2-xl)2+(y2-y1)2. lmax = 101 ; if (102 > lmax) lmax = 102 ; if (103 > lmax) lmax = 103 ; S504,構(gòu)造三角形的最長(zhǎng)邊E(Vs, Ve)的鏈碼。其中,Vs(xs, ys)是三角形的最長(zhǎng)
邊的起始頂點(diǎn),Ve(xe,ye)是三角形的最長(zhǎng)邊的終止頂點(diǎn)。在三角形的最長(zhǎng)邊在主方向內(nèi)的 情況下(見圖6中的602),設(shè)xe大于xs;在三角形的最長(zhǎng)邊不在主方向內(nèi)的情況下,(見 圖7中的702),設(shè)ye大于ys。 為了在移動(dòng)三角形的最長(zhǎng)邊時(shí),三角形的最長(zhǎng)邊能夠覆蓋三角形內(nèi)所有的像素 (見圖6中的608,圖7中的708),需要對(duì)三角形的最長(zhǎng)邊的鏈碼進(jìn)行延長(zhǎng)(見圖6中的 604,圖7中的704)。當(dāng)三角形的最長(zhǎng)邊在主方向內(nèi)時(shí),其鏈碼在xmin到xmax(見圖6中的 606)之間構(gòu)造,否則其鏈碼在ymin到y(tǒng)max(見圖7中的706)之間構(gòu)造。xmin、xmax、ymin 和ymax的值可以通過在(xO, y0) 、 (xl, yl)以及(x2, y2)中尋找最大最小值獲得。
然后,可以通過以下方法獲得E的鏈碼如果三角形的最長(zhǎng)邊在主方向內(nèi),則首先 將xmin和xmax取整數(shù),使其位于像素的中心。然后根據(jù)(xs, ys)和(xe, ye)所確定的邊 的線性方程來確定取整后的xmin所對(duì)應(yīng)的Y值。從取整后的xmin開始,每次在X方向步 進(jìn)1個(gè)單位,直到取整后的xmax,依次計(jì)算Y方向的差值并取整,如果為0,鏈碼值為0,如 果為l,鏈碼值為1,如果為-l,鏈碼值為7。如果三角形的最長(zhǎng)邊不在主方向內(nèi),則首先將 ymin和ymax取整數(shù),使其位于像素的中心。然后根據(jù)(xs, ys)和(xe, ye)所確定的邊的 線性方程來確定取整后的ymin所對(duì)應(yīng)的X值。從取整后的ymin開始,每次在Y方向步進(jìn) 1個(gè)單位,直到取整后的ymax,依次計(jì)算X方向的差值并取整,如果為0,鏈碼值為2,如果為 l,鏈碼值為l,如果為-l,鏈碼值為3。該過程可以通過以下程序段實(shí)現(xiàn) if (abs(xe-xs) > = abs (ye-ys)) { k = (ye-ys) / (xe-xs); xss = (int) (xmin+O. 5); xee = (int) (xmax+O. 5); yss = (int) ((xss-xs)氺k+ys+0. 5); xii = xss ; yii = yss ; for(xi = xss+1 ;xi <= xee ;xi++)
yi = (int) ((xi_xs)氺k+ys+0. 5); ydeta = (int) (yi_yii+0. 5); if (ydeta = = 0) c [i] = 0 ; else if (ydeta == l)c[i] = 1 ; else if (ydeta == _1) c [i] = 7; yii = yi ; }
}else{ k = (xe-xs) / (ye-ys); yss = (int) (ymin+O. 5); yee = (int) (ymax+O. 5); xss = (int) ((yss-ys)氺k+xs+0. 5); yii = yss ; xii = xss ; for(yi = yss+1 ;yi <= yee ;yi++) {
xi = (int) ((yi-ys)氺k+xs+0. 5); xdeta = (int) ((xi_xii+0. 5); if (xdeta = = 0) c [i] = 2 ; else if (xdeta == l)c[i] = 1 ; else if (xdeta == _1) c [i] = 3; xii = xi ; }
} S506,尋找三角形的最長(zhǎng)邊(也稱為移動(dòng)邊)與三角形的另外兩條短邊的交點(diǎn)之
間的線段的起始點(diǎn)和終止點(diǎn)。 在構(gòu)造了三角形的最長(zhǎng)邊的鏈碼之后,首先需要從xs到xe,或者從ys到y(tǒng)e畫出 三角形的最長(zhǎng)邊的像素。然后,將三角形的最長(zhǎng)邊進(jìn)行移動(dòng),如果該三角形的最長(zhǎng)邊在主方 向內(nèi),則沿Y軸移動(dòng)(見圖6),否則沿X軸移動(dòng)(見圖7)。移動(dòng)的距離是I Ay| = l或者 AX| =1。移動(dòng)的方向(見圖8和圖9)使用三角形的最長(zhǎng)邊的邊方程來確定。其中,該 邊方程為e(x, y) = (ys-ye)*x+(xe-xs)*y+(xs*ye-xe*ys)。如果三角形的最長(zhǎng)邊在主方 向內(nèi),則計(jì)算e (xs, ys+1)和e (x2, y2),并根據(jù)e (xs, ys+1)和e (x2, y2)的乘積的正負(fù)來確 定是沿Y軸的正方向還是沿Y軸的負(fù)方向來移動(dòng)三角形的最長(zhǎng)邊(在這里,在乘積為負(fù)時(shí), 沿Y軸的負(fù)方向(見圖8中的802)移動(dòng),反之沿Y軸正方向移動(dòng)),其中,(x2,y2)表示出 了三角形的最長(zhǎng)邊的所在的兩個(gè)頂點(diǎn)之外的第三個(gè)頂點(diǎn)(見圖8中的810,圖9中的910)。 如果三角形的最長(zhǎng)邊不在主方向內(nèi),則計(jì)算e(xs+l, ys)和e(x2, y2),并根據(jù)e (xs+l, ys) 和e(x2, y2)的乘積的正負(fù)來確定是沿X軸的正方向還是沿X軸的負(fù)方向來移動(dòng)三角形的 最長(zhǎng)邊(在這里,在乘積為負(fù)時(shí),沿X軸的負(fù)方向(見圖9中的902)移動(dòng),反之沿X軸正方 向移動(dòng))。其中,該過程可以通過以下程序段實(shí)現(xiàn)
a = ys—ye ;b = X6_XS j
c = xs氺ye—xe氺ys ; e0 = a氺xs+b氺(ys+1)+c ; el = a氺x2+b氺y2+c ; mul = eO*el ;
if (abs(xe-xs) > = abs(ye-ys)) detay = (mul > 0)l:-l ;
}else {
detax = (mul > 0)l:-l ;
} 如果三角形的最長(zhǎng)邊沒有移出三角形,則該三角形的最長(zhǎng)邊將會(huì)和三角形的其他 兩條短邊相交。對(duì)于由頂點(diǎn)VO(xO,yO)、Vl(xl,yl)和V2(x2,y2)所構(gòu)成的三角形,假定邊 V0V1為最長(zhǎng)邊。邊V0V1、V0V2以及V1V2的線性方程分別為
(y-yO)/(yl-y0) = (x-xO) / (xl-xO),
(y-yO)/(y2-y0) = (x-xO)/(x2-x0),
(y-yl)/(y2-yl) = (x-xl) / (x2-xl), 如果VOVl沿著y軸移動(dòng)Ay(|Ay| =1),則其線性方程變?yōu)?y-(yO+Ay))/ (yl-yO) = (x-xO)/(xl-x0)。它與V0V2和V1V2相交,分別產(chǎn)生A (見圖8中的804,圖9中 的904)和B(見圖8中的806,圖9中的906)兩個(gè)相交點(diǎn)。由此,可以得到
xA = (xl-xO) (x2_xO)*invA* Ay+xO, (xl-xO) (y2-yO)*invA* Ay+yO, (x2—xl) (xO—xl)氺invB氺Ay+xl, (x2—xl) (yO—yl)氺invB氺Ay+yl,
(yl-y0)
yA = xB = yB =
射, invA invB 同樣, =(x-xA = yA = xB = yB =
=1/((x2-x0) (yl-y0)-(y2-y0) (xl-x0)), =1/((y0-yl) (x2-xl)-(y2-yl) (x0-x1)).
如果VOVl沿著x軸移動(dòng)Ax(l Ax| = l),則其線性方程將變成(y-y0)/ (xO+Ax))/(xl-x0)。因此,可以得到 (yl-y0) (x2_xO)*invA* Ax+xO, (yl-y0) (y2_yO)*invA* Ax+yO, (yO—yl) (x2—xl)氺invB氺Ax+xl, (yO—yl) (y2—yl)氺invB氺Ax+yl。 獲得相交點(diǎn)的坐標(biāo)之后,可以由此計(jì)算相交點(diǎn)(起始點(diǎn)和終止點(diǎn))所處鏈碼的位 置(見圖9和圖10)。實(shí)際計(jì)算的是鏈碼數(shù)組c[]的下標(biāo),如果最長(zhǎng)邊處于主方向內(nèi),計(jì)算 xA和xmin的差值并取整可以獲得鏈碼的起始位置,計(jì)算xB和xmin的差值并取整可以獲得 鏈碼的終止位置;如果最長(zhǎng)邊不處于主方向內(nèi),計(jì)算yA和ymin的差值并取整可以獲得鏈碼 的起始位置,計(jì)算yB和ymin的差值并取整可以獲得鏈碼的終止位置。該過程可以通過以 下程序段實(shí)現(xiàn) invA = 1/((x2—xs)承(ye—ys) — (y2—ys)承(xe—xs));:0100] :0101] :0102] :oio3] :oio4] :oio5] :oio6] :oio7] :oio8] :o簡(jiǎn)] :o"o]
invB = 1/((x2—xe)承(ys—ye) — (y2—ye)承(xs—xe));
if (abs (xe-xs) >= abs(ye-ys)) {
xA = (xe—xs)氺(x2—xs)氺invA氺detay+xs ; xB = (x2—xe)氺(xs—xe)氺invB氺detay+xe ; cstart = (int) (xA_xmin+0. 5); cend = (int) (xB_xmin+0. 5);
}else {
yA = (ye—ys)氺(y2—ys)氺invA氺detax+ys ; yB = (y2—ye)氺(ys—ye)氺invB氺detax+ye ; cstart = (int)(yA_ymin+0. 5); cend = (int) (yB_ymin+0. 5); } 其中,可以通過以下方法來判斷三角形的最長(zhǎng)邊是否移出了三角形 在沿Y軸的正方向移動(dòng)三角形的最長(zhǎng)邊的情況下,通過將三角形移動(dòng)后的最長(zhǎng)邊
與三角形的最長(zhǎng)邊的起始頂點(diǎn)和三角形的另外兩條短邊的交點(diǎn)所在頂點(diǎn)之間的一邊的交
點(diǎn)的Y軸坐標(biāo)值與三角形的另外兩條短邊的交點(diǎn)所在頂點(diǎn)的Y軸坐標(biāo)值進(jìn)行比較來判斷三
角形的最長(zhǎng)邊是否移出了三角形,在沿Y軸的負(fù)方向移動(dòng)三角形的最長(zhǎng)邊的情況下,通過
將三角形移動(dòng)后的最長(zhǎng)邊與三角形的最長(zhǎng)邊的終止頂點(diǎn)和三角形的另外兩條短邊的交點(diǎn)
所在頂點(diǎn)之間的一邊的交點(diǎn)的Y軸坐標(biāo)值與三角形的另外兩條短邊的交點(diǎn)所在頂點(diǎn)的Y軸
坐標(biāo)值進(jìn)行比較來判斷三角形的最長(zhǎng)邊是否移出了三角形。 在沿X軸的正方向移動(dòng)三角形的最長(zhǎng)邊的情況下,通過將三角形移動(dòng)后的最長(zhǎng)邊
與三角形的最長(zhǎng)邊的起始頂點(diǎn)和三角形的另外兩條短邊的交點(diǎn)所在頂點(diǎn)之間的一邊的交
點(diǎn)的X軸坐標(biāo)值與三角形的另外兩條短邊的交點(diǎn)所在頂點(diǎn)的X軸坐標(biāo)值進(jìn)行比較來判斷三
角形的最長(zhǎng)邊是否移出了三角形,在沿X軸的負(fù)方向移動(dòng)三角形的最長(zhǎng)邊的情況下,通過
將三角形移動(dòng)后的最長(zhǎng)邊與三角形的最長(zhǎng)邊的終止頂點(diǎn)和三角形的另外兩條短邊的交點(diǎn)
所在頂點(diǎn)之間的一邊的交點(diǎn)的X軸坐標(biāo)值與三角形的另外兩條短邊的交點(diǎn)所在頂點(diǎn)的X軸
坐標(biāo)值進(jìn)行比較來判斷三角形的最長(zhǎng)邊是否移出了三角形。 以上判斷過程可以通過以下程序段實(shí)現(xiàn)(使用out flag來標(biāo)記)
yA = (xe—xs)氺(y2—ys)氺invA氺detay+ys ;
yB = (x2—xe)氺(ys—ye)氺invB氺detay+ye ; if (detay = = 1) out—flag = (yA < = y2) 0:1; if(detay ==-1)out—flag = (yB>=y2) 0:1;
xA = (ye—ys)氺(x2—xs)氺invA氺detax+xs ;
xB = (ys—ye)氺(x2—xe)氺invB氺detax+xe ;
if (detax = = 1) out—flag = (xA < = x2) 0:1;
if(detax ==-1)out—flag = (xB>=x2) 0:1;xii = floor(xA+0. 5) yii = floor(yA+0. 5) for(i = cstart ;i <: switch (c[i]) { S508,根據(jù)三角形的最長(zhǎng)邊與三角形的另外兩條短邊的交點(diǎn)之間的線段的八方向 鏈碼畫出相應(yīng)像素。因?yàn)樵摼€段的八方向鏈碼的起始碼和終止碼都已知,所以可以知道從 哪里開始,到哪里結(jié)束。其中,該過程可以通過以下程序段實(shí)現(xiàn)
for(i = cstart ;i <= cend ;i++)
case 0: {dx = 1 ;dy = 0 ;break case 1: {dx = 1 ;dy = 1 ;break case 2: {dx = 0 ;dy = 1 ;break case 3: {dx = _1 ;dy = 1 ;break ;} case 4: {dx = _1 ;dy = 0 ;break ;} case 5: {dx = _1 ;dy = _1 ;break ;) case 6: {dx = 0 ;dy = _1 ;break ;} case 7: {dx = 1 ;dy = _1 ;break ;} } xi = xii+dx ; yi = yii+dy ; Draw(xi, yi); }
當(dāng)部分三角形在顯示窗口 (見圖10中的1002)之外時(shí),三角形需要裁剪。 一個(gè)三 角形裁剪為一個(gè)多邊形,此多邊形最多具有7個(gè)頂點(diǎn)(見圖10中的1004)。因此,裁剪得出 的多邊形的輸入頂點(diǎn)數(shù)目在3到7之間。 在輸入之前,裁剪得出的多邊形的頂點(diǎn)需要沿著該多邊形的邊界按順時(shí)針或者逆 時(shí)針方向進(jìn)行排序。首先創(chuàng)建一個(gè)包含整個(gè)裁剪得出的多邊形的邊界框(見圖11中的 1102), (xrmin, yrmin)和(xrmax, yrmax)分別是邊界框的最小和最大坐標(biāo)頂點(diǎn),可以通過 裁剪得出的多邊形獲得。這樣,裁剪得出的多邊形的所有頂點(diǎn)都在邊界框的邊緣上。我們 依次按xrmin、 yrmax、 xrmax和yrmin的順序沿著這個(gè)邊界框的邊緣對(duì)這些頂點(diǎn)進(jìn)行排序。
裁剪得出的多邊形的邊長(zhǎng)按照三角形的方法進(jìn)行計(jì)算,并找到最長(zhǎng)邊(見圖12中 的1202)。 判斷移動(dòng)邊是否移出未裁剪三角形的方法在裁剪三角形的情況下應(yīng)改為判斷移
動(dòng)邊是否移出當(dāng)前的相交邊(見圖12中的1204、 1206)。此方法與未裁剪三角形類似,但是
頂點(diǎn)需要按順序處理。定義(xu,yu)為上頂點(diǎn),它們向上標(biāo)號(hào),定義(xl,yl)為下頂點(diǎn),它
們向下標(biāo)號(hào)(見圖12)。例如,如果有7個(gè)頂點(diǎn),則起始頂點(diǎn)和終止頂點(diǎn)分別標(biāo)記為0禾口 1,
那么第一個(gè)(xu,yu)標(biāo)記為2,第一個(gè)(xl,yl)標(biāo)記為6,第二個(gè)(xu,yu)標(biāo)記為3,第二個(gè)
(xl,yl)標(biāo)記為5,其余依次類推。當(dāng)(xu,yu)和(xl, yl)相同時(shí),此過程停止。 圖13示出了沿著最長(zhǎng)邊對(duì)裁剪得出的多邊形進(jìn)行柵格化的流程圖,它和未裁剪
三角形的類似(見圖5),除了裁剪、對(duì)裁剪頂點(diǎn)排序、以及判斷移出等步驟之外。 圖14示出了實(shí)現(xiàn)上述方法的系統(tǒng)的示意性框圖。如圖14所示,該系統(tǒng)包括設(shè)置模塊(即鏈碼構(gòu)造單元)、內(nèi)存、掃描模塊(即鏈碼獲取單元)、掃描設(shè)備(即像素描畫單元)。 具體地,該系統(tǒng)根據(jù)三角形頂點(diǎn)的坐標(biāo)尋找三角形的最長(zhǎng)邊。根據(jù)這條最長(zhǎng)邊,構(gòu)造此邊的 鏈碼。然后,描畫出此邊上的像素。在將最長(zhǎng)邊進(jìn)行偏移之后,系統(tǒng)計(jì)算相交點(diǎn),并且由此 找到交點(diǎn)之間的線段鏈碼的起始和終止碼。使用起始碼和終止碼之間的八方向鏈碼,可以 畫出偏移邊上的像素。當(dāng)然,該系統(tǒng)也可以實(shí)現(xiàn)三角形需要裁剪的情況下的掃描。
綜上所述,在本發(fā)明中,首先構(gòu)造三角形最長(zhǎng)邊的鏈碼,然后每次最長(zhǎng)邊移動(dòng)時(shí), 將會(huì)與其他兩條短邊相交。相交點(diǎn)可以確定相交點(diǎn)間的線段的鏈碼的起始碼和終止碼,用 來進(jìn)行柵格化操作。本發(fā)明不需要將三角形分割成多個(gè)子三角形,所以柵格化效率大大提 高。 在將三角形裁剪為多邊形(裁剪三角形)的情況下,我們也不需要將裁剪三角形 分割為多個(gè)子三角形。對(duì)此多邊形進(jìn)行柵格化的順序與三角形類似。 本領(lǐng)域技術(shù)人員將理解,還存在可用于實(shí)現(xiàn)本發(fā)明實(shí)施例的更多可選實(shí)施方式和 改進(jìn)方式,并且上述實(shí)施方式和示例僅是一個(gè)或多個(gè)實(shí)施例的說明。因此,本發(fā)明的范圍僅 由所附權(quán)利要求書限制。
權(quán)利要求
一種用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,包括以下步驟確定需要進(jìn)行柵格化的三角形的最長(zhǎng)邊,并構(gòu)造所述三角形的最長(zhǎng)邊的八方向鏈碼;沿特定方向、以特定步長(zhǎng)移動(dòng)所述三角形的最長(zhǎng)邊,確定移動(dòng)后三角形的最長(zhǎng)邊與所述三角形的另外兩邊的交點(diǎn)之間的線段的起始端點(diǎn)和終止端點(diǎn),并利用所述起始端點(diǎn)和所述終止端點(diǎn)、以及所述三角形的最長(zhǎng)邊的八方向鏈碼獲取所述移動(dòng)后三角形的最長(zhǎng)邊與所述三角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼;以及根據(jù)所述三角形的最長(zhǎng)邊的八方向鏈碼、和所述移動(dòng)后三角形的最長(zhǎng)邊與所述三角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼,描畫所述三角形的像素。
2. 根據(jù)權(quán)利要求l的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,當(dāng)所述三角形的 最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值不大于45。時(shí),沿Y軸移動(dòng)所述三角形的最長(zhǎng)邊。
3. 根據(jù)權(quán)利要求l的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,當(dāng)所述三角形的 最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值大于45°時(shí),沿X軸移動(dòng)所述三角形的最長(zhǎng)邊。
4. 根據(jù)權(quán)利要求2或3的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,利用所述三 角形的最長(zhǎng)邊的邊方程e(x, y) = (ys-ye)*x+(xe-xs)*y+(xs*ye-xe*ys)來確定沿Y軸或 X軸移動(dòng)所述三角形的最長(zhǎng)邊的方向,其中,xs和ys是所述三角形的最長(zhǎng)邊的起始頂點(diǎn)的 X軸和Y軸坐標(biāo)值,xe和ye是所述三角形的最長(zhǎng)邊的終止頂點(diǎn)的X軸和Y軸坐標(biāo)值。
5. 根據(jù)權(quán)利要求4的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,當(dāng)所述三角形的 最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值不大于45°時(shí),確定沿Y軸移動(dòng)所述三角形的最長(zhǎng)邊的 方向的過程包括分別將由所述三角形的最長(zhǎng)邊的起始頂點(diǎn)的X軸和Y軸坐標(biāo)值得出的X軸和Y軸坐標(biāo) 值(xs, ys+l)、以及所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸和Y軸坐標(biāo)值(x2, y2) 代入所述三角形的最長(zhǎng)邊的邊方程,得出第一代入結(jié)果和第二代入結(jié)果;將所述第一代入結(jié)果和所述第二代入結(jié)果相乘得出第一相乘結(jié)果,并在所述第一相乘 結(jié)果大于0的情況下,沿Y軸的正方向移動(dòng)所述三角形的最長(zhǎng)邊,在所述第一相乘結(jié)果不大 于O的情況下,沿Y軸的負(fù)方向移動(dòng)所述三角形的最長(zhǎng)邊。
6. 根據(jù)權(quán)利要求4的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,當(dāng)所述三角形的 最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值大于45。時(shí),確定沿X軸移動(dòng)所述三角形的最長(zhǎng)邊的方 向的過程包括分別將由所述三角形的最長(zhǎng)邊的起始頂點(diǎn)的X軸和Y軸坐標(biāo)值得出的X軸和Y軸坐標(biāo) 值(xs+l, ys)、以及所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸和Y軸坐標(biāo)值(x2, y2) 代入所述三角形的最長(zhǎng)邊的邊方程,得出第三代入結(jié)果和第四代入結(jié)果;將所述第三代入結(jié)果和所述第四代入結(jié)果相乘得出第二相乘結(jié)果,并在所述第二相乘 結(jié)果大于0的情況下,沿X軸的正方向移動(dòng)所述三角形的最長(zhǎng)邊,在所述第二相乘結(jié)果不大 于0的情況下,沿X軸的負(fù)方向移動(dòng)所述三角形的最長(zhǎng)邊。
7. 根據(jù)權(quán)利要求5的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,在所述三角形的 三個(gè)頂點(diǎn)的三個(gè)X軸坐標(biāo)值中的最大值和最小值之間構(gòu)造所述三角形的最長(zhǎng)邊的八方向 鏈碼。
8. 根據(jù)權(quán)利要求6的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,在所述三角形的 三個(gè)頂點(diǎn)的三個(gè)Y軸坐標(biāo)值中的最大值和最小值之間構(gòu)造所述三角形的最長(zhǎng)邊的八方向鏈碼。
9. 根據(jù)權(quán)利要求7的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,在沿Y軸的正方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的起始頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的Y軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的Y軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形,在沿Y軸的負(fù)方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的終止頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的Y軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的Y軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形。
10. 根據(jù)權(quán)利要求8的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,在沿X軸的正方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的起始頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的X軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形,在沿X軸的負(fù)方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的終止頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的X軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形。
11. 根據(jù)權(quán)利要求9的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,通過計(jì)算所述三 角形的三個(gè)頂點(diǎn)之間的偽歐氏距離來確定所述三角形的最長(zhǎng)邊。
12. 根據(jù)權(quán)利要求10的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,通過計(jì)算所述 三角形的三個(gè)頂點(diǎn)之間的偽歐氏距離來確定所述三角形的最長(zhǎng)邊。
13. 根據(jù)權(quán)利要求ll的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,在所述三角形 需要裁剪的情況下,使用用于對(duì)所述三角形進(jìn)行裁剪的邊界框來對(duì)裁剪得到的多邊形的多個(gè)頂點(diǎn)按照順 時(shí)針或逆時(shí)針的順序進(jìn)行排序和編號(hào),并且利用所述多邊形的上頂點(diǎn)和下頂點(diǎn)來判斷所述多邊形的最長(zhǎng)邊是否移出了當(dāng)前的相 交邊。
14. 根據(jù)權(quán)利要求12的用于對(duì)三角形進(jìn)行柵格化的方法,其特征在于,在所述三角形 需要裁剪的情況下,使用用于對(duì)所述三角形進(jìn)行裁剪的邊界框來對(duì)裁剪得到的多邊形的多個(gè)頂點(diǎn)按照順 時(shí)針或逆時(shí)針的順序進(jìn)行排序和編號(hào),并且利用所述多邊形的上頂點(diǎn)和下頂點(diǎn)來判斷所述 多邊形的最長(zhǎng)邊是否移出了當(dāng)前的相交邊。
15. —種用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于,包括鏈碼構(gòu)造單元,用于確定需要進(jìn)行柵格化的三角形的最長(zhǎng)邊,并構(gòu)造所述三角形的最 長(zhǎng)邊的八方向鏈碼;鏈碼獲取單元,用于沿特定方向、以特定步長(zhǎng)移動(dòng)所述三角形的最長(zhǎng)邊,確定移動(dòng)后三 角形的最長(zhǎng)邊與所述三角形的另外兩邊的交點(diǎn)之間的線段的起始端點(diǎn)和終止端點(diǎn),并利用所述起始端點(diǎn)和所述終止端點(diǎn)、以及所述三角形的最長(zhǎng)邊的八方向鏈碼獲取所述移動(dòng)后三 角形的最長(zhǎng)邊與所述三角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼;以及像素描畫單元,用于根據(jù)所述三角形的最長(zhǎng)邊的八方向鏈碼、和/或所述移動(dòng)后三角 形的最長(zhǎng)邊與所述三角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼,描畫所述三角形的 相應(yīng)像素。
16. 根據(jù)權(quán)利要求15的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于,所述鏈碼獲取單元在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值不大于45°的情況下,沿Y軸移動(dòng) 所述三角形的最長(zhǎng)邊,在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值大于45°的情況下,沿X軸移動(dòng)所 述三角形的最長(zhǎng)邊。
17. 根據(jù)權(quán)利要求16的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于,所述鏈碼獲取 單元利用所述三角形的最長(zhǎng)邊的邊方程e(x, y) = (ys-ye)*x+(xe-xs)*y+(xs*ye-xe*ys) 來確定沿Y軸或X軸移動(dòng)所述三角形的最長(zhǎng)邊的方向,其中,xs和ys是所述三角形的最長(zhǎng) 邊的起始頂點(diǎn)的X軸和Y軸坐標(biāo)值,xe和ye是所述三角形的最長(zhǎng)邊的終止頂點(diǎn)的X軸和Y 軸坐標(biāo)值。
18. 根據(jù)權(quán)利要求17的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于,所述鏈碼獲取單元在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值不大于45°的情況下,分別將由所 述三角形的最長(zhǎng)邊的起始頂點(diǎn)的X軸和Y軸坐標(biāo)值得出的X軸和Y軸坐標(biāo)值(xs, ys+l)、 以及所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸和Y軸坐標(biāo)值(x2,y2)代入所述三角形 的最長(zhǎng)邊的邊方程,得出第一代入結(jié)果和第二代入結(jié)果,將所述第一代入結(jié)果和所述第二 代入結(jié)果相乘得出第一相乘結(jié)果,并在所述第一相乘結(jié)果大于0的情況下,沿Y軸的正方向 移動(dòng)所述三角形的最長(zhǎng)邊,在所述第一相乘結(jié)果不大于0的情況下,沿Y軸的負(fù)方向移動(dòng)所 述三角形的最長(zhǎng)邊;在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值大于45°的情況下,分別將由所述 三角形的最長(zhǎng)邊的起始頂點(diǎn)的X軸和Y軸坐標(biāo)值得出的X軸和Y軸坐標(biāo)值(xs+l, ys)、以 及所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸和Y軸坐標(biāo)值(x2,y2)代入所述三角形的 最長(zhǎng)邊的邊方程,得出第三代入結(jié)果和第四代入結(jié)果,將所述第三代入結(jié)果和所述第四代 入結(jié)果相乘得出第二相乘結(jié)果,并在所述第二相乘結(jié)果大于0的情況下,沿X軸的正方向移 動(dòng)所述三角形的最長(zhǎng)邊,在所述第二相乘結(jié)果不大于0的情況下,沿X軸的負(fù)方向移動(dòng)所述 三角形的最長(zhǎng)邊。
19. 根據(jù)權(quán)利要求18的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于,所述鏈碼構(gòu)造單元在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值不大于45。的情況下,在所述三角 形的三個(gè)頂點(diǎn)的三個(gè)X軸坐標(biāo)值中的最大值和最小值之間構(gòu)造所述三角形的最長(zhǎng)邊的八 方向鏈碼;在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值大于45。的情況下,在所述三角形 的三個(gè)頂點(diǎn)的三個(gè)Y軸坐標(biāo)值中的最大值和最小值之間構(gòu)造所述三角形的最長(zhǎng)邊的八方向鏈碼。
20. 根據(jù)權(quán)利要求19的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于,所述鏈碼獲取單元在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值不大于45°的情況下, 在沿Y軸的正方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的起始頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的Y軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的Y軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形,在沿Y軸的負(fù)方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的終止頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的Y軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的Y軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形;在所述三角形的最長(zhǎng)邊與X軸之間的夾角的絕對(duì)值大于45°的情況下, 在沿X軸的正方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的起始頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的X軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形,在沿X軸的負(fù)方向移動(dòng)所述三角形的最長(zhǎng)邊的情況下,通過將所述移動(dòng)后三角形的最 長(zhǎng)邊與所述三角形的最長(zhǎng)邊的終止頂點(diǎn)和所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)之間的 一邊的交點(diǎn)的X軸坐標(biāo)值與所述三角形的另外兩邊的交點(diǎn)所在頂點(diǎn)的X軸坐標(biāo)值進(jìn)行比較 來判斷所述三角形的最長(zhǎng)邊是否移出了所述三角形。
21. 根據(jù)權(quán)利要求15至20中任一項(xiàng)的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于, 所述鏈碼構(gòu)造單元通過計(jì)算所述三角形的三個(gè)頂點(diǎn)之間的偽歐氏距離來確定所述三角形 的最長(zhǎng)邊。
22. 根據(jù)權(quán)利要求21的用于對(duì)三角形進(jìn)行柵格化的系統(tǒng),其特征在于,還包括頂點(diǎn)編 號(hào)單元,用于在所述三角形需要裁剪的情況下,使用用于對(duì)所述三角形進(jìn)行裁剪的邊界框 來對(duì)裁剪得到的多邊形的多個(gè)頂點(diǎn)按照順時(shí)針或逆時(shí)針的順序進(jìn)行排序和編號(hào);所述鏈碼構(gòu)造單元還用于通過計(jì)算所述多邊形的多個(gè)相鄰頂點(diǎn)之間的偽歐氏距離來 確定所述多邊形的最長(zhǎng)邊,并在所述多邊形的多個(gè)頂點(diǎn)的多個(gè)Y或X軸坐標(biāo)值中的最大值 和最小值之間構(gòu)造所述多邊形的最長(zhǎng)邊的八方向鏈碼;所述鏈碼獲取單元還用于移動(dòng)所述多邊形的最長(zhǎng)邊,并利用所述移動(dòng)后多邊形的最 長(zhǎng)邊與其他邊的交點(diǎn)之間的線段的起始端點(diǎn)和終止端點(diǎn)、以及所述多邊形的最長(zhǎng)邊的八方 向鏈碼獲取所述移動(dòng)后多邊形的最長(zhǎng)邊與其他邊的交點(diǎn)之間的線段的八方向鏈碼,其中所述鏈碼獲取單元利用所述多邊形的上頂點(diǎn)和下頂點(diǎn)來判斷所述多邊形的最長(zhǎng)邊是 否移出了當(dāng)前的相交邊。
全文摘要
本發(fā)明公開了一種用于對(duì)三角形進(jìn)行柵格化的方法及系統(tǒng)。其中,該方法包括確定需要進(jìn)行柵格化的三角形的最長(zhǎng)邊,并構(gòu)造該三角形的最長(zhǎng)邊的八方向鏈碼;沿特定方向、以特定步長(zhǎng)移動(dòng)該三角形的最長(zhǎng)邊,確定該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)之間的線段的起始端點(diǎn)和終止端點(diǎn),并利用起始端點(diǎn)和終止端點(diǎn)、以及該三角形的最長(zhǎng)邊的八方向鏈碼獲取該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼;以及根據(jù)該三角形的最長(zhǎng)邊的八方向鏈碼、和該移動(dòng)后三角形的最長(zhǎng)邊與該三角形的另外兩邊的交點(diǎn)之間的線段的八方向鏈碼,描畫該三角形的像素。通過本發(fā)明,可以提高對(duì)三角形進(jìn)行柵格化的效率。
文檔編號(hào)G06T11/40GK101739703SQ200810175480
公開日2010年6月16日 申請(qǐng)日期2008年11月10日 優(yōu)先權(quán)日2008年11月10日
發(fā)明者洲鐮康, 白向暉, 譚志明 申請(qǐng)人:富士通株式會(huì)社