Pregunta

sé cómo simular una matriz 2D en una matriz lineal utilizando [x + y * width] como un índice lineal.

I puedo extender esto a arrays 3D:. [x + y * width + z * width * height]

¿Hay una fórmula general para array N-dimensional?

Estoy buscando una respuesta independiente del idioma.

¿Fue útil?

Solución

Claro. Sólo la ampliación de su ejemplo da x + y*width + z*width*height + w*width*height*depth + ...

En otras palabras, dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...

Otros consejos

Eh, si quieres algo de código ... :-) C es independiente del idioma suficiente, ya?

Supongamos entrada: ubicación [dimensiones]

Supongamos existe una tabla maxBound [dimensiones] que contiene los límites máximos de cada dimensión de la mesa.

int index = 0;
int multiplier = 1;
for (int i = 0;i < dimensions;i++)
{
  index += location[i] * multiplier;
  multiplier *= maxBound[i];
}

Su índice va a terminar en el campo de índice.

Test:
location = [3,4,5]
maxBound = [10,20,30]
loop initial: index = 0, multiplier = 1.
loop i=0: index = 3, multiplier = 10.
loop i=1: index = 43, multiplier = 200.
loop i=2: index = 1043, multipler = 6000.

Creo que esto tiene sentido, pero esto es sólo saliendo de la parte superior de mi cabeza.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top