2015-05-09 78 views
3

有4條規則在薩瑟蘭-Hodgman算法解釋爲限幅多邊形:圖形算法:Sutherland-Hodgman裁剪算法 - 當兩個外頂點穿過裁剪區域時會發生什麼?

  • 如果兩個頂點是剪切區域內 - 保存所述第二
  • 如果第一頂點是內,第二個是外 - 計算與剪貼區域邊界的交點並保存
  • 如果第一個頂點在外面,第二個在頂點 - 計算與剪貼區域邊界的交點並保存,並保存第二個頂點
  • 如果兩個頂點都在外面 - 不需要保存

由於這個解釋,當兩個頂點所形成的線穿過裁剪區域時,它會做什麼?

如果我遵循算法步驟,我將最終沒有任何頂點......是否沒有考慮這種情況?也許我應該預先計算所有的交叉區域並使用它們?

ClippingProblem http://oi59.tinypic.com/25722wz.jpg

+0

可不可以給的參考4規則?什麼是兩個頂點?我正在[維基百科](http://en.wikipedia.org/wiki/Sutherland-Hodgman_algorithm)上閱讀這個算法。它根本沒有提到兩個頂點。 –

+0

在維基百科中,它的解釋是不同的。如果你看其他的描述,或者在Youtube的視頻指南中看,你會看到這4條規則。 – SomethingSomething

回答

1

我終於找到了自己的答案 - 我將與大家誰喜歡這裏瞭解分享...

您可能會看到正確的算法的描述在這裏:https://www.youtube.com/watch?v=Euuw72Ymu0M

錯誤地描述在很多教程,應該考慮每個頂點作爲裁剪區域內/外,然後應用上述問題中描述的規則。

正確算法 - 將遍歷修剪區域的所有邊緣。 而不是考慮頂點內部/外部剪輯區域 - 正確的做法是將頂點視爲在我們在上迭代的特定邊的內側/外側。這意味着,例如,對於問題中的示例圖像 - 剪貼區域的左邊緣將認爲藍色矩形的右上角爲,內部爲 - 因爲儘管位於剪輯區域外,但它位於左邊的內側。例如,左上角將被認爲是以外的邊緣。

如果算法是在2D中完成的,我們有剪切區域的4條邊。例如,我們首先在左邊緣應用算法 - 然後我們使用它的輸出在右邊緣運行算法,然後在上邊緣和底邊緣使用相同的算法。最後的答案將是最後一個的輸出。

I.e.如果我們使用Left-> Right-> Up-> Bottom,則最終輸出將是由底邊輸出的頂點列表。

您可以嘗試運行該算法,每個邊緣以下的問題描述的規則 - 你會看到,你是最後面將精確地裁剪一個