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,y
coordenadas.
Entonces, digamos que tenemos una matriz 1D array1d
como 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, array1d
representa 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 array1d
como:
- Obtenga el valor en las
x,y
coordenadas (en este ejemplo,1,2
daríal
) - Obtenga cualquier subcuadrícula usando
x,y,width,height
(1,2,2,2
daría[l, m, q, r]
) - Establezca el valor en cualquier
x,y
coordenada (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 correspondientei
en 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