2016-02-28 228 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]; 

(这是可能加入的所有操作内的为周期,但失去一些清晰度