网格图像值到二维数组
Grid image values to 2D array
我有一个如下图所示的网格,我想将其放入以下格式的数组中:
;x = wall(black cells and grey boxes), s= start (red circle), g = goal(blue circle), 0 = available path(everything else)
$data[5][5] = [["x","x","x","x","x"], _
["x","s","0","x","x"], _
["x","x","0","x","x"], _
["x","x","0","g","x"], _
["x","x","x","x","x"]]
我想我可以使用这些颜色,但我不确定如何。
看起来你的视角是固定角度的
创建将屏幕位置转换为网格位置并返回的函数。 2x
线性插值应该很容易。如果相机平移不是基于单元格的步骤,那么您需要网格线的角点并将其用作起点 ...
例如像这样的东西(希望我正确测量了像素):
x = 236 + (+(u-uh)-(v-vh))*60;
y = 133 + (-(u-uh)-(v-vh))*30;
60,30
是x,y
中的单元格大小
(236,133)
是中间单元格中心的位置 (uh,vh)
以像素为单位
uh,vh
是中心单元格网格中的坐标
将视图平移偏移量添加到 (uv,hv)
或 (236,133)
现在只需计算此 (u=?,v=?)
的反向变换。不要忘记地图不是矩形的!它是这样的:
0000x0000,
000xxx000,
00xxxxx00,
0xxxxxxx0,
xxxxxxxxx,
0xxxxxxx0,
00xxxxx00,
000xxx000,
0000x0000,
创建一组您可以遇到的所有对象的图像
这可以在 运行 上完成,每次您没有找到匹配项时,将单元格作为新对象类型添加到项目列表中。
遍历所有网格单元格位置并与对象类型进行比较
对于像素精确的渲染图像,您可以直接比较像素 1:1 如果不是这种情况,您需要更稳健地比较对象。但是为了制定一个有效的算法,我们需要查看您可以遇到的所有类型的对象,通常您可以比较:
- 平均、最小和最大颜色、直方图,
- 纵横比,...
- FFT/DCT
- 质心位置、密度等
不要忘记屏蔽与单元格区域的比较,仅不包括边界矩形角上的相邻单元格
[注释]
没有进一步的信息就不能更具体
我有一个如下图所示的网格,我想将其放入以下格式的数组中:
;x = wall(black cells and grey boxes), s= start (red circle), g = goal(blue circle), 0 = available path(everything else)
$data[5][5] = [["x","x","x","x","x"], _
["x","s","0","x","x"], _
["x","x","0","x","x"], _
["x","x","0","g","x"], _
["x","x","x","x","x"]]
我想我可以使用这些颜色,但我不确定如何。
看起来你的视角是固定角度的
创建将屏幕位置转换为网格位置并返回的函数。
2x
线性插值应该很容易。如果相机平移不是基于单元格的步骤,那么您需要网格线的角点并将其用作起点 ...例如像这样的东西(希望我正确测量了像素):
x = 236 + (+(u-uh)-(v-vh))*60; y = 133 + (-(u-uh)-(v-vh))*30;
60,30
是x,y
中的单元格大小
(236,133)
是中间单元格中心的位置(uh,vh)
以像素为单位uh,vh
是中心单元格网格中的坐标
将视图平移偏移量添加到
(uv,hv)
或(236,133)
现在只需计算此(u=?,v=?)
的反向变换。不要忘记地图不是矩形的!它是这样的:0000x0000, 000xxx000, 00xxxxx00, 0xxxxxxx0, xxxxxxxxx, 0xxxxxxx0, 00xxxxx00, 000xxx000, 0000x0000,
创建一组您可以遇到的所有对象的图像
这可以在 运行 上完成,每次您没有找到匹配项时,将单元格作为新对象类型添加到项目列表中。
遍历所有网格单元格位置并与对象类型进行比较
对于像素精确的渲染图像,您可以直接比较像素 1:1 如果不是这种情况,您需要更稳健地比较对象。但是为了制定一个有效的算法,我们需要查看您可以遇到的所有类型的对象,通常您可以比较:
- 平均、最小和最大颜色、直方图,
- 纵横比,...
- FFT/DCT
- 质心位置、密度等
不要忘记屏蔽与单元格区域的比较,仅不包括边界矩形角上的相邻单元格
[注释]
没有进一步的信息就不能更具体