我试图在x-y平面上根据点的极角对点列表进行排序,从列表中选择一个具有最小y值的点。你知道吗
我曾经
min(listPts, key=lambda t: (t[1], -t[0]))
在listPts中查找最小y值
我有一个函数θ来求两点之间的夹角
def theta(pointA, pointB):
dx = pointB[0] - pointA[0]
dy = pointB[1] - pointA[1]
if abs(dx) < 1.e-6 and abs(dy) < 1.e-6:
t = 0
else:
t = dy / (abs(dx) + abs(dy))
if dx < 0:
t = 2 - t
elif dy < 0:
t = 4 + t
return t * 90
我想知道是否可以使用这个函数作为.sort()方法中的一个键,因为每个被检查的点都有一个不同的θ点?你知道吗
干杯
是的。Read the documentation for ^{} ,就在那里。参数甚至与
min
的名称相同。你知道吗更新:如果我了解你真正的问题,
theta
是在计算点之间的相对角度,你想根据点对的theta
分数排序吗?你知道吗如果这是正确的,您真的需要一个多步骤的过程:
为此,您可以使用^{} 生成点对(或者先排序以获得一致的点排序,然后使用^{} ,这样您就不会为点
(A, B)
和(B, A)
创建点对),然后使用theta
对结果对进行排序以按相对角度对点对进行排序。例如:输出:
对应于
[0.0, 0.0, ..., 165.0, 168.75]
的theta
值。你知道吗相关问题 更多 >
编程相关推荐