2012-08-31 35 views
2

我需要算法以給定2d矢量來獲得給定多邊形的移動軌跡。按給定矢量移動多邊形的軌跡

給定有效的多邊形沒有孔,但可能凹。 操作在平面上執行,所以結果可能是一個多邊形,可能帶有孔。 如果它簡化了任務,外部多邊形就足夠了。

enter image description here

它看起來簡單來形容,但我覺得它複雜的實現,所以我找了一些現成的解決方案,最好是在C#。

+1

你所描述的看起來像原始多邊​​形,偏移多邊形和由原始多邊形的一側形成的所有平行四邊形的聯合,同一側偏移以及連接兩側端點的兩段偏移。要執行聯合操作,您可以查找第三方几何庫或查看System.Drawing.Region類 - http://msdn.microsoft.com/en-us/library/system.drawing.region.aspx – Igor

+0

謝謝,我會用這個,如果我不會找到更多的高性能解決方案 –

回答

1

假設您有一個由點A1,A2,...,An給定的多邊形P.

現在您決定將它在X軸上移動X,在Y軸上移動Y.

您可以對每個點單獨執行此操作以獲取多邊形的結束位置。

讓我們通過點B1,B2,...,Bn調用移位多邊形Q givng。

然後,所有你需要做的就是得出以下平行四邊形:

(A1 A2 B2 B1),(A2 A3 B3 B2),(A3 A4 B4 B3),...,(An-1的一個Bn Bn-1),(An A1 B1 Bn)

在這一點上,你將填寫你想要的形狀。

一些平行四邊形將重疊,但這沒關係,因爲你只是用相同的紅色填充它們。

通過這樣做,您還可以正確地轉出第二個示例(由於脣部滑入位置,中間的孔的右下角應該是對角線)。

+0

測試,看起來足夠高性能 –