Python 找到下一点。简单礼品包装算法 你好
我在读维基百科上的文章,感觉自己理解得还算不错(我错了)。因此,我认为我应该尝试用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
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“按常规顺序”这看起来很有帮助,谢谢。