1D索引到3D坐标

时间:2012-07-29 20:47:29

标签: javascript arrays math multidimensional-array

我使用以下代码展平了3D数组 index = x * size * size + y * size + z

但无法弄清楚如何从索引

构建x,y,z索引

我发现了另一个stackoverflow问题,但这对我来说不起作用,指标总是关闭

2 个答案:

答案 0 :(得分:8)

x = index / (size * size)
y = (index / size) % size
z = index % size

答案 1 :(得分:0)

以下是我将3D坐标来回转换为扁平坐标的功能。

我已经在一定程度上对它们进行了测试,所以他们应该做好这个工作。 这些函数是用C ++编写的,但由于它们主要是关于数学的,所以差异 与任何其他语言是最小的:))

inline CL_UINT getCellIndex(CL_UINT ix, CL_UINT iy, CL_UINT iz,
                            CL_UINT rx, CL_UINT ry, CL_UINT rz)
{
    return iz * rx * ry + iy * rx + ix;
}

inline CL_UINT3 getCellRefFromIndex(CL_UINT idx,CL_UINT rx, 
                                    CL_UINT ry,CL_UINT rz)
{
    CL_UINT3 result;
    CL_UINT a = (rx * ry);
    result.z = idx / a;
    CL_UINT b = idx - a * result.z;
    result.y = b / rx;
    result.x = b % rx;
    return result;
}