Python 找到下一点。简单礼品包装算法 你好

Python 找到下一点。简单礼品包装算法 你好,python,algorithm,convex-hull,Python,Algorithm,Convex Hull,我在读维基百科上的文章,感觉自己理解得还算不错(我错了)。因此,我认为我应该尝试用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

我在读维基百科上的文章,感觉自己理解得还算不错(我错了)。因此,我认为我应该尝试用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
假设我在和一系列的合作伙伴一起工作

[[x,y],[x,y],[x,y],[x,y]]
我知道如何获取pointOnHull,我知道外壳上的每个项目的外循环是循环的,而内循环是点集中的所有点。然而,我并不真正理解for循环中发生了什么,也不理解如何进行

(S[j] is on the left of line from P[i] to endpoint)
是计算出来的吗? 当然,它是可以从坐标列表中计算出来的,但我就是不知道如何计算。 稍微详细一点的解释会对我很有帮助,或者可能只是一个不同的解释。

也许可以看看@DavidGreydanus“按常规顺序”这看起来很有帮助,谢谢。