Просто переберите строки, начиная с нижней строки, и следите за текущим сдвигом пикселей по оси x (как число с плавающей или фиксированной точкой).После каждого ряда вы увеличиваете смещение на желаемый постоянный наклон.Для целей рисования вы берете ближайшее целое число соответствующего сдвига пикселей в каждой строке.
В псевдокоде это будет:
slope = 0.2; // one pixel shift every five rows
shift = 0.0; // current pixelshift along x-axis
for (row = rows-1; row>=0; row--) {
integershift = round(shift) // round to nearest integer
for (column = columns-1; column>=0; column--) {
sourcecolumn = column + integershift; // get the pixel from this column
if (sourcecolumn < columns)
outputImage[row][column] = inputImage[row][sourcecolumn];
else // draw black if we're outside the inputImage
outputImage[row][column] = 0;
}
shift += slope;
}
Это в основном алгоритм рисования линий Брезенхема , поэтому вы должны найти множество деталей для реализации.