Jump to content

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

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

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

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

Производительность

[ редактировать ]

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

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

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

Алгоритм

[ редактировать ]

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

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

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

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

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

Программа

[ редактировать ]

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

#include <graphics.h>
#include <iostream.h>
#include <math.h>
#include <dos.h>
#include <conio.h>

void main()
{
  float x,
  float y,
  float x1, y1,
  float x2, y2, dx, dy, step;
  int i, gd = DETECT, gm;
  initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
  cout << "Enter the value of x1 and y1: ";
  cin >> x1 >> y1;
  cout << "Enter the value of x2 and y2: ";
  cin >> x2 >> y2;
  
  dx = (x2 - x1);
  dy = (y2 - y1);

  if (abs(dx) >= abs(dy))
    step = abs(dx);
  else
    step = abs(dy);

  dx = dx / step;
  dy = dy / step;
  x = x1;
  y = y1;
  i = 0;

  while (i <= step) {
    putpixel(round(x), round(y), 5);
    x = x + dx;
    y = y + dy;
    i = i + 1;
    delay(100);
  }

  getch();
  closegraph();
}

См. также

[ редактировать ]

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


  • Алан Ватт: 3D компьютерная графика , 3-е издание 2000 г., стр. 184 (Растеризация краев). ISBN   0-201-39855-9
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0bc46bd00ae2d6ca1dbe90329fadac15__1721770200
URL1:https://arc.ask3.ru/arc/aa/0b/15/0bc46bd00ae2d6ca1dbe90329fadac15.html
Заголовок, (Title) документа по адресу, URL1:
Digital differential analyzer (graphics algorithm) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)