Unterschied zwischen DDA und Bresenhams Algorithmus
- 1160
- 249
- Fr. Fine Zschunke
Der digitale Differentialalgorithmus (DDA) und der Algorithmus des Bresenhams sind die digitalen Linienzeichnungsalgorithmen und werden in Computergrafiken verwendet, um Bilder zu zeichnen. Zuvor verwendeten wir analytische Analysatoren, um die Pixel zu berechnen, und dadurch wurden Linienzeichnungen ermöglicht. Diese analytischen Methoden sind jedoch nicht so genau wie die digitalen Methoden, dass wir mit der Verwendung dieser digitalen Algorithmen jetzt und wie bei jedem Bereich auch Methoden mit höherer Qualität in Computergrafiken erfunden haben. Die Erfindung dieser Algorithmen ist ein perfektes Beispiel. Bevor wir fortfahren, schauen wir uns das Konzept hinter diesen Algorithmen an. Obwohl es aus dem Rahmen unserer Diskussion herauskommt, ist es wichtig, auf die grundlegenden Unterschiede zwischen den beiden hinzuweisen. Wenn Sie mit den Algorithmen wirklich vertraut sind, können Sie zu den tatsächlichen Unterschieden am Ende dieser Seite springen.
Was ist digitaler Differentialalgorithmus (DDA)?
Eine DDA wird hauptsächlich zum Zeichnen von Zeilen in Computergrafiken verwendet und verwendet reale Werte, während die nächsten Pixelwerte vorhergesagt werden. Nehmen wir den anfänglichen Pixelwert als (x0, y0) (x0, y0) und das Zielpixel als (x1, y1) (x1, y1) an. Wir werden lernen, wie Sie die Zielpixelwerte aus dem bekannten Pixelwert (x0, y0) (x0, y0) wie unten berechnen.
- So berechnen Sie den Zielpunktwert mit DDA?
Schritt 1: Hier haben wir die Eingabe (x0, y0) (x0, y0) und wir sollten feststellen, ob die Linie parallel zur x-Achse oder zur y-Achse läuft. Um dies zu ermitteln, berechnen wir nun die Differenz zwischen der Anfangs- und den Zielpixelwerten.
dx = x1 - x0
dy = y1 - y0
Schritt 2: Jetzt haben wir den Unterschied identifiziert und sollten die Linie entlang der x-Achse zeichnen, wenn 'DX' Null ist. Andernfalls sollten wir die Linie parallel zur y-Achse ziehen. Hier ist die tatsächliche Berechnung in Bezug auf die Computersprache.
if (absolut (dx)> absolut (dy))
Schritte = absolut (dx);
anders
Schritte = absolut (DY);
Schritt 3: Jetzt ist es an der Zeit, die tatsächliche "x" -Koordinate oder die "y" -Koordinaten -Pixelwerte zu identifizieren, um die Linie zu zeichnen.
X Increment = dx / (float) Schritte;
Y Increment = dy / (float) Schritte;
Schritt 4: Dies muss berechnet werden, bis wir das Zielpixel erreichen. Der DDA-Algorithmus rundet den Pixelwert auf den nächsten Ganzzahlwert, während die Berechnung durchführt. Hier ist das Code -Beispiel dessen, was wir jetzt besprochen haben.
Für (int v = 0; v < Steps; v++)
x = x + x Inkrement;
y = y + y Inkrement;
putpixel (rund (x), rund (y));
Wir sind fertig damit, die Linie mit der DDA zu zeichnen und lassen uns jetzt mit den Bresenhams übergehen!
Was ist Bresenhams Algorithmus??
Es ist auch ein digitaler Algorithmus zum Zeichnen von Linien und wurde im Jahr 1962 von Bresenham erfunden, und deshalb hat es denselben Namen. Dieser Algorithmus ist genauer und verwendet Subtraktion und Ergänzung zum Berechnen des Pixelwerts beim Zeichnen der Zeile. Die Genauigkeit des Algorithmus des Bresenhams ist auch beim Zeichnen von Kurven und Kreisen zuverlässig. Lassen Sie uns nachsehen, wie dieser Algorithmus funktioniert.
Schritt 1: Die Algorithmen von Bresenham nehmen die anfängliche Pixelkoordinate als (xA+1, yA).
Schritt 2: Es berechnet automatisch den nächsten Pixelwert als (xA+1, yA+1), Hier ist 'a'.
Dieser Algorithmus berechnet genaue Werte ohne Abrundung und sieht auch einfacher aus!
- Numerisches Beispiel für Bresenhams Algorithmus:
Betrachten wir nun die Punkte (0,0) und (-8, -4) und zeichnen wir eine Linie zwischen diesen Punkten mit dem Algorithmus des Bresenhams.
Gegebene Daten, (x1, y1) = (0, 0) und (x2, y2) = (-8, -4).
Berechnen wir nun die Differentialwerte wie unten.
∆x = x2-x1 = -8-0 = 8
Daher der inkrementelle Wert für x = ∆x / x2 = 8 / -8 = -1.
∆y = y2-y1 = -4-0 = 4
Daher der inkrementelle Wert für y = ∆y / y2 = 4 / -4 = -1.
Entscheidungsvariable = e = 2*(∆Y)-(∆x)
Daher ist e = 2*(4)-(8) = 8-8 = 0
Lassen Sie uns mit der obigen Berechnung die resultierenden Werte tabellieren. Die Werte von Y-Koordinate werden basierend auf einer Entscheidungsvariablen angepasst, und wir ignorieren nur ihre Berechnung hier.
Pixel | X | y | Entscheidungsvariable |
(0,0) | 0 | 0 | 0 |
(-1,0) | -1 | 0 | Ein Wert |
(-2, -1) | -2 | -1 | 0 |
(-3, -1) | -3 | -1 | Ein Wert |
(-4, -2) | -4 | -2 | 0 |
(-5, -2) | -5 | -2 | Ein Wert |
(-6, -3) | -6 | -3 | 0 |
(-7, -3) | -7 | -3 | Ein Wert |
(-8, -4) | -8 | -4 | 0 |
Unterschiede zwischen DDA und Bresenhams Algorithmus:
- Arithmetische Berechnung:
Die DDA verwendet reale Werte in ihren Berechnungen mit der Verwendung von schwimmenden Punkten. Die nächsten Pixel- oder Punktwerte werden mit Differentialgleichungen bestimmt
X Increment = dx / (float) Schritte
Y Increment = Dy / (Float) Schritte
Hier werden keine festen Konstanten verwendet, aber in Bresenhams Algorithmus werden Fixpunkte in arithmetischen Berechnungen verwendet. Der Algorithmus von Bresenham verwendet im Gegensatz zur DDA die ganzzahlige Arithmetik.
- Art des verwendeten Betriebs:
Die DDA löst die Differentialgleichungen mit Multiplikation und Abteilungsbetrieb. Sie könnten das gleiche hier bemerken, x Increment = dx / (float) Schritte. Der Algorithmus des Bresenham verwendet Additions- und Subtraktionsvorgänge und Sie können dies hier in seiner nächsten Pixel -Wertberechnungsgleichung (x) feststellenA+1, yA+1). Die Arithmetik ist in Bresenham im Vergleich zur DDA einfacher.
- Effizienz:
Wie wir bereits erläutert haben, verwendet Bresenhams Algorithmus einfachere Arithmetik als die DDA und führt zu effizienten Ergebnissen.
- Geschwindigkeit: Da DDA schwimmende Punktzahlen zusammen mit Multiplikations- und Divisionsoperationen verwendet, ist er vergleichsweise langsamer, während der Algorithmus von Bresenham nur die ganzzahlige Arithmetik zusammen mit Ergänzungen und Subtraktionen verwendet. Dies reduziert die Zeit für seine Berechnungen erheblich und daher schneller als die DDA.
- Genauigkeit: Obwohl DDA schwimmende Punktwerte verwendet, ist die Genauigkeit von DDA nicht so besser wie die Bresenhams. Eine Vielzahl von Faktoren beeinflusst dieses Konzept und daher ist Bresenhams genauer als die DDA.
- Abrundung: Schauen Sie sich hier die Berechnung der DDA an.
X Increment = dx / (float) Schritte
Sie könnten den "Schwimmer" bemerken und deshalb die Werte nicht abrundet, während der Algorithmus des Bresenham die Werte auf die nächste Ganzzahl abrundet. Daher sind die verwendeten Werte in Bresenhams Algorithmus einfacher.
- Was zeichnet es??
Die DDA ist in der Lage, Kreise und Kurven abzuziehen, abgesehen vom Zeichnen von Linien. Der Algorithmus des Bresenham ist auch in der Lage, alle oben genannten zu zeichnen, und seine Genauigkeit ist wirklich höher als die der DDA. In ähnlicher Weise könnte der Algorithmus des Bresenhams effiziente Kurven als die von der DDA erzeugten Krümmungen erstellen. Beide Algorithmen können auch Dreiecke und Polygone zeichnen.
- Das ist teuer?
Da DDA auch abgerundet wird, ist es teuer als die Verwendung von Bresenhams Algorithmus.
- Das ist ein optimierter Algorithmus?
Aus unserer obigen Diskussion ist es sehr klar, dass der Algorithmus des Bresenhams optimiert ist, was Geschwindigkeit, Kosten und Nutzung von Operationen hat.
Schauen wir uns die Unterschiede in tabellarischer Form an.
S.NEIN | Unterschiede in | Digitaler Differentialalgorithmus | Bresenhams Algorithmus |
1. | Warum der Name? | Nur weil es die digitale Implementierung der Gleichungen war, hat es den Namen. | Es wurde von j erfunden.E. Bresenham im Jahr 1962 und damit der Name. |
2. | Berechnungen | Es beinhaltet härtere Berechnungen. | Die verwendeten Berechnungen sind wirklich einfacher. |
3. | Arten von Operationen verwendet | Es verwendete Multiplikationen und Abteilungen. Die hier verwendeten Stichprobendifferentialgleichungen sind Xincrement = dx / (Float) Schritte, Yincrement = dy / (float) Schritte.
| Es verwendet Ergänzungen und Subtraktionen. Die Probenberechnung hier kann wie (xA+1, yA+1). |
4. | Arithmetische Berechnungswerte | Es verwendet schwimmende Punktwerte. | Es verwendet nur die Ganzzahlwerte. |
5. | Effizienz | Komplexe arithmetische führt zu einer geringeren Effizienz. | Einfacherer arithmetischer Unternehmen führt zu mehr Effizienz. |
6. | Geschwindigkeit | Die Verwendung von Multiplikationen und Abteilungsvorgängen braucht viel Zeit für seine Berechnungsprozesse. | Die Verwendung von Additions- und Subtraktionsvorgängen dauert weniger Zeit als die DDA. |
7. | Genauigkeit | Es ist in Genauigkeit weniger. | Es ist genauer. |
8. | Abrundung | Es verwendet echte Werte und rundet die Werte nie ab. | Es rundet die Werte auf die nächsten Ganzzahlwerte ab. |
9. | Zeichnungsfähigkeit | Es ist in der Lage, Linien, Kreise und Kurven zu zeichnen, aber mit geringerer Genauigkeit. Mit diesem Algorithmus können wir sogar Dreiecke und Polygone zeichnen. | Es ist in der Lage, Linien, Kreise und Kurven mit größerer Effizienz zu zeichnen. Dreiecke und Polygone können auch mit diesem Algorithmus gezogen werden. |
10. | Kosten für Berechnungen | Es ist teuer, da es auch abgerundet wird. | Die Verwendung von Bresenhams Algorithmus ist billiger als die DDA. |
11. | Optimierter Algorithmus | Es ist kein optimierter Algorithmus | Es ist ein optimierter Algorithmus. |
Wir haben uns mit jedem möglichen Unterschied zwischen der DDA und dem Algorithmus des Bresenhams befasst. Es mag sich sogar wiederholen, aber es gibt einen gültigen Grund, diese Punkte wieder zu erwähnen, und Sie würden erfahren, wenn Sie sie vollständig verstehen. Wenn Sie immer noch das Gefühl haben, dass es eine Mehrdeutigkeit gibt, hinterlassen Sie uns bitte einen Kommentar. Lassen Sie uns gemeinsam lernen, indem wir das richtige Wissen teilen!