Цифровой дифференциальный анализатор (графический алгоритм) - 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
Эта статья включает Список ссылок, связанное чтение или внешняя ссылка, но его источники остаются неясными, потому что в нем отсутствует встроенные цитаты.Июнь 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
- Алан Ватт: 3D компьютерная графика, 3-е издание 2000 г., стр. 184 (Растеризация краев). ISBN 0-201-39855-9