TL; DR
Правильный ответ может быть написан различными способами, но мне больше всего нравится, когда его можно написать так, чтобы его было легко понять и визуализировать.Вот точный ответ:
(width * height * z) + (width * y) + x
TS; DR
Визуализируйте его:
someNumberToRepresentZ + someNumberToRepresentY + someNumberToRepresentX
someNumberToRepresentZ
указывает, на какой матрице мы находимся (depth
),Чтобы знать, на какой матрице мы находимся, мы должны знать, насколько велика каждая матрица.Матрица имеет размер width * height
, простой.Вопрос, который нужно задать: " сколько матриц перед матрицей, на которой я работаю?"Ответ: z
:
someNumberToRepresentZ = width * height * z
someNumberToRepresentY
указывает, в какой строке мы находимся (height
).Чтобы узнать, в какой строке мы находимся, мы должны знать, насколько велика каждая строка: каждая строка имеет размер 1 * и имеет размер width
.Вопрос, который нужно задать: « сколько строк перед строкой, в которой я нахожусь?».Ответ: y
:
someNumberToRepresentY = width * y
someNumberToRepresentX
указывает, в каком столбце мы находимся (width
).Чтобы узнать, в каком столбце мы находимся, мы просто используем x
:
someNumberToRepresentX = x
Тогда наша визуализация
someNumberToRepresentZ + someNumberToRepresentY + someNumberToRepresentX
становится
(width * height * z) + (width * y) + x