2D / 1D - o mapeamento é bem simples. Dados os tamanhos xey e array 2D width
e height
, é possível calcular o índice de acordo i
no espaço 1D (baseado em zero) por
i = x + width*y;
e a operação inversa é
x = i % width; // % is the "modulo operator", the remainder of i / width;
y = i / width; // where "/" is an integer division
Você pode estender isso facilmente para três ou mais dimensões. Por exemplo, para uma matriz 3D com dimensões "largura", "altura" e "profundidade":
i = x + width*y + width*height*z;
e inversa:
x = i % width;
y = (i / width)%height;
z = i / (width*height);