微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 2D 中的障碍物坐标映射到无向格图

如何解决将 2D 中的障碍物坐标映射到无向格图

上下文:我想对移动探测器进行最短路径搜索,源系统在 2D 笛卡尔坐标中运行,即 20 m x 10 m 空间。使用 igraph for python,我在这些维度上创建了一个格子图,顶点对应于检测器可以到达的坐标和连接相邻顶点的边。下图是使用 igraph

中的 layout_grid 方法创建的

enter image description here

我想在类似于下图的空间中添加一个简单的矩形障碍物,并对应于格子图:

https://alienryderflex.com/shortest_path/

问题:我知道需要使用 delete_vertices 方法去除与障碍物的 2D 坐标对应的顶点和边,但我不确定如何映射 2D格子图中顶点的障碍物坐标。任何建议表示赞赏。

示例代码

import numpy as np
from igraph import Graph
#Rectangular obstruction
obstruction = [[5,0],[10,5],[5,5]]
#Create graph
g = Graph().Lattice([20.0,10.0],nei=1,circular=False)
g.delete_vertices([***obstruction coordinates***])
#Coordinates to 2D grid
coords = np.asarray(g.layout_grid(width=int(search_area[2][0])).coords)

解决方法

原始 igraph 文档 describes how they are labeled。如果 x 是列,y 是行,h 是点阵的高度(第二维),以下函数将点阵中的坐标转换为顶点 ID。>

def coordinate_to_id(x,y,h):
    """Convert coorindate (x,y) to ID for a lattice of height h."""
    return y * w + x

请注意,您必须以 igraph will update its internal identifiers 的形式一次性删除所有顶点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。