将 2d 点 (x,y) 映射到网格索引 (row,col)

问题描述 投票:0回答:1

我有一个用于机器人导航的特定 **网格 **,如下所示:

我将其缩放了 10 倍来创建我的环境。这是在笛卡尔坐标中给出的

我想将环境中的点(x,y)映射到网格索引(行,列)

障碍物格式以以下形式给出:

[[(60.0,0.0),(70.0,0.0),(70.0,10.0),(60.0,10.0)],

[(70.0, 0.0), (80.0, 0.0), (80.0, 10.0), (70.0, 10.0)],

[(60.0, 10.0), (70.0, 10.0), (70.0, 20.0), (60.0, 20.0)],

[(70.0, 10.0), (80.0, 10.0), (80.0, 20.0), (70.0, 20.0)],

但是,当我尝试使用以下代码绘制这些时:

fig, ax = plt.subplots()
        for obs_corner in self.obstacle_vertices:
            ox=obs_corner[0][0]
            oy=obs_corner[0][1]
            w=self.planner.scaling_factor
            h=self.planner.scaling_factor
            ax.add_patch(patches.Rectangle((ox,oy),w,h,edgecolor='black',facecolor='black',fill=True))

生成的图表是:

我认为我在将矩阵映射到二维环境中犯了一个基本错误

numpy matplotlib matrix 2d numpy-ndarray
1个回答
0
投票

您的绘图的原点位于左上角,但您的代码生成的绘图的原点位于左下角。如果您希望它位于左上角,那么您应该翻转(反转)y 轴。

ax.invert_yaxis()
© www.soinside.com 2019 - 2024. All rights reserved.