3 次元の六角形の空間を想像してみてください。
各タイルには座標 XYZ があります。同じ平面内の特定のセルの隣人を選択する必要があります。SQL では次のようになります。
$tbDir = $y % 2 == 0 ? -1 : 1;
$result = db_query('SELECT x,y,z FROM {cells} WHERE
x = %d AND y = %d AND z = %d OR
x = %d AND y = %d AND z = %d OR
x = %d AND y = %d AND z = %d OR
x = %d AND y = %d AND z = %d OR
x = %d AND y = %d AND z = %d OR
x = %d AND y = %d AND z = %d OR
x = %d AND y = %d AND z = %d ',
$x, $y, $z,
$x-1, $y, $z,
$x+1, $y, $z,
$x, $y-1, $z,
$x, $y+1, $z,
$x+$tbDir, $y-1, $z,
$x+$tbDir, $y+1, $z);
しかし、私はこの方法が好きではありません。おそらく誰かがより最適なアルゴリズムを知っていますか? ありがとうございました!