python3 对形如 [[-1, 1], [1, 1], [1, -1], [-1, -1]] 的数组,进行排序,要求按坐标点的顺时针方向排序,且从左上方的点开始

发布时间: 更新时间: 总字数:307 阅读时间:1m 作者: IP上海 分享 网址

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)

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数