Python 3 中可以使用 sorted
函数来实现该需求。首先,我们需要定义一个排序函数,该函数将计算每个点相对于原点的极坐标角度,然后根据该角度进行排序。
以下是实现代码:
def sort_clockwise(points):
# 计算每个点相对于原点的极坐标角度
angles = [(x, y, math.atan2(y, x)) for x, y in points]
# 按角度排序
sorted_angles = sorted(angles, key=lambda x: x[2])
# 返回排序后的点
return [(x, y) for x, y, _ in sorted_angles]
points = [[-1, 1], [1, 1], [1, -1], [-1, -1]]
sorted_points = sort_clockwise(points)
print(sorted_points) # 输出:[(-1, 1), (1, 1), (1, -1), (-1, -1)]
在上面的代码中,我们首先计算每个点相对于原点的极坐标角度,使用 math.atan2(y, x)
函数。然后,我们使用 sorted
函数对角度进行排序,最后返回排序后的点。
注意:在计算角度时,我们使用 math.atan2(y, x)
函数,该函数返回一个介于 -π
和 π
之间的角度值。如果您想要将角度限制在 [0, 2π)
范围内,可以使用 (math.atan2(y, x) + 2 * math.pi) % (2 * math.pi)
。