多邊形裁剪

1、多邊形的裁剪

若是按線段的方法裁剪,獲得的是一系列線段。算法

而實際上,應該獲得的是下圖所示的有邊界的區域:blog

多邊形裁剪算法的輸出應該是裁剪後的多邊 形邊界的頂點序列!bfc

須要構造能產生一個或多個封閉區域的多邊 形裁剪算法方法

2、Sutherland-Hodgeman多邊形裁剪

該算法的基本思想是將多邊形邊界做爲一個總體,im

每次用窗口的一條邊對要裁剪的多邊形和中間結果多邊形進行裁剪,d3

體現一種分而治之的思想db

把平面分爲兩個區域:img

包含有窗口區域的一個域稱爲可見側;while

不包含窗口區域的域爲不可見側co

 

裁剪獲得的結果多邊形的頂點有兩部分組成:

(1)落在可見一側的原多邊形頂點

(2)多邊形的邊與裁剪窗口邊界的交點

根據多邊形每一邊與窗口邊所造成的位置關係,沿着多邊形 依次處理頂點會遇到四種狀況:

(1)第一點S在不可見  側面,而第二點P在 可見側

交點I與點 P均被加入到輸 出頂點表中。

 

(2)是S和P都在可見側

 則P被加入到輸出頂點表中

(3)S在可見側,而P在不可見側

則交點I被加入到輸出頂點表中

(4)若是S和P都在不可見側

輸出頂點表中不增長任何頂點

在窗口的一條裁剪邊界處理完全部頂 點後,其輸出頂點表將用窗口的下一 條邊界繼續裁剪

 

 

 

while對於每個窗口邊或面 do

  begin

    if P1 在窗口邊的可見一側 then 輸出P1

    for i=1 to n do

    begin

     if P1 在窗口邊的可見一側 then

    if P1+1 在窗口邊的可見一側 then 輸出 P1+1

     else 計算交點並輸出交點

    else if Pi+1 在窗口可見一側,then 計算交點

      並輸出交點,同時輸出Pi+1

    end

  end

end

 

Sutherland-Hodgeman算法不足之處

利用Sutherland-Hodgeman裁剪算法對凸多邊形進行裁剪能夠 得到正確的裁剪結果,可是凹多邊形不行。

相關文章
相關標籤/搜索