Алгоритм DDA-линии

Материал из testwiki
Перейти к навигации Перейти к поиску

Алгоритм DDA-линии[1] растеризует отрезок прямой между двумя заданными точками, используя вычисления в числах с плавающей запятой или целых числах.

Алгоритм

Пусть отрезок задан вещественными координатами концов (x1,y1); (x2,y2). Растровыми (целочисленными) координатами концевых точек становятся округлённые значения исходных координат: xstart=round⁡(x1), ystart=round⁡(y1); xend=round⁡(x2), yend=round⁡(y2)[2].

Большее по абсолютной величине число, (xend−xstart) или (yend−ystart), увеличенное на 1 принимается за количество шагов L цикла растеризации.

В начале цикла вспомогательным вещественным переменным x и y присваиваются исходные координаты начала отрезка: x=x1; y=y1. На каждом шаге цикла эти вещественные переменные получают приращения (xend−xstart)/L; (yend−ystart)/L. Растровые же координаты, продуцируемые на каждом шаге, являются результатом округления соответствующих вещественных значений x и y.

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

Модифицированный алгоритм DDA-линии применяется для растеризации окружностей.

Примечания

Шаблон:Примечания

См. также

Шаблон:Wikibooks

Литература

Ссылки

  1. ↑ Аббревиатура DDA в названии этого алгоритма машинной графики происходит от Шаблон:Lang-en — цифровой дифференциальный анализатор.
  2. ↑ Вообще говоря, если вещественные координаты концов отрезка заданы в некоторой логической системе координат, то соответствующие им растровые координаты определяются на основании правил пересчёта, установленных для конкретной пары систем координат: логической и экранной.