已知Voronoi单元格顶点坐标,如何获取对应单元格的种子点坐标
问题解答
你使用的freud库中,Voronoi类计算输出的polytopes(即你代码中的cells变量)的顺序,与你传入的种子点数组points的索引顺序是一一对应的:
cells[i]就是第i个种子点points[i]对应的Voronoi单元格- 直接按索引匹配即可获取每个单元格对应的种子点坐标
计算距离的示例代码
你可以直接在现有代码的基础上添加以下逻辑,完成每个顶点到对应种子点的距离计算:
# 遍历每个单元格及其对应的种子点 for idx, (cell_vertices, seed_point) in enumerate(zip(cells, points)): print(f"第{idx}个单元格,对应种子点坐标:{seed_point}") # 计算每个顶点到种子点的欧氏距离 distances = np.linalg.norm(cell_vertices - seed_point, axis=1) print(f"各顶点到种子点的距离:{distances}\n")
上述代码中numpy.linalg.norm会直接计算坐标差向量的模长,即为两点间的欧氏距离,2D场景下直接计算三维坐标和仅取前两维计算的结果完全一致。
内容的提问来源于stack exchange,提问作者Zen
相关产品推荐
相关产品推荐

