2016-02-28 229 views
0

如果授予了四種2D頂點,(0, 0), (0, 2), (3, 0), (4, 5)
我怎樣才能檢索到多邊形的所有邊,這樣的嗎?由頂點數組多邊形獲取多邊形的邊

((0, 0), (0, 2)) ((0, 0), (3, 0)), ((0, 2), (4, 5)), ((3, 0), (4, 5)) 

如果我計算可取得的所有線段, 會有像((0, 0), (4, 5)), ((0, 2), (3, 0))一些斜片,這將導致錯誤。

如何檢索一般多邊形的只有側段?

+0

思想爲一個2×2陣列,2個頂點由一個片段時僅其行或連接它們的列是等於;對角線連接點0,0到1,1(其中數字是數組中的座標)。 – gengisdave

+0

@gengisdave如此將非零座標轉換爲1? – Ris

回答

0

編寫頂點數組:

  col1  col2 
     ------------------- 
row1 | A(0,0) | B(0,2) | 
     ------------------- 
row2 | C(3,0) | D(4,5) | 
     ------------------- 

的頂點由一個鏈段(不是對角),他們屬於相同行或列時連接。例如。 A和C連接,因爲它們在col1中,與C和D相同(row2)。 B和C不連接,因爲它們有不同的列和不同的行。

+0

所以我應該將頂點轉換爲二維數組。謝謝! – Ris

+0

二維數組絕對不需要。 – MBo

0

如果點順序正確,那麼多邊形的第i個邊連接第i個頂點和第(i + 1)個頂點,最後一個邊連接第(N-1)個頂點和第0個頂點。僞代碼:

for i = 0.. N - 2 
    Edges[i][0] = Points[i]; 
    Edges[i][1] = Points[i + 1]; 
Edges[N-1][0] = Points[N-1]; 
Edges[N-1][1] = Points[0]; 

(這是可能加入的所有操作內的爲週期,但失去一些清晰度