Что делать, в общем, ясно:
Где желтая линия - первоначальная строка пикселей; зеленая - конечная; серые линии - края пикселя; красные - линии переноса.
Одна проблема: не могу описать алгоритм.
Мысли крутятся около такой последовательности действий:
1) Создаем аккамулятор для сохранения сдвига (в данном случае сдвиг равен примерно 0.2)
2) Проходим циклом от (в данном случае) 3 до 18
3) В каждом проходе берем пиксель, умножаем его каналы на X, прибавляем у нему следующий пиксель, уаналы которого умножаем на Y (чему равны X и Y - не знаю )
Но есть моменты, реализацию которых я вообще не могу придумать:
- что делать, когда в один пиксель надо упихать 3 или, скажем, 8 штук?
- что делать, когда надо растягивать, а не сжимать изображение?
Может кто знает теорию на тему, почитать что б? Мозг работать отказывается, а реализовать эту задумку все же надо.
[offtop]
- Исходная картинка
- ????
- PROFIT!