Estoy trabajando con una clase nativa que representa una imagen 2D como una matriz 1D. Si desea cambiar un píxel, por ejemplo, necesita saber cómo derivar el índice de las x,ycoordenadas.
Entonces, digamos que tenemos una matriz 1D array1dcomo esta:
array1d = [ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y ]
En el contexto de nuestro programa, array1drepresenta una cuadrícula 2D:
a b c d e
f g h i j
k l m n o
p q r s t
u v w x y
Y queremos realizar operaciones array1dcomo:
- Obtenga el valor en las
x,ycoordenadas (en este ejemplo,1,2daríal) - Obtenga cualquier subcuadrícula usando
x,y,width,height(1,2,2,2daría[l, m, q, r]) - Establezca el valor en cualquier
x,ycoordenada (etc.)
¿Cómo hacemos esto?
data-structures
math
graphics
GladstoneMantener
fuente
fuente

Respuestas:
2D / 1D: el mapeo es bastante simple. Dados x e y, y tamaños de matriz 2D
width(para la dirección x) yheight(para la dirección y), puede calcular el índice correspondienteien el espacio 1D (basado en cero) pory la operación inversa es
Puede ampliar esto fácilmente a 3 o más dimensiones. Por ejemplo, para una matriz 3D con dimensiones "ancho", "alto" y "profundidad":
y reversa:
fuente