Я пытаюсь выяснить эту странную проблему, с которой столкнулся.
У меня есть многомерный массив, который по сути является 2D-матрицей, состоящей из двоичных значений. 1 представляет область, которая заполнена, 0 пуст. Я отношусь к этому как к «пиксельной графике», хотя приложение сильно отличается.
Что я хочу сделать, это расширить массив, чтобы соответствовать определенное количество единиц (добавление строк & столбцы, дублирующие «пиксели»), как бы при увеличении изображения.
Вот что было бы грубым примером того, с чем я работаю:
$shape = array(
array(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0),
array(0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0),
array(0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0),
array(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0),
array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
array(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0),
array(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0),
array(0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0),
array(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0),
array(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0),
array(0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0),
array(0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0),
array(1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1),
array(1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1),
);
В дальнейшем формы станут более хитрыми, но я использую это как образец для испытаний, однако они всегда будут сплошными и двоичными, как эта звезда.
Прямо сейчас значение заполнения этого массива равно 135 (сколько их). Допустим, я хочу изменить значение заполнения ровно на 309, 2048 или 15. Есть ли удобный способ сделать это в PHP, сохранив форму исходной матрицы?
Чтобы уточнить, я не хочу увеличивать матрицу на х количество столбцов & строк, я хочу указать, сколько именно я хочу в окончательной матрице, если совпадение не на 100%, я в порядке с этим, пока у меня остается именно то количество, которое я указал.
Я дурачусь с алгоритмами масштабирования пиксельной графики, но не могу понять, как справиться с этой проблемой.
Задача ещё не решена.
Других решений пока нет …