Разница между DDA и алгоритмом Брезенхэма

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

Что такое цифровой дифференциальный алгоритм (DDA)?

DDA в основном используется для рисования линий в компьютерной графике и использует реальные значения при прогнозировании значений следующих пикселей. Предположим, что начальное значение пикселя равно (X0, Y0) (X0, Y0), а значение целевого пикселя - (X1, Y1) (X1, Y1). Мы узнаем, как рассчитать значения пикселей назначения из известного значения пикселей (X0, Y0) (X0, Y0), как показано ниже.

  • Как вычислить значение пункта назначения с использованием DDA?

Шаг 1: Здесь у нас есть вход (X0, Y0) (X0, Y0), и мы должны определить, идет ли линия параллельно оси x или оси y. Чтобы найти это, давайте теперь посчитаем разницу между начальным и конечным значениями пикселей.

дх = х1 - х0

dy = Y1 - Y0

Шаг 2: Теперь мы определили разницу, и мы должны нарисовать линию вдоль оси x, если «dx» равно нулю, в противном случае мы должны нарисовать линию, параллельную оси y. Вот фактическое вычисление с точки зрения компьютерного языка.

if (absolute (dx)> absolute (dy))

Шаги = абсолютные (дх);

еще

Шаги = абсолютные (dy);

Шаг 3: Теперь пришло время определить действительные координаты «x» или значения пикселей координаты «y», чтобы нарисовать линию..

Инкремент X = dx / (float) шагов;

Приращение Y = dy / (с плавающей точкой) шагов;

Шаг 4: Это должно быть вычислено, пока мы не достигнем конечного пикселя. Алгоритм DDA округляет значение пикселя до ближайшего целочисленного значения при выполнении вычисления. Вот пример кода того, что мы обсуждали сейчас.

Для (int v = 0; v < Steps; v++)

х = х + х приращение;

y = y + Y приращение;

putpixel (Round (x), Round (y));

Мы закончили с проведением линии с использованием DDA и теперь давайте перейдем к Брезенхэму!

Что такое алгоритм Брезенхэма?

Это также цифровой алгоритм рисования линий, который был изобретен Брезенхэмом в 1962 году, и поэтому он получил то же название. Этот алгоритм является более точным и использует вычитание и сложение для вычисления значения пикселя при рисовании линии. Точность алгоритма Брезенхэма надежна при рисовании кривых и кругов. Давайте посмотрим, как работает этот алгоритм.

Шаг 1: Алгоритмы Брезенхэма принимают начальную пиксельную координату как (ха + 1, Y).

Шаг 2: Он автоматически вычисляет значение следующего пикселя как (ха + 1, Yа + 1), Здесь «a» - это инкрементное значение, и алгоритм вычисляет его, складывая или вычитая уравнения, которые он сформировал.

Этот алгоритм вычисляет точные значения без округления и выглядит проще!

  • Численный пример алгоритма Брезенхэма:

Теперь рассмотрим точки (0,0) и (-8, -4) и проведем линию между этими точками, используя алгоритм Брезенхэма..

Данные даны, (x1, y1) = (0, 0) и (x2, y2) = (-8, -4).

Давайте теперь вычислим дифференциальные значения, как показано ниже.

? X = x2-x1 = -8-0 = 8

Следовательно, значение приращения для x = ∆x / x2 = 8 / -8 = -1.

Δy = y2-y1 = -4-0 = 4

Следовательно, значение приращения для y = ∆y / y2 = 4 / -4 = -1.

Переменная решения = e = 2 * (∆y) - (∆x)

Следовательно, е = 2 * (4) - (8) = 8-8 = 0

С помощью приведенного выше вычисления давайте сведем в таблицу полученные значения. Значения y-координаты корректируются на основе переменной решения, и мы просто игнорируем ее вычисление здесь.

пиксель Икс Y                                              Переменная решения
(0,0) 0 0 0
(-1,0) -1 0 Ценность
(-2, -1) -2 -1 0
(-3, -1) -3 -1 Ценность
(-4, -2) -4 -2 0
(-5, -2) -5 -2 Ценность
(-6, -3) -6 -3 0
(-7, -3) -7 -3 Ценность
(-8, -4) -8 -4 0

Различия между DDA и алгоритмом Брезенхэма:

  • Арифметический расчет:

DDA использует реальные значения в своих вычислениях с использованием чисел с плавающей запятой. Следующие значения пикселей или точек определяются с помощью дифференциальных уравнений

Шаг приращения = dx / (float) шагов

Y увеличение = dy / (с плавающей точкой) шагов

Здесь не используются фиксированные константы, но в алгоритме Брезенхэма фиксированные точки используются в арифметических вычислениях. Алгоритм Брезенхэма использует целочисленную арифметику, в отличие от DDA.

  • Тип используемой операции:

DDA решает дифференциальные уравнения с операциями умножения и деления. Вы можете заметить то же самое здесь, X increment = dx / (float) шагов. Алгоритм Брезенхэма использует операции сложения и вычитания, и вы можете заметить то же самое здесь в следующем уравнении вычисления значения пикселя (xа + 1, Yа + 1). Арифметика в Брезенхэме проще по сравнению с DDA.

  • Эффективность:

Как мы уже говорили ранее, алгоритм Брезенхэма использует более простую арифметику, чем DDA, и это приводит к эффективным результатам.

  • Скорость: Поскольку DDA использует целые числа с плавающей запятой наряду с операциями умножения и деления, оно сравнительно медленнее, в то время как алгоритм Брезенхэма использует только целочисленную арифметику вместе только с сложениями и вычитаниями. Это значительно сокращает время, затрачиваемое на его вычисления, и, следовательно, быстрее, чем DDA.
  • Точность: Хотя DDA использует значения с плавающей запятой, точность DDA не так лучше, чем у Bresenham. Различные факторы влияют на эту концепцию и, следовательно, Брезенхем более точен, чем DDA.
  • Округление: Просто посмотрите на вычисление DDA здесь.

Шаг приращения = dx / (float) шагов

Вы могли заметить 'float', и поэтому он не округляет значения, тогда как алгоритм Брезенхема округляет значения до ближайшего целого числа. Таким образом, используемые значения проще в алгоритме Брезенхэма.

  • Что это рисует?

DDA способен рисовать круги и кривые отдельно от рисования линий. Алгоритм Брезенхэма также способен отрисовывать все перечисленные выше, и его точность действительно выше, чем у DDA. Точно так же алгоритм Брезенхэма может дать более эффективные кривые, чем те, которые получены DDA. Оба алгоритма могут также рисовать треугольники и многоугольники.

  • Который дорогой?

Поскольку DDA также включает округление, это дороже, чем использование алгоритма Брезенхэма.

  • Какой оптимизированный алгоритм?

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

Давайте посмотрим на различия в табличной форме.

S.No Отличия в Цифровой дифференциальный алгоритм Алгоритм Брезенхема
1. Почему имя? Просто потому, что это была цифровая реализация уравнений, она получила название. Он был изобретен Дж. Э. Брезенхамом в 1962 году и отсюда и название.
2. Расчеты Это включает в себя более сложные вычисления. Используемые вычисления действительно проще.
3. Типы используемых операций Он использовал умножения и деления. Используемые здесь примеры дифференциальных уравнений представляют собой шаги Xincrement = dx / (float),

Инкремент = dy / (плавающие) шаги.

Он использует сложения и вычитания. Пример расчета здесь можно обозначить как (ха + 1, Yа + 1).
4. Арифметические вычисления значений Он использует значения с плавающей запятой. Он использует только целочисленные значения.
5. КПД Комплексная арифметика приводит к меньшей эффективности. Более простая арифметика приводит к большей эффективности.
6. скорость Использование операций умножения и деления занимает много времени для его вычислительных процессов.. Использование операций сложения и вычитания занимает меньше времени, чем DDA.
7. точность Меньше точности. Это точнее.
8. Округление Он использует реальные значения и никогда не округляет значения. Округляет значения до ближайших целых.
9. Возможность рисования Он способен рисовать линии, круги и кривые, но с меньшей точностью. С помощью этого алгоритма мы можем даже нарисовать треугольники и многоугольники. Он способен рисовать линии, круги и кривые с большей эффективностью. Треугольники и многоугольники также можно нарисовать с помощью этого алгоритма.
10. Стоимость вычислений Это дорого, так как требует округления. Использование алгоритма Брезенхэма дешевле, чем DDA.
11. Оптимизированный алгоритм Это не оптимизированный алгоритм Это оптимизированный алгоритм.

Мы рассмотрели все возможные различия между DDA и алгоритмом Брезенхэма. Это может даже показаться повторяющимся, но есть веская причина для повторного упоминания этих моментов, и вы узнаете, когда полностью это поймете. Если вы все еще чувствуете, что существует двусмысленность, пожалуйста, оставьте нам комментарий. Давайте учиться вместе, делясь соответствующими знаниями!