Rozdíl mezi DDA a Bresenhamovým algoritmem

Digitální diferenciální algoritmus (DDA) a Bresenhamův algoritmus jsou algoritmy pro kreslení digitálních čar a používají se v počítačové grafice k kreslení obrázků. Dříve jsme používali analytické analyzátory pro výpočet pixelů, a tím bylo umožněno kreslení čar. Tyto analytické metody však nejsou tak přesné jako digitální metody, které s využitím těchto digitálních algoritmů nyní a stejně jako v každém oboru vynalezeme i metody vyšší kvality v počítačové grafice. Vynález těchto algoritmů je dokonalým příkladem. Než budeme pokračovat, podívejme se na koncept těchto algoritmů. Ačkoli to vypadá mimo rozsah naší diskuse, je nezbytné poukázat na základní rozdíly mezi nimi. Pokud jste s algoritmy opravdu obeznámeni, můžete přejít na skutečné rozdíly umístěné na konci této stránky.

Co je to digitální diferenciální algoritmus (DDA)?

DDA se většinou používá k kreslení čar v počítačové grafice a používá skutečné hodnoty při předpovídání hodnot dalších pixelů. Předpokládejme počáteční hodnotu pixelu jako (X0, Y0) (X0, Y0) a cílový pixel jako (X1, Y1) (X1, Y1). Naučíme se, jak vypočítat hodnoty cílových pixelů ze známé hodnoty pixelů (X0, Y0) (X0, Y0), jak je uvedeno níže.

  • Jak vypočítat hodnotu cílového bodu pomocí DDA?

Krok 1: Zde máme vstup (X0, Y0) (X0, Y0) a měli bychom zjistit, zda čára běží paralelně s osou x nebo osou y. Abychom to našli, vypočtěte nyní rozdíl mezi počáteční a cílovou hodnotou pixelu.

dx = X1 - X0

dy = Y1 - Y0

Krok 2: Nyní jsme zjistili rozdíl a měli bychom nakreslit čáru podél osy x, pokud je „dx“ nula, jinak bychom měli nakreslit čáru rovnoběžnou s osou y. Zde je skutečný výpočet, pokud jde o počítačový jazyk.

if (absolutní (dx)> absolutní (dy))

Kroky = absolutní (dx);

jiný

Kroky = absolutní (dy);

Krok 3: Nyní je čas určit skutečnou „x“ souřadnici nebo „y“ souřadnice hodnot pixelů, abyste mohli nakreslit čáru.

X přírůstek = dx / (float) kroky;

Y přírůstek = dy / (float) kroky;

Krok 4: To se musí spočítat, dokud nedosáhneme cílového pixelu. Algoritmus DDA při výpočtu zaokrouhlí hodnotu pixelu na nejbližší celé číslo. Zde je ukázka kódu toho, o čem jsme diskutovali nyní.

Pro (int v = 0; v < Steps; v++)

x = x + přírůstek X;

y = y + Y přírůstek;

putpixel (Kolo (x), Kolo (y));

S DDA jsme nakreslili čáru a nyní se přesuneme k Bresenhamu!

Co je Bresenhamův algoritmus?

Je to také algoritmus digitálního kreslení čar a byl vynalezen Bresenhamem v roce 1962, a proto má stejné jméno. Tento algoritmus je přesnější a při kreslení čáry použil odčítání a sčítání hodnoty pixelu. Přesnost Bresenhamova algoritmu je spolehlivá i při kreslení křivek a kruhů. Podívejme se, jak tento algoritmus funguje.

Krok 1: Bresenhamovy algoritmy předpokládají počáteční souřadnici pixelu jako (xa + 1, yA).

Krok 2: Automaticky vypočítá další hodnotu pixelu jako (xa + 1, ya + 1), 'A' je přírůstková hodnota a algoritmus ji vypočítá přidáním nebo odečtením rovnic, které vytvořil.

Tento algoritmus počítá přesné hodnoty bez zaokrouhlení a vypadá také snadněji!

  • Numerický příklad Bresenhamova algoritmu:

Podívejme se nyní na body (0,0) a (-8, -4) a vytvořme mezi těmito body hranici pomocí Bresenhamova algoritmu.

Daná data, (x1, y1) = (0, 0) a (x2, y2) = (-8, -4).

Nyní vypočtěte diferenciální hodnoty, jak je uvedeno níže.

∆x = x2-x1 = -8-0 = 8

Proto přírůstková hodnota pro x = ∆x / x2 = 8 / -8 = -1.

∆y = y2-y1 = -4-0 = 4

Proto přírůstková hodnota pro y = ∆y / y2 = 4 / -4 = -1.

Proměnná rozhodnutí = e = 2 * (∆y) - (∆x)

Proto e = 2 * (4) - (8) = 8-8 = 0

Výše uvedeným výpočtem si vytvoříme výsledné hodnoty. Hodnoty souřadnic y se upravují na základě rozhodovací proměnné a zde její výpočet ignorujeme.

Pixel X y                                              Proměnná rozhodnutí
(0,0) 0 0 0
(-1,0) -1 0 Hodnota
(-2, -1) -2 -1 0
(-3, -1) -3 -1 Hodnota
(-4, -2) -4 -2 0
(-5, -2) -5 -2 Hodnota
(-6, -3) -6 -3 0
(-7, -3) -7 -3 Hodnota
(-8, -4) -8 -4 0

Rozdíly mezi DDA a Bresenhamovým algoritmem:

  • Aritmetický výpočet:

DDA používá skutečné hodnoty ve svých výpočtech s využitím pohyblivých bodů. Další hodnoty pixelů nebo bodů jsou určeny diferenciálními rovnicemi

X přírůstek = dx / (float) kroků

Y přírůstek = dy / (float) kroky

Zde se nepoužívají žádné pevné konstanty, ale v Bresenhamově algoritmu se v aritmetických výpočtech používají pevné body. Bresenhamův algoritmus používá celé číslo aritmetické, na rozdíl od DDA.

  • Typ použité operace:

DDA řeší diferenciální rovnice pomocí multiplikačních a dělicích operací. Tady si můžete všimnout totéž, X přírůstek = dx / (float) kroků. Algoritmus Bresenham používá operace sčítání a odčítání a totéž si můžete všimnout zde ve své další rovnici pro výpočet hodnoty pixelů (xa + 1, ya + 1). Aritmetika je v Bresenhamově jednodušší ve srovnání s DDA.

  • Účinnost:

Jak jsme již diskutovali dříve, Bresenhamův algoritmus používá jednodušší aritmetiku než DDA a vede k efektivním výsledkům.

  • Rychlost: Protože DDA používá celá čísla s plovoucí desetinnou čárkou spolu s operacemi násobení a dělení, je poměrně pomalejší, zatímco Bresenhamův algoritmus používá jen celé aritmetické číslo a pouze sčítání a odčítání. To výrazně snižuje čas potřebný pro jeho výpočty, a proto je rychlejší než DDA.
  • Přesnost: Přestože DDA používá hodnoty s pohyblivou řádovou čárkou, přesnost DDA není tak lepší jako u Bresenhamu. Tento koncept ovlivňuje celá řada faktorů, a proto je Bresenham's přesnější než DDA.
  • Zaokrouhlování: Stačí se podívat na výpočet DDA zde.

X přírůstek = dx / (float) kroků

Můžete si všimnout 'float', a proto nezaokrouhluje hodnoty, zatímco Bresenhamův algoritmus zaokrouhlí hodnoty na nejbližší celé číslo. Použité hodnoty jsou proto v Bresenhamově algoritmu jednodušší.

  • Co to kreslí?

DDA je schopen kreslit kruhy a křivky odděleně od kreslení čar. Bresenhamův algoritmus je také schopen nakreslit všechny výše uvedené a jeho přesnost je skutečně vyšší než u DDA. Podobně by Bresenhamův algoritmus mohl přijít s účinnými křivkami, než které vytváří DDA. Oba algoritmy dokážou kreslit také trojúhelníky a polygony.

  • Což je drahé?

Protože DDA zahrnuje zaokrouhlování také, je to drahé než použití Bresenhamova algoritmu.

  • Což je optimalizovaný algoritmus?

Z výše uvedené diskuse je zcela zřejmé, že Bresenhamův algoritmus je optimalizovaný z hlediska rychlosti, nákladů a využití operací..

Podívejme se na rozdíly v podobě tabulky.

S. Ne Rozdíly v Digitální diferenciální algoritmus Bresenhamův algoritmus
1. Proč to jméno?? Jenom proto, že se jednalo o digitální implementaci rovnic, dostala jméno. Vynalezl jej J.E. Bresenham v roce 1962 a odtud název.
2. Výpočty Zahrnuje tvrdší výpočty. Použité výpočty jsou opravdu jednodušší.
3. Druhy použitých operací Využívalo násobení a dělení. Vzorové diferenciální rovnice zde použité jsou kroky Xincrement = dx / (float),

Yincrement = dy / (float) kroky.

Používá sčítání a odčítání. Výpočty vzorků zde lze označit jako (xa + 1, ya + 1).
4. Aritmetické výpočtové hodnoty Používá hodnoty s pohyblivou řádovou čárkou. Používá pouze celočíselné hodnoty.
5. Účinnost Složité aritmetické výsledky mají za následek nižší účinnost. Jednodušší aritmetika vede k vyšší účinnosti.
6. Rychlost Použití multiplikačních a dělicích operací zabere hodně času na výpočetní procesy. Použití operací sčítání a odčítání zabere méně času než DDA.
7. Přesnost Je to menší přesnost. Je přesnější.
8. Zaokrouhlování Používá skutečné hodnoty a nikdy zaokrouhlí hodnoty. Zaokrouhlí hodnoty na nejbližší celé hodnoty.
9. Schopnost kreslení Je schopen kreslit čáry, kruhy a křivky, ale s menší přesností. Můžeme dokonce kreslit trojúhelníky a polygony pomocí tohoto algoritmu. Je schopen kreslit čáry, kruhy a křivky s větší účinností. Pomocí tohoto algoritmu lze také kreslit trojúhelníky a polygony.
10. Náklady na výpočty Je to drahé, protože zahrnuje i zaokrouhlování. Použití Bresenhamova algoritmu je levnější než DDA.
11. Optimalizovaný algoritmus Nejedná se o optimalizovaný algoritmus Je to optimalizovaný algoritmus.

Zabývali jsme se každým možným rozdílem mezi DDA a Bresenhamovým algoritmem. Může to dokonce vypadat, že se opakuje, ale existuje nějaký oprávněný důvod k tomu, abych tyto body znovu zmínil, a ty bys to věděl, až tomu úplně porozumíš. Pokud máte stále pocit, že existuje nejasnost, zanechte nám prosím komentář. Učme se společně sdílením správných znalostí!