電腦圖形學(二)輸出圖元_10_多邊形填充區_3_內-外測試

來源:互聯網
上載者:User

標籤:

內-外測試
        各種圖形處理經常需要鑒別對象的內部地區。識別簡單對象如凸多邊形、圓或橢圓的內部通常是一件很容易的事情。但有時我們必須處理較複雜的對象。例如,我們可能描述一個圖3.46所示的有相交邊的複雜填充區。在該形狀中,xy平面上哪一部分為對象邊界的“內部”、哪一部分為“外部”並不總是一目瞭然的。奇偶規則和非零環繞規則是識別平面圖形內部地區的兩種常用方法。
        奇偶規則(odd-even rule)也稱 奇偶性規則(odd-parity rule)偶奇規則(even-odd rule),該規則從任意位置P到對象座標範圍以外的遠點畫一條概念上的直線(射線),並統計沿該射線與各邊的交點數目。假如與這條射線相交的多邊形邊數為奇數,則P是內部(interior)點,否則P是外部( exterior)點。為了得到精確的相交邊數,必須確認所畫的直線不與任何多邊形頂點相交。圖3.46(a)
樣本了根據奇偶規則得到的存在自相交的一組邊的內部和外部地區。我們可以使用該過程對兩個同
心圓或兩個同心多邊形的內部填上指定顏色。
        另一種定義內部地區的方法是 非零環繞數(nonzera winding-number)規則。該方法統計多邊形邊以逆時針方向環繞某一特定點的次數,這個數稱為環繞數。將二維對象的內部點定義為具有非零值的環繞數。在對多邊形應用非零環繞數規則時,將環繞數初始化為零。設想從任意位置P到對象座標範圍外的遠處一點畫一條射線。所選擇的射線不能與多邊形的任何頂點相交。當從P點沿射線方向移動時,統計穿過該射線的邊的方向。每當多邊形從右至左穿過射線時,邊數加1;從左至右時,邊數減1。在所有穿過的邊都已計數後,環繞數的最後值決定了P的相對位置。假如環繞數為非零,則P將定義為內部點,否則P是外部點。圖3.46(6)給出了使用非零環繞數規則的自相交多邊形的內部和外部地區。對於多邊形和圓等簡單對象,非零環繞數規則和奇偶規則給出了相同的結果;但對於比較複雜的形狀,兩種方法可能會產生3.46所示的不同的內部和外部地區。

       一種確定有向邊界穿越的方法是沿對象邊建立向量(或邊界線),將從P點出發的射線向量u與穿過射線的每條邊的邊向量E進行叉積運算。假定在xy平面上有一個二維對象,每一叉積的方向或者在+z方向、或者在-z方向。如果對於某一特定的邊,叉積u×E的z分量為正,那麼邊從右至左穿過射線,環繞數加1。否則,邊從左至右穿越射線,環繞數減1。邊向量可以使用邊的終止端點位置減去邊的起始頂點位置進行計算。
        計算有向邊界穿越的更簡單的方法是使用點積代替叉積。為此,建立與向量u正交且當站在P點沿u方向看時從右至左方向的一個向量。如果u的分量表示為(ux,uy),則這個垂直於u的向量的分量為(-u y,ux)。現在,如果該正交向量與邊界線向量的點積為正,表示從右向左穿越,讓環繞數加1。否則,邊界從左向右穿過輔助線,環繞數減1。
       非零環繞數規則將有些地區定為內部而奇偶規則將其定為外部,這在有些應用中可以是有益的。一般情況下,平面圖形可定義為多個不相連的組成部分,為每一不相連的邊界集指定的方向可用於指定內部和外部。這種例子有字元(如阿拉伯數字和標點符號)、拼接的多邊形及同心圓或橢圓。對於曲線,奇偶規則通過計算與曲線路徑的交點來應用。類似地,使用非零環繞數規則,我們需要在曲線從P點出發的射線相交點處計算切向量。

       非零環繞數規則的變形可用於以另一種方法定義的內部地區。例如,我們可以在環繞數為正或為負時定義一個點為內點。我們也可以使用任何其他的規則來產生各種填充地區。有時,使用布爾操作指定填充地區為兩地區的混合。布爾操作的一種實現方法是使用非零環繞數規則的一個變形。在這種方法下,先為每一地區定義簡單的無相交的邊界。然後如果考慮每一邊界的方向為逆時針,那麼兩地區的並包含那些使環繞數為正的點(參見圖3.47)。類似地,逆時針邊界的兩地區的交包含那些使環繞數大於1的點,3.48所示。要建立兩地區差的填充區,如A-B,我們可以引入逆時針邊界的A和順時針邊界的B。其差地區(參見圖3.49)即為那些使環繞數為正的點。




電腦圖形學(二)輸出圖元_10_多邊形填充區_3_內-外測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.