Különbség a DDA és a Bresenham algoritmusa között A különbség
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?
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);
elseLé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 + 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). Δ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 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: 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? Melyik az optimalizált algoritmus? 1. Miért van a név? Ezt 1962-ben J. E. Bresenham találtatta fel, és így a név. Számítások Az alkalmazott számítások valóban egyszerűbbek. 3.A Bresenham algoritmusai a kezdeti pixelkoordinátát (x
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.