Я работаю с собственным классом, который представляет 2D-изображение в виде одномерного массива. Например, если вы хотите изменить один пиксель, вам нужно узнать, как получить индекс из x,y
координат.
Итак, допустим, у нас есть одномерный массив, array1d
подобный этому:
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 ]
В контексте нашей программы array1d
представлена 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
И мы хотим выполнить array1d
такие операции , как:
- Получить значение в
x,y
координатах (в этом примере,1,2
дастl
) - Получить любую подсеть, используя
x,y,width,height
(1,2,2,2
даст[l, m, q, r]
) - Установите значение в любой
x,y
координате (и т. Д.)
Как мы это делаем?
data-structures
math
graphics
GladstoneKeep
источник
источник
Ответы:
2D / 1D - отображение довольно простое. Учитывая x и y, а также размеры двумерного массива
width
(для направления x) иheight
(для направления y), вы можете рассчитать соответствующий индексi
в 1D пространстве (на основе нуля):и обратная операция
Вы можете легко расширить это до 3 или более измерений. Например, для 3D-матрицы с размерами «ширина», «высота» и «глубина»:
и наоборот:
источник