Сканирование алгоритмов линейного и линейного рисования

Опубликовано: 6 Октября, 2022

СКАН Преобразование строки:

  • Линия соединяет две точки.
  • Это основной элемент графики.
  • Вам понадобятся две точки, между которыми можно провести линию, чтобы провести линию.

Линия или отрезок линии может быть однозначно описана двумя точками в соответствии с геометрией. Мы также знаем из алгебры, что линия может быть определена наклоном, обычно обозначаемым буквой m, и точкой пересечения оси Y, обозначаемой буквой b. Линия в компьютерной графике обычно определяется двумя конечными точками. Однако большинство алгоритмов рисования линий вычисляют наклон и точку пересечения по оси y в качестве промежуточных результатов.

Алгоритмы рисования линий:
Учитывая присущие растровому отображению ограничения, цель каждого метода рисования линий состоит в том, чтобы получить наилучшее возможное приближение к идеальной линии. Прежде чем перейти к конкретным алгоритмам рисования линий, неплохо было бы подумать о потребностях таких алгоритмов в целом.

Основные критерии проектирования следующие.

  • Прямые линии отображаются как прямые линии.
  • Прямые линии начинаются и заканчиваются точно.
  • Отображаемые линии должны иметь постоянную яркость по всей длине, независимую от длины линии и ориентации.
  • Линии следует рисовать быстро.

Метод-1: Прямой метод:
В этом алгоритме у нас есть две конечные точки. Мы находим наклон линии, используя обе точки, и подставляем наклон в уравнение линии y = mx + b.

Затем мы находим значение b, полагая x и y равными 0. После этого у нас есть связь между x и y. Теперь мы увеличиваем значение x и находим соответствующее значение y.
Эти значения будут промежуточными точками линии. Найдя промежуточные точки, мы нанесем эти точки и нарисуем линию.

Метод-2: Алгоритм DDA (цифровой дифференциальный анализатор):
В этом алгоритме используется инкрементный метод. Это означает, что мы можем найти следующие координаты, используя прошлые координаты в качестве ориентира. В этом методе анализируется разница точек пикселя, и в соответствии с анализом можно провести линию.

Мы начнем с начальной позиции и будем продвигаться к конечной позиции, ища промежуточные места. Наклон линии будет отношением разности координат y и разности координат x.

Δy = ( y2 -y1 ), Δx = (x2 - x1) 
where, (x1, y1) and (x2, y2) are the endpoints.

Алгоритм цифрового дифференциального анализатора основан на значениях Δx и Δy.

Δy = m * Δx , Δx = Δy / m

Значение наклона будет либо положительным, либо отрицательным. Если значение наклона положительное, то значения Δx и Δy увеличиваются, в противном случае их значения уменьшаются.

         (i).   If (m < 1): xN = x1 + 1 ,  yN = y1 + m  
         (ii).  If (m > 1): xN = x1 + 1 / m ,  yN = y1 +1  
         (iii).  If (m = 1): xN = x1 + 1 , yN = y1 + 1 

Метод-3: Генерация линий Брезенхэма:
Другой процедурой преобразования инкрементного сканирования является алгоритм Брезенхэма. Большим преимуществом этого алгоритма является то, что он использует только целочисленные вычисления.

Расчет этого метода невероятно быстр, поэтому линия рисуется быстро. Нам понадобятся две конечные точки, а затем мы должны найти параметры решения.

Предположим, что (x1,y1) и (x2,y2) — две точки.

So, dx = x2-x1 and dy = y2-y1

Формула для параметра решения: di = 2dy – dx.

           ->   If di >= 0:
             Plotted points are,
             di +1 = di + 2dy - 2dx  ( i+1 is in base of d )
            xN = x1 + 1  ,  yN = y1 + 1  
            -> If di < 0:
             Plotted points are,
           di +1 = di + 2dy  ( i+1 is in base of d )
           xN = x1 + 1  , yN = y1