我有一组具有 x 和 y 坐标的点,如下图所示。这 9 个点的坐标存储在一个列表中,如下所示:
L = [[5,2], [4,1], [3.5,1], [1,2], [2,1], [3,1], [3,3], [4,3] , [2,3]]
这个想法是从原点顺时针对点进行排序。在这种情况下,原点是带颜色的点,并且有一个指示排序方向的箭头。不要担心创建方法来确定来源,因为它已经解决了。
因此,在订购后,列表 L
应如下所示:
L = [[2,3], [3,3], [4,3], [5,2], [4,1], [3.5,1], [3,1], [2,1], [1,2]]
请注意,x 和 y 坐标不会更改。改变的是存储顺序。
你知道用 python 语言解决这个问题的算法、脚本或方法吗?
原文由 Jayme Muzzi 发布,翻译遵循 CC BY-SA 4.0 许可协议
有了一点三角学,这并不难。也许你知道,但两个(归一化)向量之间的角度是
acos(vec1 * vec2)
。然而,这只计算投影角度,但可以使用atan2
来计算方向感知角度。这意味着一个函数计算它然后将它用作
key
进行排序将是一个好方法:A
sorted
运行:并且在原点周围有一个矩形网格,这也可以按预期工作:
即使您更改参考向量:
感谢
@Scott Mermelstein
更好的函数名称和@f5r5e5d
atan2
建议。