本發(fā)明涉及計算機(jī)圖形學(xué)以及地理信息系統(tǒng)(gis)技術(shù),特別是涉及一種解決交點(diǎn)退化問題的復(fù)雜多邊形裁剪方法。
背景技術(shù):
多邊形裁剪算法被廣泛應(yīng)用于地理信息系統(tǒng)(gis)、計算機(jī)圖形學(xué)、機(jī)器人運(yùn)動學(xué)等領(lǐng)域,是計算機(jī)圖形學(xué)許多重要問題的基礎(chǔ),其主要目的是裁剪掉被裁減多邊形(又稱實(shí)體多邊形)位于裁剪多邊形之外的部分。
目前,對于多邊形裁剪國外已有很多經(jīng)典算法,例如sutherland-hodgeman算法、liang-barsky算法、maillot算法等算法,可是以上算法要求裁剪多邊形是矩形,被裁剪多邊形(也稱實(shí)體多邊形)是凸多邊形。而在實(shí)際應(yīng)用中,實(shí)體多邊形為一般多邊形時裁剪算法才具有普遍意義和實(shí)際應(yīng)用價值。在這類算法中weiler-atherton算法(簡稱w-a算法)和greiner-hormann算法(簡稱g-h算法)是公認(rèn)的比較具有代表性、成熟的任意多邊形裁剪算法。其中,w-a算法使用的是樹形結(jié)構(gòu),而g-h算法使用的是雙向線性鏈表結(jié)構(gòu),所以后者在復(fù)雜性和運(yùn)行速度方面都優(yōu)于前者。國內(nèi)學(xué)者大多數(shù)從優(yōu)化數(shù)據(jù)結(jié)構(gòu)、減少交點(diǎn)判斷和交點(diǎn)求取的計算量等方面展開研究,進(jìn)一步提高了裁剪算法效率。但是上述算法都沒有具體描述在重合邊和兩多邊形在頂點(diǎn)處相切(又稱交點(diǎn)退化)這兩種特殊情況下多邊形裁剪的解決方案。王慧青等采用交點(diǎn)關(guān)聯(lián)線段間的交點(diǎn)進(jìn)出性判別方法,用于處理重點(diǎn)和重邊問題,但是該算法將交點(diǎn)插入到實(shí)體多邊形和裁剪多邊形的頂點(diǎn)鏈表,在生成裁剪結(jié)果多邊形時,需要在實(shí)體多邊形和裁剪多邊形的兩個頂點(diǎn)鏈表之間來回切換遍歷,其工作量很大。因此,需要研究一種新的解決交點(diǎn)退化問題的復(fù)雜多邊形裁剪方法。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述存在的問題,本發(fā)明提供一種解決交點(diǎn)退化問題的復(fù)雜多邊形裁剪方法,在頂點(diǎn)處相切這兩種交點(diǎn)退化情況下也能夠得到正確裁剪結(jié)果的復(fù)雜多邊形裁剪方法,為達(dá)此目的,本發(fā)明提供一種解決交點(diǎn)退化問題的復(fù)雜多邊形裁剪方法,所述步驟包括:
(1)假設(shè)被裁剪多邊形即實(shí)體多邊形為s,裁剪多邊形為c,將含孔洞的復(fù)雜實(shí)體多邊形分解成多個由外環(huán)和n個內(nèi)環(huán)構(gòu)成的不含孔洞的簡單多邊形,其中n≧0;
(2)對實(shí)體多邊形的外環(huán)邊界構(gòu)成的多邊形與裁剪多邊形進(jìn)行求交即s∩c操作,得到裁剪結(jié)果;
(3)若s不含孔洞,則直接輸出這個裁剪結(jié)果;否則,繼續(xù)步驟4;
(4)將結(jié)果多邊形視為裁剪多邊形,某一孔洞構(gòu)成的多邊形視為實(shí)體多邊形,對結(jié)果多邊形與孔洞構(gòu)成的多邊形進(jìn)行求差即c-s操作,得到裁剪結(jié)果;
(5)取下一個孔洞構(gòu)成的多邊形,繼續(xù)步驟4,直至所有孔洞構(gòu)成的多邊形處理完畢,輸出最終的裁剪結(jié)果。
進(jìn)一步的,所述步驟(2)中對實(shí)體多邊形的外環(huán)邊界構(gòu)成的多邊形與裁剪多邊形進(jìn)行求交操作步驟為:
(21)設(shè)計了一個合理的數(shù)據(jù)結(jié)構(gòu),用于存儲入點(diǎn)、出點(diǎn)以及裁剪多邊形頂點(diǎn);
(22)將實(shí)體多邊形s和裁剪多邊形c的頂點(diǎn)按順時針方向分別以單向線性鏈表形式存儲;
(23)判斷實(shí)體多邊形和裁剪多邊形的最小外包矩形框mbr是否相交:若不相交,則輸出裁剪結(jié)果多邊形為空;若相交,繼續(xù)步驟(24);
(24)從實(shí)體多邊形邊界上的首頂點(diǎn)開始,尋找實(shí)體多邊形邊界上位于裁剪多邊形外的第一個點(diǎn),記為pk點(diǎn),該點(diǎn)在實(shí)體多邊形邊界上的坐標(biāo)點(diǎn)號記為k;
(25)從pk點(diǎn)開始,求取實(shí)體多邊形與裁剪多邊形的交點(diǎn)及可見折線段;基于制定的交點(diǎn)出入特性判定規(guī)則判斷交點(diǎn)是否有效;若該點(diǎn)為有效的交點(diǎn),即為入點(diǎn)或出點(diǎn),則計算交點(diǎn)到裁剪多邊形的首頂點(diǎn)的距離dfdis值,以及記錄交點(diǎn)的nid值;
(26)若存在交點(diǎn),則繼續(xù)步驟(27);若實(shí)體多邊形和裁剪多邊形之間沒有交點(diǎn),存在以下三種情形:
①實(shí)體多邊形邊界上只要有頂點(diǎn)落在裁剪多邊形的內(nèi)部,則表示裁剪多邊形包含實(shí)體多邊形,此時輸出裁剪結(jié)果為實(shí)體多邊形;
②裁剪多邊形邊界上只要有頂點(diǎn)落在實(shí)體多邊形的內(nèi)部,則表示實(shí)體多邊形包含裁剪多邊形,此時輸出裁剪結(jié)果為裁剪多邊形;
③否則表示裁剪多邊形與實(shí)體多邊形相離,此時輸出裁剪結(jié)果為空;
(27)計算裁剪多邊形每個頂點(diǎn)的dfdis值,并將tag值設(shè)為0;
(28)將步驟(25)中計算得到的入點(diǎn)、出點(diǎn)以及步驟(27)中的裁剪多邊形頂點(diǎn)按dfdis值采用快速排序算法進(jìn)行升序排序,若某交點(diǎn)和裁剪多邊形的某頂點(diǎn)的dfdis值相同,則排序時按照“入點(diǎn)、頂點(diǎn)”或“頂點(diǎn)、出點(diǎn)”的順序排列;
(29)基于單向線性鏈表構(gòu)建中間鏈表,存儲上述排序后的點(diǎn);
(30)遍歷生成的中間鏈表,輸出一個或多個裁剪結(jié)果多邊形。
進(jìn)一步的,所述步驟(21)中設(shè)計的數(shù)據(jù)結(jié)構(gòu)有7個成員變量,分別如下:
①pt是入點(diǎn)、出點(diǎn)或裁剪多邊形頂點(diǎn)坐標(biāo);
②tag表示該點(diǎn)所屬類型:tag=0,該點(diǎn)是裁剪多邊形的頂點(diǎn);tag=1,該點(diǎn)為入點(diǎn);tag=2,該點(diǎn)為出點(diǎn);
③dfdis表示從裁剪多邊形首頂點(diǎn)出發(fā),沿著裁剪多邊形邊界方向到該點(diǎn)的距離,用作單向鏈表中結(jié)點(diǎn)排序參數(shù);
④nid表示實(shí)體多邊形邊界上與該點(diǎn)相鄰的點(diǎn)的索引號:若該點(diǎn)是入點(diǎn),nid是從入點(diǎn)出發(fā),沿可見折線段方向遇到的實(shí)體多邊形邊界上第一個頂點(diǎn)的索引號;若該點(diǎn)是出點(diǎn),nid是從出點(diǎn)出發(fā),沿可見折線段反方向遇到的實(shí)體多邊形邊界上第一個頂點(diǎn)的索引號;
⑤bisused表示該點(diǎn)是否被使用過:true表示被使用過,false表示未被使用過;
⑥next1用于指向該點(diǎn)關(guān)聯(lián)的結(jié)點(diǎn):若該點(diǎn)是入點(diǎn),next1指向入點(diǎn)關(guān)聯(lián)的出點(diǎn);若該點(diǎn)是出點(diǎn),根據(jù)實(shí)際應(yīng)用需求,如果僅需對實(shí)體多邊形與裁剪多邊形進(jìn)行求交操作,則next1為空指針;如果還需對兩個多邊形進(jìn)行求差或求并操作,則next1指向沿著實(shí)體多邊形邊界方向的下一個入點(diǎn);
⑦next2用于指向下一個結(jié)點(diǎn)。
進(jìn)一步的,所述步驟(25)中制定的交點(diǎn)出入特性判定規(guī)則如下:
(41)入點(diǎn)的判定:
①交點(diǎn)的前一個結(jié)點(diǎn)在c的外部,且交點(diǎn)的后一個結(jié)點(diǎn)在c的內(nèi)部;
②交點(diǎn)的前一個結(jié)點(diǎn)在c的外部,且以該點(diǎn)為起始點(diǎn)的可見折線段上有點(diǎn)在c的內(nèi)部;
③交點(diǎn)與前一個結(jié)點(diǎn)的中間點(diǎn)在c的外部,且交點(diǎn)與后一個結(jié)點(diǎn)的中間點(diǎn)在c的內(nèi)部;
④交點(diǎn)與前一個結(jié)點(diǎn)的中間點(diǎn)在c的邊界,且交點(diǎn)與后一個結(jié)點(diǎn)的中間點(diǎn)在c的內(nèi)部;
滿足以上任一條件的交點(diǎn)定義為入點(diǎn);
(42)出點(diǎn)的判定:
①交點(diǎn)的前一個結(jié)點(diǎn)在c的內(nèi)部,且交點(diǎn)的后一個結(jié)點(diǎn)在c的外部;
②以交點(diǎn)為末尾點(diǎn)的可見折線段上有點(diǎn)在c的內(nèi)部,且交點(diǎn)的后一個結(jié)點(diǎn)在c的外部;
③交點(diǎn)與前一個結(jié)點(diǎn)的中間點(diǎn)在c的內(nèi)部,且交點(diǎn)與后一個結(jié)點(diǎn)的中間點(diǎn)在c的外部;
④交點(diǎn)與前一個結(jié)點(diǎn)的中間點(diǎn)在c的內(nèi)部,且交點(diǎn)與后一個結(jié)點(diǎn)的中間點(diǎn)在c的邊界。
滿足以上任一條件的交點(diǎn)定義為出點(diǎn),
在交點(diǎn)退化情況下,利用上述規(guī)則也能夠準(zhǔn)確判斷出交點(diǎn)是入點(diǎn)還是出點(diǎn),若交點(diǎn)不滿足上述任一條件,則該交點(diǎn)被視為無效。
進(jìn)一步的,所述步驟(30)中實(shí)現(xiàn)兩個多邊形的求交即s∩c操作的遍歷方式具體實(shí)現(xiàn)過程如下:
(51)在單向鏈表中尋找一個未被用過的入點(diǎn);
(52)將該入點(diǎn)記為可見折線段的入點(diǎn),并通過入點(diǎn)找到可見折線段的出點(diǎn);
(53)由入點(diǎn)和出點(diǎn)關(guān)聯(lián)的nid從實(shí)體多邊形中獲得可見折線段的中間結(jié)點(diǎn),將上述可見折線段輸出到裁剪結(jié)果多邊形中,同時標(biāo)記這個入點(diǎn)已被使用過;
(54)從當(dāng)前可見折線段的出點(diǎn)開始,正向繼續(xù)追蹤單向鏈表,尋找下一個入點(diǎn),如果在搜索下一個入點(diǎn)過程中遇到裁剪多邊形的頂點(diǎn),則輸出到裁剪結(jié)果多邊形中;
(55)繼續(xù)步驟(52),直至遇到此裁剪結(jié)果多邊形的第一個頂點(diǎn)為止,這個裁剪結(jié)果多邊形構(gòu)建完成;重復(fù)步驟(51)~(55),構(gòu)建下一個裁剪結(jié)果多邊形,直至單向鏈表中所有入點(diǎn)都被標(biāo)記為使用過為止,裁剪過程結(jié)束。
進(jìn)一步的,所述步驟(30)中實(shí)現(xiàn)兩個多邊形的求差,求并操作的遍歷方式實(shí)現(xiàn)過程描述如下:
(56)從單向鏈表的入點(diǎn)出發(fā),并通過入點(diǎn)找到以該點(diǎn)為起始點(diǎn)的可見折線段的出點(diǎn),將可見折線段輸出到裁剪結(jié)果多邊形中,繼續(xù)反向追蹤鏈表,可以得到兩個多邊形的差集即c-s;
(57)從單向鏈表的出點(diǎn)出發(fā),通過出點(diǎn)找到沿著實(shí)體多邊形邊界方向上相鄰的下一個入點(diǎn),將這條以出點(diǎn)為起始點(diǎn)、入點(diǎn)為末尾點(diǎn)的實(shí)體多邊形的折線段輸出到裁剪結(jié)果多邊形中,繼續(xù)反向追蹤鏈表,可以得到兩個多邊形的差集即s-c;
(58)從單向鏈表的出點(diǎn)出發(fā),通過出點(diǎn)找到沿著實(shí)體多邊形邊界方向上相鄰的下一個入點(diǎn),將這條以出點(diǎn)為起始點(diǎn)、入點(diǎn)為末尾點(diǎn)的實(shí)體多邊形的折線段輸出到裁剪結(jié)果多邊形中,繼續(xù)正向追蹤鏈表,可以得到兩個多邊形的并集即s∪c。
進(jìn)一步的,所述步驟(4)中對結(jié)果多邊形與孔洞構(gòu)成的多邊形進(jìn)行求差操作實(shí)現(xiàn)方法為:將結(jié)果多邊形視為裁剪多邊形,某一孔洞構(gòu)成的多邊形視為實(shí)體多邊形,采用求差即c-s方式遍歷中間鏈表,得到裁剪結(jié)果。
本發(fā)明相對于現(xiàn)有技術(shù)而言具有以下優(yōu)點(diǎn):
(1)本發(fā)明適用于任意凸的、凹的或帶孔洞的多邊形裁剪,可實(shí)現(xiàn)實(shí)體多邊形與裁剪多邊形的求交、求差以及求并運(yùn)算。
(2)本發(fā)明在交點(diǎn)退化情況下能夠得到正確的裁剪結(jié)果。
(3)本發(fā)明設(shè)計了合理的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)簡單,易于實(shí)現(xiàn),減少了多邊形的求交次數(shù)和生成裁剪結(jié)果時頂點(diǎn)遍歷次數(shù),加快了裁剪算法運(yùn)行速度。
(4)本發(fā)明在空間消耗和時間消耗上的性能要優(yōu)于g-h算法。
附圖說明
圖1是本發(fā)明中將復(fù)雜多邊形轉(zhuǎn)化為一系列簡單多邊形的多邊形裁剪的流程示意圖。
圖2是本發(fā)明中的兩個簡單多邊形的多邊形裁剪方法的流程示意圖。
圖3是本發(fā)明中的交點(diǎn)退化情況的幾個典型案例的示意圖。
圖4是本發(fā)明中的遍歷中間鏈表得到兩個多邊形相交區(qū)域的流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖與具體實(shí)施方式對本發(fā)明作進(jìn)一步詳細(xì)描述:
如圖1所示,將任意多邊形的裁剪問題轉(zhuǎn)化為一系列不含孔洞的簡單多邊形的裁剪的步驟如下:
(1)假設(shè)被裁剪多邊形(又稱實(shí)體多邊形)為s,裁剪多邊形為c,將含孔洞的復(fù)雜實(shí)體多邊形分解成多個由外環(huán)和n(n≧0)個內(nèi)環(huán)構(gòu)成的不含孔洞的簡單多邊形;
(2)對實(shí)體多邊形的外環(huán)邊界構(gòu)成的多邊形與裁剪多邊形進(jìn)行求交(s∩c)操作,得到裁剪結(jié)果;
(3)若s不含孔洞,則直接輸出這個裁剪結(jié)果;否則,繼續(xù)步驟4;
(4)將結(jié)果多邊形視為裁剪多邊形,某一孔洞構(gòu)成的多邊形視為實(shí)體多邊形,對結(jié)果多邊形與孔洞構(gòu)成的多邊形進(jìn)行求差(c-s)操作,得到裁剪結(jié)果;
(5)取下一個孔洞構(gòu)成的多邊形,繼續(xù)步驟4,直至所有孔洞構(gòu)成的多邊形處理完畢,輸出最終的裁剪結(jié)果。
如圖2所示,假設(shè)實(shí)體多邊形和裁剪多邊形是簡單多邊形,即都只有一條封閉邊界,邊界方向?yàn)轫槙r針方向,多邊形裁剪方法的步驟如下:
(1)設(shè)計了一個合理的數(shù)據(jù)結(jié)構(gòu),用于存儲入點(diǎn)、出點(diǎn)以及裁剪多邊形頂點(diǎn);
(2)將實(shí)體多邊形s和裁剪多邊形c的頂點(diǎn)按順時針方向分別以單向線性鏈表形式存儲;
(3)判斷實(shí)體多邊形和裁剪多邊形的最小外包矩形框mbr(minimumboundingrectangle)是否相交:若不相交,則輸出裁剪結(jié)果多邊形為空;若相交,繼續(xù)步驟(4);
(4)從實(shí)體多邊形邊界上的首頂點(diǎn)開始,尋找實(shí)體多邊形邊界上位于裁剪多邊形外的第一個點(diǎn),記為pk點(diǎn),該點(diǎn)在實(shí)體多邊形邊界上的坐標(biāo)點(diǎn)號記為k;
(5)從pk點(diǎn)開始,求取實(shí)體多邊形與裁剪多邊形的交點(diǎn)及可見折線段;基于制定的交點(diǎn)出入特性判定規(guī)則判斷交點(diǎn)是否有效;若該點(diǎn)為有效的交點(diǎn)(即為入點(diǎn)或出點(diǎn)),則計算交點(diǎn)到裁剪多邊形的首頂點(diǎn)的距離dfdis值,以及記錄交點(diǎn)的nid值;
(6)若存在交點(diǎn),則繼續(xù)步驟(7);若實(shí)體多邊形和裁剪多邊形之間沒有交點(diǎn),存在以下三種情形:
①實(shí)體多邊形邊界上只要有頂點(diǎn)落在裁剪多邊形的內(nèi)部,則表示裁剪多邊形包含實(shí)體多邊形,此時輸出裁剪結(jié)果為實(shí)體多邊形;
②裁剪多邊形邊界上只要有頂點(diǎn)落在實(shí)體多邊形的內(nèi)部,則表示實(shí)體多邊形包含裁剪多邊形,此時輸出裁剪結(jié)果為裁剪多邊形;
③否則表示裁剪多邊形與實(shí)體多邊形相離,此時輸出裁剪結(jié)果為空;
(7)計算裁剪多邊形每個頂點(diǎn)的dfdis值,并將tag值設(shè)為0;
(8)將步驟(5)中計算得到的入點(diǎn)、出點(diǎn)以及步驟(7)中的裁剪多邊形頂點(diǎn)按dfdis值采用快速排序算法進(jìn)行升序排序,若某交點(diǎn)和裁剪多邊形的某頂點(diǎn)的dfdis值相同,則排序時按照“入點(diǎn)、頂點(diǎn)”或“頂點(diǎn)、出點(diǎn)”的順序排列;
(9)基于單向線性鏈表構(gòu)建中間鏈表,存儲上述排序后的點(diǎn);
(10)遍歷生成的中間鏈表,輸出一個或多個裁剪結(jié)果多邊形。
對于步驟10,采用不同的遍歷方式,可以得到實(shí)體多邊形與裁剪多邊形的求交、求差、求并結(jié)果。
基于本發(fā)明中制定的交點(diǎn)出入特性判定規(guī)則,對于交點(diǎn)退化現(xiàn)象也能準(zhǔn)確的判斷出交點(diǎn)是入點(diǎn)還是出點(diǎn)。
如圖3所示,例如圖3a中s與c存在同向重合邊。對于i1點(diǎn),i1點(diǎn)的前一個結(jié)點(diǎn)在c的外部,且i1點(diǎn)與后一個結(jié)點(diǎn)i2的中間點(diǎn)在c的邊界上,依據(jù)上述交點(diǎn)出入特性判定規(guī)則確定i1點(diǎn)既不是入點(diǎn)也不是出點(diǎn);對于i2點(diǎn),i2點(diǎn)與前一個結(jié)點(diǎn)i1的中間點(diǎn)在c的邊界上,i2點(diǎn)與后一個結(jié)點(diǎn)i3的中間點(diǎn)在c的內(nèi)部,因此i2點(diǎn)為入點(diǎn);對于i3點(diǎn),i3點(diǎn)與前一個結(jié)點(diǎn)的中間點(diǎn)在c的內(nèi)部,i3點(diǎn)的后一個結(jié)點(diǎn)在c的外部,所以i3點(diǎn)為出點(diǎn)。圖3f中交點(diǎn)i5既不是入點(diǎn)也不是出點(diǎn)。其他特殊情況依據(jù)上述規(guī)則都可以正確判斷出交點(diǎn)的出入類型。
如圖4所示,兩個多邊形的求交(s∩c)操作具體實(shí)現(xiàn)過程如下:
(1)在單向鏈表中尋找一個未被用過的入點(diǎn);
(2)將該入點(diǎn)記為可見折線段的入點(diǎn),并通過入點(diǎn)找到可見折線段的出點(diǎn);
(3)由入點(diǎn)和出點(diǎn)關(guān)聯(lián)的nid從實(shí)體多邊形中獲得可見折線段的中間結(jié)點(diǎn),將上述可見折線段輸出到裁剪結(jié)果多邊形中,同時標(biāo)記這個入點(diǎn)已被使用過;
(4)從當(dāng)前可見折線段的出點(diǎn)開始,正向繼續(xù)追蹤單向鏈表,尋找下一個入點(diǎn)。如果在搜索下一個入點(diǎn)過程中遇到裁剪多邊形的頂點(diǎn),則輸出到裁剪結(jié)果多邊形中;
(5)繼續(xù)步驟(2),直至遇到此裁剪結(jié)果多邊形的第一個頂點(diǎn)為止,這個裁剪結(jié)果多邊形構(gòu)建完成。重復(fù)步驟(1)~(5),構(gòu)建下一個裁剪結(jié)果多邊形,直至單向鏈表中所有入點(diǎn)都被標(biāo)記為使用過為止,裁剪過程結(jié)束。
對上述過程稍做修改,就可以得到兩個多邊形的差集、并集,實(shí)現(xiàn)過程簡單描述如下:
(1)從單向鏈表的入點(diǎn)出發(fā),并通過入點(diǎn)找到以該點(diǎn)為起始點(diǎn)的可見折線段的出點(diǎn),將可見折線段輸出到裁剪結(jié)果多邊形中,繼續(xù)反向追蹤鏈表,可以得到兩個多邊形的差集(c-s)。
(2)從單向鏈表的出點(diǎn)出發(fā),通過出點(diǎn)找到沿著實(shí)體多邊形邊界方向上相鄰的下一個入點(diǎn),將這條以出點(diǎn)為起始點(diǎn)、入點(diǎn)為末尾點(diǎn)的實(shí)體多邊形的折線段輸出到裁剪結(jié)果多邊形中,繼續(xù)反向追蹤鏈表,可以得到兩個多邊形的差集(s-c)。
(3)從單向鏈表的出點(diǎn)出發(fā),通過出點(diǎn)找到沿著實(shí)體多邊形邊界方向上相鄰的下一個入點(diǎn),將這條以出點(diǎn)為起始點(diǎn)、入點(diǎn)為末尾點(diǎn)的實(shí)體多邊形的折線段輸出到裁剪結(jié)果多邊形中,繼續(xù)正向追蹤鏈表,可以得到兩個多邊形的并集(s∪c)。
以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非是對本發(fā)明作任何其他形式的限制,而依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)所作的任何修改或等同變化,仍屬于本發(fā)明所要求保護(hù)的范圍。