Масштабирование в пиксельной графике — изменение размеров многомерного двоичного массива (матрицы) для сжатия / расширения в зависимости от значения заливки

Я пытаюсь выяснить эту странную проблему, с которой столкнулся.

У меня есть многомерный массив, который по сути является 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%, я в порядке с этим, пока у меня остается именно то количество, которое я указал.

Я дурачусь с алгоритмами масштабирования пиксельной графики, но не могу понять, как справиться с этой проблемой.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]