【问题标题】:Convert index to grid coordinate mathematically以数学方式将索引转换为网格坐标
【发布时间】:2012-09-13 08:11:51
【问题描述】:

鉴于此

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

我需要找到$i 值的x,y 网格坐标,它是特定单元格的索引(左->right,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() 将返回网格单元 $ix,y 坐标数组。

不知道我是不是错过了什么,但我认为差不多就是这样。

我猜得到的数学公式将基于divs 或mods,但我只是没有足够的精神力量去思考这个问题。另外,我敢肯定,作为一个问题,这对将来的其他人应该是有用的。哦,虽然我在这里说的是 PHP,但这可能与语言无关......

【问题讨论】:

标签: php grid coordinates


【解决方案1】:

要获得正确的列,您有:

 $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

【讨论】:

    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多