Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kompyuternaya_grafika_1-20.docx
Скачиваний:
9
Добавлен:
24.09.2019
Размер:
528.26 Кб
Скачать

11.Алгоритмы вывода графических примитивов. Прямое вычисление координат.

Алгоритмы машинной графики можно разделить на два уровня: нижний и верхний. Группа алгоритмов нижнего уровня предназначена для реализации графических примитивов (линий, окружностей, заполнений и т.п.).

Среди алгоритмов нижнего уровня можно выделить следующие группы:

  • Простейшие в смысле используемых математических методов и отличающиеся простотой реализации. Такие алгоритмы не являются наилучшими по объему выполняемых вычислений или требуемым ресурсам памяти.

  • Поэтому можно выделить вторую группу алгоритмов, использующих более сложные математические предпосылки (но часто и эвристические) и отличающихся большей эффективностью.

  • К третьей группе следует отнести алгоритмы, которые могут быть без больших затруднений реализованы аппаратно (допускающие распараллеливание, рекурсивные, реализуемые в простейших командах). В эту группу могут попасть и алгоритмы, представленные в первых двух группах.

  • Наконец, к четвертой группе можно отнести алгоритмы со специальным назначением (например, для устранения лестничного эффекта).

Прямое вычисление координат. Пусть заданы координаты конечных точек отрезка. Координаты внутреннейточки отрезка вычисляются следующим образом:

или

Для того чтобы свести к минимуму вычисления в цикле, все операции над константами выносятся из тела цикла:

В цикле вычисляется

С учетом того, что вычисление дробей в компьютере происходит с определенной погрешностью, возможна ситуация, когда на последнем шаге цикла x окажется не равным x2. Это необходимо учитывать при использовании алгоритма.

+ Простота, ясность построения алгоритма;

+ Возможность работы с нецелыми значениями координат отрезка.

- Использование операций с дробными числами или целочисленных операций умножения и деленияобуславливает малую скорость;

- При вычислении координат путем добавления приращений может накапливаться ошибка.

12. Инкрементные алгоритмы. Алгоритм Брезенхэма вывода прямой линии.

Инкрементные алгоритмы выполняются как последовательное вычисление координат соседних пикселов путем добавления приращений координат. Приращения рассчитываются на основе анализа функции погрешности. В цикле выполняются только целочисленные операции сравнения и сложения/вычитания. Достигается повышение быстродействия для вычисления каждого пиксела по сравнению с прямым способом.

Алгоритм Брезенхэма– это алгоритм, определяющий, какие точки двумерного растра нужно закрасить, чтобы получить близкое приближение прямой линии между двумя заданными точками.

Следует выбрать, восьмисвязный или же четырёхсвязный алгоритм использовать.

Смысл алгоритма состоит в том, что мы выбираем, какую точку закрасить по соседству с той, в которой сейчас стоит перо на основании ошибки. Например, если «ошибка» по xсоставила больше 0.5, то мы прибавляем (или же вычитаем) значение xна 1, то есть перемещаем перо или влево, или вправо.

Один из вариантов алгоритма Брезенхэма:

xerr:=0; yerr:=0;

dx:=x2-x1; dy:=y2-y1;

Если dx>0, то incX:=1;

dx=0, то incX:=0;

dx<0, то incX:=-1;

Если dy>0, то incY:=1;

dy=0, то incY:=0;

dy<0, то incY:=-1;

dx:=|dx|; dy:=|dy|;

Если dx>dy, то d:=dx иначе d:=dy;

x:=x1; y:=y1;

Закрасить пиксел с координатами (x, y);

Выполнить d раз цикл:

xerr:=xerr+dx;

yerr:=yerr+dy;

Если xerr>=d, то xerr:=xerr-d, x:=x+incX;

Если yerr>=d, то yerr:=yerr-d, y:=y+incY;

Закрасить пиксел с координатами (x, y).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]