Как отрисовать линию на матрице

Имеется матрица 20x20. Необходимо отрисовать растровую линию от точки x1 до точки x2. С прямыми линиями вопросов нет, но вот с линиями под углом возникают проблемы. Отрисовка самой матрицы идет через перебор элементов двумерного массива. Нужно лишь обозначить за true элементы массива, которые должны быть отрисованы иным цветом и образовывать линию.

Например: нужно обозначить элементы в массиве от [2;5] к [7;15]. Как вычислить элементы в массиве, которые нужно перевести в true, чтобы образовалась более-менее приличная линия?


Ответы (1 шт):

Автор решения: MBo

Посмотрите алгоритм Брезенхэма для рисования отрезков

Псевдокод для отрезка в первом квадранте:

plotLine(x0, y0, x1, y1)
    dx = x1 - x0
    dy = y1 - y0
    D = 2*dy - dx
    y = y0

    for x from x0 to x1
        plot(x,y)
        if D > 0
            y = y + 1
            D = D - 2*dx
        end if
        D = D + 2*dy
→ Ссылка