我正在阅读维基百科上的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)
计算? 当然,它可以从坐标列表中计算,但我不知道如何。 一个稍微冗长的解释对我很有帮助,或者可能只是一个不同的解释。