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

Anonim

Digital Differential Algorithm (DDA) a Bresenhams algoritmusa a digitális vonalak algoritmusainak rajzolása, és a számítógépes grafika a képek rajzolására használatos. Korábban analitikai analizátorokat használtunk a képpontok kiszámításához, és így a vonalrajzok lehetővé tették. De ezek az analitikai módszerek nem annyira pontosak, mint a digitális módszerek, hogy ezekkel a digitális algoritmusokkal most és minden területen más módszerekkel is találunk minőségi módszereket számítógépes grafikában. Ezeknek az algoritmusoknak a bemutatása tökéletes példa. Mielőtt folytatnánk, nézzük meg az algoritmusok mögött álló koncepciót. Bár úgy tűnik, hogy nem terjed ki a vita, fontos, hogy rámutassanak az alapvető különbségek a kettő között. Ha tényleg ismeri az algoritmusokat, akkor ugorhat az ezen oldal végén található tényleges eltérésekre.

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

A DDA-t leginkább a számítógépes grafika vonalainak rajzolására használják, és valós értékeket használ, miközben megjósolja a következő pixelértékeket. Tegyük fel, hogy a kezdeti pixelérték (X0, Y0) (X0, Y0) és a célpixel (X1, Y1) (X1, Y1). Megtanuljuk, hogyan számítsuk ki a cél pixel értékeket az ismert pixelértékből (X0, Y0) (X0, Y0) az alábbiak szerint.

  • Hogyan kell kiszámítani a célpont értékét a DDA használatával?
Itt van a bemenet (X0, Y0) (X0, Y0), és meg kell határoznunk, hogy a vonal párhuzamos-e az x tengellyel vagy az y tengellyel. Ennek megállapításához számítsuk ki a kiindulási és a célpixelértékek közötti különbséget.

dy = Y1 - Y0 2. lépés:

Most azonosítottuk a különbséget, és az x tengely mentén húzzuk a vonalat, ha a "dx" nulla ellenkező esetben az y-tengellyel párhuzamos vonalat kell húznunk. Itt a tényleges számítás a számítógép nyelvével kapcsolatban.

ha (abszolút (dx)> abszolút (dy)) Lépés = abszolút (dx);

else

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

3. lépés:

Itt az ideje, hogy azonosítsa az aktuális "x" koordinátát vagy az "y" koordináták képpont értékét a vonal felhívásához.

X növekmény = dx / (float) lépések;

Y növekmény = dy / (float) lépések; 4. lépés:

Ezt addig kell kiszámítani, amíg el nem éri az úti cél pixelét. A DDA-algoritmus lekerekíti a pixelértéket a legközelebbi egész számra a számítás során. Itt van a kódminta arról, amit most tárgyaltunk.

A (int v = 0; v

{ x = x + X növekmény;

y = y + Y növekmény;

putpixel (Kerek (x), Kerek (y));

}

Végeztünk a vonal rajzolásával a DDA használatával, és menjünk át a Bresenham most!

Mi a Bresenham algoritmusa?

Ez egy digitális vonalrajz-algoritmus, amelyet 1962-ben a Bresenham feltalált, és ezért kapta ugyanazt a nevet. Ez az algoritmus pontosabb, és a vonal rajzolása során kivonást és kiegészítést használ a pixelérték kiszámításához. A Bresenham algoritmusának pontossága megbízható görbék és körök rajzolása közben is. Nézzük meg, hogyan működik ez az algoritmus.

1. lépés:

A Bresenham algoritmusai a kezdeti pixelkoordinátát (x

a + 1

, y a ) vállalják. 2. lépés: Automatikusan kiszámítja a következő pixelértéket (x a + 1

, y a + 1 ), itt az "a" az inkrementális érték és az algoritmust az általuk létrehozott egyenletek hozzáadásával vagy kivonásával számítja ki. Ez az algoritmus kiszámítja a pontos értékeket, kerekítés nélkül, és könnyebbnek tűnik! Bresenham algoritmusa numerikus példája: Tekintsük a pontokat (0, 0) és (-8, -4), és húzzunk egy vonalat ezek közé a pontok közé a Bresenham algoritmusa segítségével.

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

  • Most számítsuk ki a különbségeket az alábbiak szerint.

Δx = x2-x1 = -8-0 = 8

Ezért az inkrementális érték x = Δx / x2 = 8 / -8 = -1.

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

Ezért az inkrementális érték y = Δy / y2 = 4 / -4 = -1.

Változó határozat = e = 2 * (Δy) - (Δx)

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

az eredményül kapott értékeket tabuláljuk. Az y-koordináta értékeit egy döntési változó alapján állítjuk be, és itt csak figyelmen kívül hagyjuk számításait.

0

0

0

0 (- 1, 0) -
-2 -1 0 (- 3, -1)
-3 < -1 Egy érték (- 4, -2) -4
-2 0 (- 5, -2) -5
-6 -3 0 (- 7, -3)
-7 -3 Egy érték (- 8, -4)
-8 -4 0 A DDA és a Bresenham algoritmusa
: Aritmetikai számítás: A DDA valós értékeket használ a számításaiban lebegő pontok használatával. A következő pixel vagy pontértékek differenciálegyenletekkel vannak meghatározva X növekmény = dx / (float) lépések
Y növekmény = dy / (float) lépések Itt nincs rögzített állandók, hanem Bresenham algoritmájában rögzített pontok számtani számításokban használják. A Bresenham algoritmusa az egész számtani aritmetikát alkalmazza, ellentétben a DDA-val. Alkalmazott művelet típusa: A DDA a differenciálegyenleteket szaporítással és osztással méri. Itt észreveheted ugyanazt a lépést, X increment = dx / (float) lépéseket. A Bresenham algoritmusa addíciós és kivonási műveleteket alkalmaz, és itt a következő pixelérték-számítási egyenletben (x
a + 1 , y a + 1 ) észrevehetjük. Az aritmetika Bresenhamban egyszerűbb, mint a DDA.

Hatékonyság: Mint korábban már tárgyaltuk, a Bresenham algoritmusa egyszerűbb aritmetikát alkalmaz, mint a DDA, és hatékony 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 a Bresenham algoritmusa csak teljes aritmetikát használ, csak kiegészítésekkel és kivonatokkal együtt. Ez jelentősen csökkenti a számításaihoz 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 pontosabb, mint a DDA.

Kerekítés:

  • Itt nézze meg a DDA számítását.

X növekmény = dx / (float) lépések Észrevehette az úszót, ezért nem kerekíti le az értékeket, míg a Bresenham algoritmusa lekerekíti az értékeket a legközelebbi egész számra. Ezért az alkalmazott értékek egyszerűbbek Bresenham algoritmájában. Mit rajzol? A DDA képes vonalak és görbék rajzolására a rajzvonalakon kívül. A Bresenham algoritmusa is képes a fent említetteket rajzolni, és pontossága valóban magasabb, mint a DDA. Hasonlóképpen, a Bresenham algoritmusa hatékony görbéket hozhat létre, mint a DDA. Mindkét algoritmust háromszögek és sokszögek is rajzolhatnak. Melyik drága?

  • Mivel a DDA tartalmazza a kerekítést is, drágább, mint a Bresenham algoritmusa.

Melyik az optimalizált algoritmus?

  • A mi fenti megbeszélésünkből nagyon világos, hogy a Bresenham algoritmusa optimális a sebesség, a költségek és a műveletek használata szempontjából. Nézzük meg a különbségeket táblázatos formában.
  • S. Nem Különbségek
  • Digitális differenciális algoritmus Bresenham algoritmusa

1.

Miért van a név?

  • Csak azért, mert az egyenletek digitális megvalósítása volt, megvan a neve.

Ezt 1962-ben J. E. Bresenham találtatta fel, és így a név.

  • 2.

Számítások

  • Keményebb számításokat igényel.

Az alkalmazott számítások valóban egyszerűbbek.

3.

A műveletek típusai Többszörözést és megosztást alkalmaz. Az itt használt minta differenciálegyenletek Xincrement = dx / (float) lépések, Yincrement = dy / (float) lépések. Alkalmazásokat és kivonásokat használ. A minta számítása itt lehet, mint (x
a + 1 , y a + 1 ).
4. Aritmetikai számítási értékek Lebegőpontos értékeket használ. Csak egész számokat használ.
5. Hatékonyság A komplex aritmetika kisebb hatékonyságot eredményez.

Egyszerűbb számtani eredmények nagyobb hatékonyságot eredményeznek.

6. Sebesség A sokszorosítás és a megosztási műveletek használata sok időt vesz igénybe a számítási folyamatokhoz. A hozzáadási és kivonási műveletek használata kisebb időt vesz igénybe, mint a DDA. 7.
Pontosság A pontosság kisebb. Pontosabb. 8.
Kerekítés Valós értékeket használ és soha nem kerüli ki az értékeket. Az értékeket a legközelebbi egész számra állítja be. 9.
Rajzolási képesség Képes vonalakat, köröket és görbéket rajzolni, de kisebb pontossággal. Háromszögek és sokszögek is rajzolhatók ezzel az algoritmussal. Képes vonalakat, köröket és görbéket rajzolni nagyobb hatékonysággal. Háromszögek és sokszögek is rajzolhatók ezzel az algoritmussal. 10.
A számítás költsége Ez drága, mivel magában foglalja a lekerekítést is. A Bresenham algoritmusa olcsóbb, mint a DDA. 11.
Optimált algoritmus Nem optimalizált algoritmus Ez egy optimalizált algoritmus. Minden lehetséges különbséget a DDA és a Bresenham algoritmusa között kezeltünk. Talán ismétlődőnek tűnhet, de van valamilyen ok arra, hogy megemlítsük ezeket a pontokat, és akkor megismerkedned, ha teljesen megérted. Ha továbbra is úgy érzed, hogy létezik kétértelműség, kérjük, hagyjon bennünket egy megjegyzés. Tanuljunk meg együtt a megfelelő tudással!