for point in random_gujiapoints: 现在我想要在lunk_pos中找到同x和同y方向上距离point最近的两个点
时间: 2024-04-14 08:28:11 浏览: 85
可以通过以下代码来实现在 `lunk_pos` 中找到同 x 和同 y 方向上距离 `point` 最近的两个点:
```python
def collect_points(random_gujiapoints, lunk_pos):
result = []
for point in random_gujiapoints:
dirx = [] # 相同x
diry = [] # 相同y
x, y = point
# 找出同 x 方向上距离最近的两个点
closest_x = sorted([(pos, abs(y - pos[1])) for pos in lunk_pos if pos[0] == x], key=lambda x: x[1])[:2]
dirx.extend(closest_x)
# 找出同 y 方向上距离最近的两个点
closest_y = sorted([(pos, abs(x - pos[0])) for pos in lunk_pos if pos[1] == y], key=lambda x: x[1])[:2]
diry.extend(closest_y)
distance_vertical = pz.EuclideanDis(dirx[0][0], dirx[1][0])
distance_level = pz.EuclideanDis(diry[0][0], diry[1][0])
if distance_vertical < distance_level:
result.append(["Vertical", distance_vertical])
else:
result.append(["Horizontal", distance_level])
return result
```
在这个优化后的代码中,我们使用了列表推导式和排序函数来找到同 x 和同 y 方向上距离最近的两个点。然后,计算了垂直方向和水平方向上的欧氏距离,并将结果添加到 `result` 列表中。最后,返回结果列表。
请注意,这里假设 `pz.EuclideanDis` 是一个计算欧氏距离的函数,你可能需要根据实际情况来修改它。
阅读全文