我需要算法以給定2d矢量來獲得給定多邊形的移動軌跡。按給定矢量移動多邊形的軌跡
給定有效的多邊形沒有孔,但可能凹。 操作在平面上執行,所以結果可能是一個多邊形,可能帶有孔。 如果它簡化了任務,外部多邊形就足夠了。
它看起來簡單來形容,但我覺得它複雜的實現,所以我找了一些現成的解決方案,最好是在C#。
我需要算法以給定2d矢量來獲得給定多邊形的移動軌跡。按給定矢量移動多邊形的軌跡
給定有效的多邊形沒有孔,但可能凹。 操作在平面上執行,所以結果可能是一個多邊形,可能帶有孔。 如果它簡化了任務,外部多邊形就足夠了。
它看起來簡單來形容,但我覺得它複雜的實現,所以我找了一些現成的解決方案,最好是在C#。
假設您有一個由點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)
在這一點上,你將填寫你想要的形狀。
一些平行四邊形將重疊,但這沒關係,因爲你只是用相同的紅色填充它們。
通過這樣做,您還可以正確地轉出第二個示例(由於脣部滑入位置,中間的孔的右下角應該是對角線)。
測試,看起來足夠高性能 –
你所描述的看起來像原始多邊形,偏移多邊形和由原始多邊形的一側形成的所有平行四邊形的聯合,同一側偏移以及連接兩側端點的兩段偏移。要執行聯合操作,您可以查找第三方几何庫或查看System.Drawing.Region類 - http://msdn.microsoft.com/en-us/library/system.drawing.region.aspx – Igor
謝謝,我會用這個,如果我不會找到更多的高性能解決方案 –