找到下一个要点。简单的礼品包装算法

时间:2015-05-30 00:48:47

标签: python algorithm convex-hull

您好

我正在阅读维基百科上的gift-wrapping algorithm,觉得我理解得很好(我错了)。因此,我认为我应该尝试在python中实现它。然而,维基百科上的伪代码在几个方面让我失望。

1:jarvis(S)
2:   pointOnHull = leftmost point in S
3:   i = 0
4:   repeat
5:      P[i] = pointOnHull
6:      endpoint = S[0]         // initial endpoint for a candidate edge on the hull
7:      for j from 1 to |S|
8:         if (endpoint == pointOnHull) or (S[j] is on left of line from P[i] to endpoint)
9:            endpoint = S[j]   // found greater left turn, update endpoint
10:      i = i+1
11:      pointOnHull = endpoint
12:   until endpoint == P[0]      // wrapped around to first hull point

假设我正在使用一系列坐标I.E

[[x,y],[x,y],[x,y],[x,y]]

我理解如何获得pointOnHull并且我理解外部循环为船体上的每个项目循环,而内部循环是点集合中的所有点。但是,我真的不明白for循环内部发生了什么,我不明白如何

(S[j] is on the left of line from P[i] to endpoint)

计算? 当然,它可以从坐标列表中计算,但我不知道如何。 一个稍微冗长的解释对我很有帮助,或者可能只是一个不同的解释。

0 个答案:

没有答案