999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于端點區域分布的圓形窗口線裁剪算法

2012-06-11 03:35:28任洪海
大連交通大學學報 2012年1期

任洪海

(大連交通大學 軟件學院,遼寧 大連 116052)

0 引言

圓形窗口線裁剪擁有很強的實用價值,人們一直努力尋求高效的裁剪算法[1-6].確定線段是否與圓形窗口相交是該類算法的關鍵.很多算法都引入窗口圓的外切正方形與內接正方形作為預處理操作.一般外切正方形指四邊分別平行于坐標軸且與圓相切的正方形;而內接正方形指四邊分別平行于坐標軸且包含在圓內部的最大正方形.這樣定義往往只能獨立確定一部分完全在外切正方形之外和完全在內接正方形之內的特殊線段,后續還需進一步判斷剩余的線段.多數算法為此都應用了較為煩瑣的輔助操作.例如,文獻[3]中的旋轉矢量法、文獻[4]中制備規范化交點表、文獻[5]需要進行多重編碼、文獻[6]中幾何變換和逆變換等都需要花費很大精力.本文通過巧妙地定義外切正方形與內接正方形使圓心為坐標原點的圓形窗口在四個象限的圓弧分別位于四個三角區域,將其定義為角區.由此,將裁剪窗口所在平面劃分為內接正方形之內、外切正方形之外和角區三部分.根據線段兩端點在不同區域的分布情況完成裁剪過程.在裁剪過程中很多較復雜的判斷都轉化為線段所在直線與角區外界的相交情況進行處理,通過簡單判別快速確定線段是否與圓形窗口相交,從而顯著提高裁剪效率.

1 理論基礎

不失一般性,假設裁剪算法中圓形窗口的圓心為坐標原點,半徑為r;被裁剪線段的兩個端點為 p1(x1,y1)和 p2(x2,y2).

定義1 本文中的“外切正方形”指四邊平行于坐標軸,且與圓相切的正方形.

點在外切正方形之內(或上)的判斷條件為:︱x︱≤r且 ︱y︱≤r;

點在外切正方形之外的判斷條件為:︱x︱ >r或 ︱y︱ > r.

定義2 本文中的“內接正方形”指順序連接外切正方形與圓的四個切點所形成的正方形.

點在內接正方形之內(或上)的判斷條件為:︱x︱ +︱y︱≤r;

點在內接正方形之外的判斷條件為:︱x︱ +︱y︱ > r.

定義3 在外切正方形之內(或上)且內接正方形之外的四個等腰直角三角形區域分別定義為角區,并根據所在象限區分為:第Ⅰ角區、第Ⅱ角區、第Ⅲ角區、第Ⅳ角區,如圖1.

定義4 每個角區的兩條直角邊稱為角區外界.角區外界根據各自所屬角區進行區分,四個角區所有的角區外界構成整個外切正方形.如果有直線相交于角區外界,可以根據交點坐標的符號確定是相交于相同角區外界還是相異角區外界.

圖1 線段裁剪部分示例圖

定義5 如果端點在某角區內,進一步判斷端點與圓形窗口的位置關系:如果端點在圓形窗口之內(或上),稱該點在內角區;如果端點在圓形窗口之外,稱該點在外角區.

定理1 如果一條直線相交于兩相異角區外界,則該直線一定與圓形窗口相交.

證明:不失一般性,假設直線相交于第一角區水平角區外界,設交點為I1(如圖1中線段a所在直線),過該點向圓形窗口作切線.其中一條是與外切正方形部分水平邊重合,而另一條切線一定與第一角區垂直外界相交,設交點為I2.如果過I1點的直線與圓外切正方形相交于兩相異角區外界,則該直線一定在兩切線之間,因而與圓形窗口相交.

由定理1可推導出以下結論:

結論1 如果線段兩端點分別在兩相異外角區,可得線段一定與圓形窗口相交(如圖1中線段b).

結論2 如果線段一端點在外角區,另一端點在外切正方形之外,且線段相交于端點所在角區的相異角區外界,可得線段一定與圓形窗口相交(如圖1中線段c).

結論3 如果線段兩端點都在外切正方形之外,且線段相交于兩相異角區外界,可得線段一定與圓形窗口相交(如圖1中線段a).

結論4 如果線段一端點在外角區,另一端點在外切正方形之外,線段相交于本角區外界但延長外角區內端點后延長線相交于相異角區外界,可得線段一定不與圓形窗口相交(如圖1中線段d).

結論5 如果線段兩端點分別在同一外角區內,并且線段所在直線相交于不同角區外界,可得該線段一定不與圓形窗口相交(如圖1中線段e).

結論1~3由定理1很容易推出,結論4與結論5證明過程為:兩種情況都是線段所在直線相交于不同角區外界,根據定理1,線段延長后的直線與圓形窗口相交,而線段兩端點都在兩交點的同側,因而該線段本身一定不與圓形窗口相交.

以上結論所涉及的線段可以歸納為線段所在直線相交于不同角區外界的各種情況.當線段所在直線與某角區兩角區外界相交時,可根據該角區外界上兩個交點坐標判斷線段所在直線是否與圓形窗口相交.下面以線段相交于第Ⅰ角區兩角區外界為例討論該線段與圓形窗口的位置關系.

對于任意相交于第Ⅰ角區外界的線段f,兩交點為I1(xT,r),I3(r,yR).可以取兩個交點任意一個,過該點作圓形窗口的切線.假設取I1,作圓形窗口的切線,與第Ⅰ角區垂直方向角區外界的交點設為I2(r,y'R)(如圖1),根據切線長定理有:

由于相交于第Ⅰ角區外界,將上面兩個公式整理可得:xT×y'R=r2-(xT+y'R)r,由此求出:

比較yR與y'R的大小可得線段f與圓形窗口的位置關系:

如果yR>y'R,可得線段f與圓形窗口相離;

如果yR=y'R,可得線段f與圓形窗口相切;

如果yR<y'R,可得線段f與圓形窗口相交;

對于相交其它兩角區外界的線段,同樣可進行類似推導,并得出相應結論,在此不再描述.

2 算法描述

根據被裁剪線段兩端點區域分布情況裁剪過程討論如下:

(一)如果線段兩端點都在內接正方形之內,可得線段完全在圓形窗口之內,保留該線段作為裁剪結果,如圖2中線段a.

圖2 線段裁剪部分示例圖

(二)如果線段一端點在內接正方形之內,而另一端點在外切正方形之外,可得線段與圓形窗口相交,求交點.內接正方形之內的端點到交點間線段為裁剪結果,如圖2中線段b.

(三)如果線段一端點在內接正方形之內,而另一端點在角區內,進一步判斷角區內的端點在內角區還是外角區.

(1)如果端點在內角區,可得線段完全在圓形窗口之內,保留該線段作為裁剪結果,如圖2中線段c.

(2)如果端點在外角區,可得線段與圓形窗口相交,求交點.內接正方形之內的端點到交點間線段為裁剪結果,如圖2中線段d.

(四)如果線段一端點在角區,而另一端點在切正方形之外,進一步判斷角區內的端點在內角區還是外角區.

(1)如果端點在內角區,可得線段與圓形窗口相交,求交點.角區內端點到交點間線段為裁剪結果,如圖2中線段e.

(2)如果端點在外角區,線段一定與某角區外界相交,判斷是否相交于內端點所在角區外界.

①如果線段相交于相異角區外界,根據結論2可得線段一定與圓形窗口相交,兩交點間線段為裁剪結果,如圖1中線段c.

②如果線段相交于本角區外界但延長線相交于其它角區外界,根據結論4可得線段一定不與圓形窗口相交,如圖1中線段d.

③如果線段所在直線相交于內端點所在角區外界,求線段所在直線與該角區兩角區外界的交點,設交點為I1、I2,判斷線段I1I2與圓形窗口的位置關系:

a.如果I1I2與圓形窗口相離,可得線段不與圓形窗口相交,無裁剪結果輸出,如圖2中線段f.

b.如果I1I2與圓形窗口相交或相切,判斷兩端點p1、p2與線段p1p2主射線的位置關系.

如果兩端點p1、p2分別在線段p1p2主射線的兩側,方法為:

如果min(y1/x1,y2/x2)< (x1-x2)/(y2-y1)<max(y1/x1,y2/x2),線段與圓形窗口有交點,交點間線段為裁剪結果,如圖2中線段g.

否則線段與圓形窗口無交點,無裁剪結果輸出,如圖2中線段h.

(五)如果線段兩端點都在角區,進一步判斷兩端點在內角區還是外角區.

(1)如果兩端點都在內角區,則線段完全在圓形窗口內,保留該線段作為裁剪結果,如圖2中線段 i.

(2)如果一個端點在內角區,另一個端點在外角區,則線段與圓形窗口有一交點,內角區內端點到交點間線段為裁剪結果,如圖2中線段j.

(3)如果兩個端點都在外角區,根據端點所在象限區分是否在相同外角區:

①如果兩端點分別在不同外角區,根據結論1可得線段與圓形窗口有兩個交點,交點間線段為裁剪結果,圖1中線段b.

②如果兩端點在同一外角區,測試線段所在直線與外切正方形的相交情況:

a.如果相交于不同角區外界,根據結論5可得線段不與圓形窗口相交,無裁剪結果輸出,如圖1中線段e.

b.如果相交于同一角區外界,設交點為I1、I2,判斷線段I1I2與圓形窗口的位置關系:

c.如果I1I2與圓形窗口相離,可得線段不與圓形窗口相交,無裁剪結果輸出,如圖2中線段k.

d.如果I1I2與圓形窗口相交或相切,判斷兩端點p1、p2與線段p1p2主射線的位置關系:

如果兩端點p1、p2分別在線段p1p2主射線的兩側,方法為:

如果min(y1/x1,y2/x2)< (x1-x2)/(y2-y1)<max(y1/x1,y2/x2),線段與圓形窗口有交點,交點間線段為裁剪結果,如圖2中線段l.

否則線段與圓形窗口無交點,無裁剪結果輸出,如圖2中,在線段h上取角區內一小線段.

(六)如果兩個端點都在外切正方形之外.進一步判斷線段與外切正方形的相交情況.

(1)如果線段不與外切正方形相交,可得線段一定不與圓形窗口相交,即無裁剪結果輸出,如圖2中線段m.

(2)如果線段與外切正方形相交于兩不同角區外界,可得線段一定與圓形窗口相交,兩交點間線段為裁剪結果,如圖1中線段a.

(3)如果線段與外切正方形相交于同一角區外界,設兩交點為I1、I2,判斷線段I1I2與圓形窗口的位置關系:

①如果I1I2與圓形窗口相離,可得線段不與圓形窗口相交,無裁剪結果輸出,如圖1中線段f.

②如果I1I2與圓形窗口相交或相切,可得線段與圓形窗口有交點,交點間線段為裁剪結果,如圖1中線段g.

3 結論

作為圓形窗口線裁剪算法,快速確定線段與圓形窗口的相交情況是提高效率的關鍵.本文提出的新算法在未增加其它復雜輔助操作前提下,通過判斷被裁剪線段兩端點相對于外切正方形與內接正方形所劃分的不同區域情況完成裁剪過程.在算法中通過角區及角區外界等概念的引入,首次提出根據被裁剪線段相交于外切正方形及內接正方形的情況直接確定是否與圓形窗口相交,避免大量不必要的求交運算及其它輔助操作.同時,新算法設計簡單,容易實現.應用C++編程實現文獻[4-6]及本文算法,附表列出四個裁剪算法對于不同半徑圓形窗口裁剪300萬條隨機線段所需的時間比較.

附表 種裁剪算法裁剪300萬條線段所需時間比較 s

由附表可以看出新算法的裁剪效率都高于現有的三個典型算法.

[1]姚涵珍,宋鵬,張國安.圓形窗口裁剪算法的研究與實踐[J].計算機輔助設計與圖形學學報,1992,4(3):14-20.

[2]劉勇奎.圓形及橢圓形裁剪窗口[J].計算機工程與設計,1994,15(4):33-37.

[3]沈慶云,周來水,周儒榮.一種圓形窗口裁剪的新方法[J].計算機輔助設計與圖形學學報,1997,9(6):538-542.

[4]蔡敏,袁春風,宋繼強,等.一種快速的圓形窗口裁剪算法[J].計算機輔助設計與圖形學學報,2001,13(12):1063-1067.

[5]陸國棟,邢軍偉,譚建榮.基于多重編碼技術的圓形窗口線裁剪算法[J].計算機輔助設計與圖形學學報,2002,14(12):1133-1137.

[6]唐棣,單會秋.一種基于坐標變換的圓形窗口線裁剪算法[J].計算機應用與軟件,2006,23(5):116-118.

主站蜘蛛池模板: 免费又黄又爽又猛大片午夜| 欧美成人免费一区在线播放| 国产欧美日韩综合在线第一| 国产95在线 | 欧美中文字幕无线码视频| 欧美一道本| 91精品视频播放| 日本一区中文字幕最新在线| 久操中文在线| 午夜色综合| 一级片一区| 亚洲 欧美 中文 AⅤ在线视频| 91偷拍一区| 天天躁日日躁狠狠躁中文字幕| 在线观看国产精品第一区免费| 久久精品女人天堂aaa| 波多野结衣中文字幕久久| 久久久久亚洲av成人网人人软件| 蝴蝶伊人久久中文娱乐网| 久久99久久无码毛片一区二区| 精品国产自在现线看久久| 91综合色区亚洲熟妇p| 手机永久AV在线播放| 91人妻日韩人妻无码专区精品| 国产欧美日韩视频怡春院| 91福利免费| 亚洲国产理论片在线播放| 国产美女精品在线| 婷婷激情亚洲| 日本免费精品| 免费观看国产小粉嫩喷水| 亚洲成a人片| 伊人网址在线| 欧美日韩v| 欧美无专区| 国产91精品调教在线播放| 久久久久无码精品| 色综合天天视频在线观看| 日本国产在线| 成人福利视频网| 一本一道波多野结衣av黑人在线| www.亚洲一区| 欧美精品三级在线| 爱爱影院18禁免费| 国产欧美日韩精品综合在线| 园内精品自拍视频在线播放| 欧美福利在线播放| 国产尤物视频网址导航| 思思99热精品在线| 狠狠色丁婷婷综合久久| aaa国产一级毛片| 久久久精品无码一二三区| 国产va免费精品观看| 久久久久亚洲精品成人网| 国产v欧美v日韩v综合精品| 国产嫖妓91东北老熟女久久一| 自偷自拍三级全三级视频| 免费A级毛片无码免费视频| 精品偷拍一区二区| 国产91蝌蚪窝| 久久精品66| a网站在线观看| 国产一区自拍视频| 日韩欧美国产三级| 亚洲天堂免费| 国产美女91视频| 日本不卡在线播放| 亚洲性日韩精品一区二区| 亚洲欧美国产高清va在线播放| 一级毛片基地| 色爽网免费视频| 国产丰满大乳无码免费播放| 99精品热视频这里只有精品7| 国产va免费精品| 亚洲一级毛片| 亚洲一级色| 欧美第一页在线| 777午夜精品电影免费看| 中文字幕佐山爱一区二区免费| 日韩午夜伦| 四虎影视8848永久精品| 黄色污网站在线观看|