2011-10-09 263 views
1

可以使用什麼算法來歪斜多邊形?
像歪斜如下:多邊形歪斜算法

____ 
| _| 
|__| 

到右下角將產生

____ 
| \ 
|  \ 
\ _| 
    \__| 

它像一個影子投。我考慮把每條線都做成平行四邊形,然後將它和它的相應線做成偏斜位置,然後將所有這些結合起來,但這看起來有點粗暴,需要花費很多時間。
有沒有更好的算法呢?如果需要,我已經有了所有多邊形布爾運算的代碼。

回答

2

我覺得這個算法我只是想起來會做到這一點:

分類每一行的多邊形它是否是更加面朝左上或面臨-右下角(或精確地沿着skew-方向線)。

然後,對每個頂點:

  • 如果連接兩個左上線或左上線和精確地對齊線,然後離開它是。
  • 如果它連接兩條右下方的線或右下方的線和一條完全對齊的線,然後將其移動偏移距離。
  • 如果它連接了一條左上角和右下角線,然後將它分割成兩個頂點,一個頂點和一個頂點。

    此步驟可能會導致自相交(例如,如果頂點是凹面並面向左下角),在這種情況下,丟棄兩個頂點並將兩個現有線與頂點交叉。

+0

我不明白自相交避免步驟 – Dani

+0

如果你不做額外的部分,你會得到一個三角形的自交在一些凹面。所有你需要做的就是「填充洞」,這恰好是交叉路口。我建議實施算法的其餘部分,然後您會看到問題和解決方案。 –

+0

我實現了這一點,它的工作非常快速。關於自我交集,我所需要做的就是繪製帶有「正」卷繞的三角形,而不是默認的「奇數」卷繞。 – Dani