转换索引网格坐标数学

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

鉴于

$c = 2; // number of columns
$r = 3; // number of rows

我需要找到x,y的值,它是一个特定的小区(left$iright,top->bottom顺序)的索引的->网格坐标。

通常情况下,一会来解决这一问题使用两个循环;对行的循环,另一个用于列,但对我来说,我需要数学上做到这一点。

因此,与上述情况下,我会是这样的:

$grid = new Grid(2, 3);
                                         // i x y
list($x, $y) = $grid->getCoordOfCell(0); // 0 0 0
list($x, $y) = $grid->getCoordOfCell(1); // 1 1 0
list($x, $y) = $grid->getCoordOfCell(2); // 2 0 1
list($x, $y) = $grid->getCoordOfCell(3); // 3 1 1
list($x, $y) = $grid->getCoordOfCell(4); // 4 0 2
list($x, $y) = $grid->getCoordOfCell(5); // 5 1 2

可以想像,的getCoordOfCell()为网格单元x,y坐标$i将返回数组。

不知道是不是我错过了什么在这里,但我认为这是相当多了。

我猜产生的数学公式将基于divs或mods,但我就是没有精神力量来想一想,我自己。另外,我敢肯定,作为一个问题,这应该是对他人有用的未来。呵呵,虽然我在这里说PHP,这可能是语言无关...

php grid coordinates
1个回答
11
投票

要获得右侧立柱您有:

 $i % NUMBER_ITEMS_IN_ROW

并得到正确的行:

 $i / NUMBER_ITEMS_IN_ROW

在您的例子中,有3行2列(==连续物品),所以:

 $i    $x ($i%2)    $y ($i/2)
 0     0            0
 1     1            0
 2     0            1
 3     1            1
 4     0            2
 5     1            2
© www.soinside.com 2019 - 2024. All rights reserved.