Különbség a DDA és a Bresenham algoritmus között

A digitális differenciál algoritmus (DDA) és a Bresenhams algoritmus a digitális vonalrajzolási algoritmusok, és a számítógépes grafikában használják képeket. Korábban elemző elemzőket használtunk a pixelek kiszámításához, és ezáltal lehetővé tettük a vonalrajzokat. De ezek az analitikai módszerek nem annyira pontosak, mint a digitális módszerek, hogy ezeknek a digitális algoritmusoknak a felhasználásával most, és mint minden területen, a számítógépes grafikában is magasabb szintű módszereket találtunk ki. Ezen algoritmusok feltalálása tökéletes példa. Mielőtt folytatnánk, vizsgáljuk meg ezen algoritmusok mögött meghúzódó koncepciót. Noha úgy tűnik, hogy a vita nem tartozik, elengedhetetlen rámutatni a kettő közötti alapvető különbségekre. Ha igazán ismeri az algoritmusokat, ugorhat az oldal végén található tényleges különbségekre.

Mi az a digitális differenciál algoritmus (DDA)?

A DDA-t főként vonalak vonására használják a számítógépes grafikában, és valós értékeket használ a következő pixelértékek előrejelzésekor. Tegyük fel a kezdeti pixel értékét (X0, Y0) (X0, Y0) és a célpont pixelt mint (X1, Y1) (X1, Y1). Megtanuljuk, hogyan lehet kiszámítani a rendeltetési képpontok értékeit az ismert pixelértékből (X0, Y0) (X0, Y0), az alábbiak szerint.

  • A célpont értékének kiszámítása a DDA segítségével?

1. lépés: Itt van a bemenet (X0, Y0) (X0, Y0), és meg kell határoznunk, hogy a vonal párhuzamosan fut-e az x tengelygel vagy az y tengelygel. Ennek megállapításához számítsuk ki a kezdeti és a célpont pixelértékek közötti különbséget.

dx = X1 - X0

dy = Y1 - Y0

2. lépés: Most már azonosítottuk a különbséget, és húzzuk a vonalat az x tengely mentén, ha 'dx' nulla, egyébként húzzuk a vonalat az y tengelyre párhuzamosan. Itt van a tényleges számítás a számítógépes nyelv szempontjából.

if (abszolút (dx)> abszolút (dy))

Lépések = abszolút (dx);

más

Lépések = abszolút (dy);

Lépés-3: Itt az ideje, hogy meghatározzuk a tényleges 'x' koordinátát vagy az 'y' koordináták pixelértékeit a vonal húzásához.

X növekedés = dx / (úszó) lépések;

Y növekedés = dy / (úszó) lépések;

Lépés-4: Ezt addig kell kiszámítani, amíg el nem éri a célpontot. A DDA algoritmus a pixel értékét a legközelebbi egész értékre kerekíti a számítás elvégzése közben. Itt található a kódminta annak, amit most megvitattunk.

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

x = x + X növekedés;

y = y + Y növekedés;

put pixel (kerek (x), kerek (y));

Befejeztük a vonal húzását a DDA segítségével, és térjünk tovább a Bresenhamhez!

Mi a Bresenham algoritmusa??

Ez egy digitális vonalhúzó algoritmus is, amelyet Bresenham talált fel 1962-ben, ezért kapta ugyanazt a nevét. Ez az algoritmus pontosabb, és a vonal húzásakor kivonást és kiegészítést alkalmazott a pixelérték kiszámításához. A Bresenham algoritmusának pontossága görbék és körök rajzolásakor is megbízható. Nézzük meg, hogyan működik ez az algoritmus.

1. lépés: A Bresenham algoritmusai a pixel kezdeti koordinátáját (xA + 1, yegy).

2. lépés: Automatikusan kiszámítja a következő pixel értéket (xA + 1, yA + 1), Itt 'a' a növekményes érték, és az algoritmus kiszámítja azt a létrehozott egyenletek összeadásával vagy kivonásával.

Ez az algoritmus pontos értékeket számol le kerekítés nélkül, és könnyebben néz ki!

  • Bresenham algoritmusának numerikus példája:

Most nézzük meg a (0,0) és (-8, -4) pontokat, és húzzunk egy vonalat e pontok között a Bresenham algoritmusával.

Adott adatok, (x1, y1) = (0, 0) és (x2, y2) = (-8, -4).

Most számítsuk ki a differenciálértékeket az alábbiak szerint.

Ax = x2-x1 = -8-0 = 8

Ezért az x = ∆x / x2 = 8 / -8 = -1 növekményes értéke.

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

Ezért az y = ∆y / y2 = 4 / -4 = -1 növekményes értéke.

Döntési változó = e = 2 * (∆y) - (∆x)

Ezért e = 2 * (4) - (8) = 8-8 = 0

A fenti számítás segítségével tabuláljuk az eredményül kapott értékeket. Az y-koordináta értékeit egy döntési változó alapján állítják be, és itt csak figyelmen kívül hagyjuk annak kiszámítását.

Pixel x y                                              Döntési változó
(0,0) 0 0 0
(-1,0) -1 0 Egy érték
(-2, -1) -2 -1 0
(-3, -1) -3 -1 Egy érték
(-4, -2) -4 -2 0
(-5, -2) -5 -2 Egy érték
(-6, -3) -6 -3 0
(-7, -3) -7 -3 Egy érték
(-8, -4) -8 -4 0

Különbségek a DDA és Bresenham algoritmusa között:

  • Számtani számítás:

A DDA a valós értékeket használja számításaiban a lebegőpontok használatával. A következő pixel- vagy pontértékeket differenciálegyenletekkel határozzuk meg

X növekedés = dx / (úszó) lépések

Y növekedés = dy / (úszó) lépések

Itt nem használunk állandó állandót, de Bresenham algoritmusában a rögzített pontokat használjuk aritmetikai számításokban. A Bresenham algoritmusa Integer számtani értéket használ, ellentétben a DDA-val.

  • A használt művelet típusa:

A DDA a differenciálegyenleteket szorzás és osztás műveletekkel oldja meg. Ugyanezt észlelheti itt is, X növekmény = dx / (úszó) lépés. A Bresenham algoritmusa összeadási és kivonási műveleteket használ, és ezt itt észreveheti a következő pixelérték-számítási egyenletben (xA + 1, yA + 1). A számtani képlet egyszerűbb a Bresenham-féle DDA-hoz képest.

  • Hatékonyság:

Amint azt korábban már tárgyaltuk, Bresenham algoritmusa egyszerűbb számtani módszert használ, mint a DDA, és eredményes eredményeket eredményez.

  • Sebesség: Mivel a DDA lebegőpontos egész számokat használ a szorzás és osztás műveletekkel együtt, viszonylag lassabb, míg Bresenham algoritmusa csak egész számtani értéket használ, kiegészítve és kivonva önmagában. Ez jelentősen csökkenti a számításokhoz szükséges időt, és így gyorsabb, mint a DDA.
  • Pontosság: Bár a DDA lebegőpontos értékeket használ, a DDA pontossága nem olyan jobb, mint a Bresenhamé. Számos tényező befolyásolja ezt a fogalmat, ezért a Bresenham-érték pontosabb, mint a DDA.
  • Lekerekítés: Csak itt nézze meg a DDA kiszámítását.

X növekedés = dx / (úszó) lépések

Figyelembe veheti a „lebegést”, ezért nem kerekíti az értékeket, míg a Bresenham algoritmusa az értékeket a legközelebbi egészre kerekíti. Ezért az alkalmazott értékek egyszerűbbek Bresenham algoritmusában.

  • Mit rajzol??

A DDA képes köröket és görbéket rajzolni a vonalvonalon kívül. A Bresenham algoritmusa képes a fentiek mindegyikének rajzolására, és pontossága valóban magasabb, mint a DDA-nál. Hasonlóképpen, a Bresenham algoritmusa hatékony görbékkel is felmerülhet, mint amelyeket a DDA előállított. Mindkét algoritmus rajzolhat háromszöget és sokszöget is.

  • Ami drága?

Mivel a DDA magában foglalja a kerekítést is, ez drága, mint a Bresenham algoritmusának használata.

  • Ami egy optimalizált algoritmus?

A fenti megbeszélésből kitűnik, hogy a Bresenham algoritmusa optimalizált algoritmus a sebesség, a költség és a műveletek felhasználása szempontjából..

Nézzük meg a különbségeket táblázatos formában.

S.No Különbségek Digitális differenciál algoritmus Bresenham algoritmusa
1. Miért a név?? Csak azért, mert az egyenletek digitális megvalósítása volt, megkapta a nevét. Bresenham J. E. találta fel 1962-ben, és ez a név is.
2. számítások Szigorúbb számításokat tartalmaz. Az alkalmazott számítások valóban egyszerűbbek.
3. Az alkalmazott műveletek típusai Szorzásokat és osztásokat használt. Az itt alkalmazott minta differenciálegyenletek Xincrement = dx / (úszó) lépések,

Yincrement = dy / (úszó) lépések.

Összeadásokat és kivonásokat használ. A mintaszámítást itt meg lehet jelölni (xA + 1, yA + 1).
4. Számtani számítási értékek Lebegőpontos értékeket használ. Csak egész értékeket használ.
5. Hatékonyság A komplex aritmetika kisebb hatékonyságot eredményez. Az egyszerűbb aritmetika nagyobb hatékonyságot eredményez.
6. Sebesség A szorzás és az osztás műveletek használata sok időt vesz igénybe a számítási folyamatainál. Az összeadási és kivonási műveletek felhasználása kevesebb időt vesz igénybe, mint a DDA.
7. Pontosság Ez kevésbé pontos. Pontosabb.
8. Lekerekítés Valós értékeket használ, és soha nem kerekíti az értékeket. Az értékeket a legközelebbi egész értékre kerekíti.
9. Rajzolási képesség Képesek vonalak, körök és görbék rajzolására, de kevésbé pontosan. Ezzel az algoritmussal még háromszögeket és sokszögeket is rajzolhatunk. Nagyobb hatékonysággal képes vonal, kör és görbe rajzolására. Háromszögek és sokszögek szintén rajzolhatók ezzel az algoritmussal.
10. A számítások költségei Ez drága, mivel magában foglalja a lekerekítést is. A Bresenham algoritmusa olcsóbb, mint a DDA.
11. Optimalizált algoritmus Ez nem egy optimalizált algoritmus Ez egy optimalizált algoritmus.

Minden lehetséges különbséget megvizsgáltunk a DDA és a Bresenham algoritmusa között. Lehet, hogy ismétlődőnek tűnik, de van megfelelő ok arra, hogy ezeket a pontokat újra megemlítsük, és akkor tudhatnánk, ha teljesen megértjük. Ha továbbra is úgy érzi, hogy kétértelműség van, kérjük, írjon nekünk egy megjegyzést. Tanuljunk együtt a megfelelő tudás megosztásával!