Цифровой дифференциальный анализатор (графический алгоритм) - Digital differential analyzer (graphics algorithm)

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

В своей простейшей реализации для линейных случаев, таких как линии, алгоритм DDA интерполирует значения в интервале, вычисляя для каждого xя уравнения xя = хя-1 +1, гя = yя-1 + m, где m - склон линии. Этот наклон можно выразить в DDA следующим образом:

Фактически, любые две последовательные точки (x, y), лежащие на этом отрезке, должны удовлетворять уравнению.

Спектакль

Метод DDA может быть реализован с использованием плавающая точка или же целое число арифметика. Собственная реализация с плавающей запятой требует одной операции сложения и одной операции округления для каждого интерполированного значения (например, координаты x, y, глубины, компонента цвета и т. Д.) И результата вывода. Этот процесс эффективен только тогда, когда FPU с быстрым добавлением и округлением будет доступна операция.

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

DDA хорошо подходят для аппаратной реализации и могут быть конвейерными для максимальной пропускной способности.

Алгоритм

Линейный DDA начинается с вычисления меньшего из dy или dx для единичного приращения другого. Затем производится выборка линии с единичными интервалами по одной координате, и соответствующие целочисленные значения, ближайшие к траектории линии, определяются для другой координаты.

Рассматривая линию с положительным наклоном, если наклон меньше или равен 1, мы производим выборку через единичные интервалы x (dx = 1) и вычисляем последовательные значения y как

Подстрочный индекс k принимает целые значения, начиная с 0, для 1-й точки и увеличивается на 1, пока не будет достигнута конечная точка. Значение y округляется до ближайшего целого числа, чтобы соответствовать пикселю экрана.

Для линий с наклоном больше 1 мы меняем роль x и y, т.е. выбираем при dy = 1 и вычисляем последовательные значения x как

Аналогичные вычисления выполняются для определения положения пикселей вдоль линии с отрицательным наклоном. Таким образом, если абсолютное значение наклона меньше 1, мы устанавливаем dx = 1, если т.е. начальная крайняя точка находится слева.

Программа

Программа алгоритма DDA на Turbo C ++:

 1 #включают <graphics.h> 2  3 #включают <iostream.h> 4 #включают <math.h> 5 #включают <dos.h> 6 #включают <conio.h> 7  8 пустота главный( ) 9 {10   плавать Икс, у, x1, y1, x2, y2, dx, dy, шаг;11   int я, б-г = ОБНАРУЖИТЬ, гм;12   initgraph(&б-г, &гм, "C:TURBOC3BGI ");13   14   cout << «Введите значение x1 и y1:»;15   cin >> x1 >> y1;16   cout << "Введите значение x2 и y2:";17   cin >> x2 >> y2;18   19   dx = (x2 - x1);20   dy = (y2 - y1);21   если (пресс(dx) >= пресс(dy))22     шаг = пресс(dx);23   еще24     шаг = пресс(dy);25   dx = dx / шаг;26   dy = dy / шаг;27   Икс = x1;28   у = y1;29   я = 1;30   пока (я <= шаг) {31     путпиксель(Икс, у, 5);32     Икс = Икс + dx;33     у = у + dy;34     я = я + 1;35     задерживать(100);36   }37   получить();38   закрыть();39 }

Смотрите также

Рекомендации

http://www.museth.org/Ken/Publications_files/Museth_SIG14.pdf


  • Алан Ватт: 3D компьютерная графика, 3-е издание 2000 г., стр. 184 (Растеризация краев). ISBN  0-201-39855-9