10 Unterschied zwischen Bresenhams und DDA-Strichzeichnungsalgorithmus

In der Computergrafik müssen wir fortlaufende Grafikobjekte mit diskreten Pixeln darstellen. Dieser Vorgang wird als Scankonvertierung bezeichnet. Jedes Grafiksystem muss die Grundelemente wie Linien, Kreise und Ellipsen in eine Sammlung von Pixeln umwandeln.

Linienzeichnungsalgorithmen werden verwendet, um eine Linie in diskreten grafischen Medien zu zeichnen. In der Computergrafik gibt es drei Strichzeichnungsalgorithmen.

  1. DDA-Algorithmus (Digital Differential Analyzer)
  2. Mittelpunktalgorithmus
  3. Bresenhams Linienalgorithmus

Contents

Bresenhams Strichzeichnungsalgorithmus

Der Linienalgorithmus von Bresenham  ist ein  optimistischer und inkrementeller Scan-Umwandlungs-Linienzeichnungsalgorithmus  , der alle Zwischenpunkte über das Intervall zwischen Start- und Endpunkt berechnet und vollständig mit ganzen Zahlen und der ganzzahligen Arithmetik implementiert ist. Es verwendet nur Addition und Subtraktion und vermeidet schwere Operationen wie Multiplikation und Division.

Der Bresenham-Linienzeichnungsalgorithmus bestimmt die Punkte eines n-dimensionalen Rasters, die ausgewählt werden sollten, um eine enge Annäherung an eine gerade Linie zwischen zwei Punkten zu bilden. 

Es wird häufig zum Zeichnen von Linienprimitiven in einem Bitmap-Bild (z. B. auf einem Computerbildschirm) verwendet, da es nur ganzzahlige Addition, Subtraktion und Bitverschiebung verwendet, die alle sehr billige Operationen in häufig verwendeten Computerbefehlssätzen wie x86_64 sind. Es ist ein inkrementeller Fehleralgorithmus. Es ist einer der frühesten Algorithmen, die auf dem Gebiet der Computergrafik entwickelt wurden. Eine Erweiterung des ursprünglichen Algorithmus kann zum Zeichnen von Kreisen verwendet werden.

Bresenhams Algorithmus

Schritt 1:  Algorithmus starten

Schritt 2:  Deklariere die Variablen x 1 ,x 2 ,y 1 ,y 2 ,d,i 1 ,i 2 ,dx,dy

Schritt 3:  Geben Sie den Wert von x 1 ,y 1 ,x 2 ,y 2
ein,                 wobei x 1 ,y 1 die Koordinaten des Startpunkts
                und x 2 ,y 2  die Koordinaten des Endpunkts sind

Schritt 4:  Berechnen von dx = x 2 – x 1
                Berechnen von dy = y 2 – y 1
                Berechnen von i 1 =2*dy
                Berechnen von i 2 =2*(dy-dx)
                Berechnen von d=i 1 –dx

Schritt 5:  Betrachte (x, y) als Startpunkt und x Ende als maximal möglichen Wert von x.
                Wenn dx < 0
                        Dann x = x 2
                        y = y 2
                          x Ende = x 1
                Wenn dx > 0
                    Dann x = x 1
                y = y 1
                        x Ende = x 2

Schritt 6:  Punkt bei (x,y)-Koordinaten erzeugen.

Schritt 7:  Überprüfen Sie, ob eine ganze Zeile generiert wird.
                Wenn x > = x Ende
                Stop.

Schritt 8:  Koordinaten des nächsten Pixels berechnen
                Wenn d < 0
                    Dann d = d + i 1
                Wenn d ≥ 0
          Dann d = d + i 2
                Erhöhe y = y + 1

Schritt 9: Erhöhe  x = x + 1

Schritt 10:  Zeichnen Sie einen Punkt mit den letzten (x, y) Koordinaten

Schritt 11:  Gehen Sie zu Schritt 7

Schritt 12:  Ende des Algorithmus

DDA-Strichzeichnungsalgorithmus

DDA steht für Digital Differential Analyzer. Dies ist ein inkrementeller Linienalgorithmus, die Berechnung jedes Schrittes basiert auf den Ergebnissen der vorherigen Schritte. Der DDA-Algorithmus nimmt  Einheitsschritte entlang einer Koordinate  und berechnet die  entsprechenden Werte entlang der anderen Koordinate .

DDAs werden zur Rasterung von Linien, Dreiecken und Polygonen verwendet. Sie können auf nichtlineare Funktionen erweitert werden, wie z. B. perspektivisch korrektes Textur-Mapping, quadratische Kurven und durchlaufende Voxel.

Ein linearer DDA beginnt mit der Berechnung des kleineren Werts von dy oder dx für ein Einheitsinkrement des anderen. Eine Linie wird dann in Einheitsintervallen in einer Koordinate abgetastet, und entsprechende ganzzahlige Werte, die dem Linienpfad am nächsten liegen, werden für die andere Koordinate bestimmt.

DDA-Algorithmus

Schritt 1:  Algorithmus starten

Schritt 2:  Deklarieren Sie x 1 ,y 1 ,x 2 ,y 2 ,dx,dy,x,y als ganzzahlige Variablen.

Schritt 3:  Geben Sie den Wert von x 1 ,y 1 ,x 2 ,y 2 ein .

Schritt 4:  Berechnen Sie dx = x 2 – x 1

Schritt 5:  Berechnen Sie dy = y 2 – y 1

Schritt 6:  Wenn ABS (dx) > ABS (dy)
            dann Schritt = abs (dx)
            Else

Schritt 7:  x inc =dx/Schritt
            y inc =dy/Schritt
            zuweisen x = x 1
            zuweisen y = y 1

Schritt 8:  Pixel setzen (x, y)

Schritt 9:  x = x + x inc
            y = y + y inc
            Pixel setzen (Round (x), Round (y))

Schritt 10:  Wiederholen Sie Schritt 9, bis x = x 2

Schritt 11:  Algorithmus beenden

Lesen Sie auch: Unterschied zwischen deterministischen und nicht deterministischen Algorithmen

DDA vs. Bresenham-Algorithmus

GRUNDLAGE DES VERGLEICHSDDA-ALGORITHMUSBRESENHAMS ALGORITHMUS
BeschreibungDDA steht für Digital Differential Analyzer.——-
OperationenDDA-Algorithmen verwenden Multiplikation und Division in ihren Operationen.Bresenhams Algorithmus verwendet bei seinen Operationen nur Subtraktion und Addition.
FunktionalitätDer DDA-Algorithmus ist nicht so genau und effizient wie der von Bresenham.Der Bresenham-Algorithmus ist genauer und effizienter als der DDA-Algorithmus.
ArithmetikDer DDA-Algorithmus verwendet Fließkommazahlen, dh reelle Arithmetik.Bresenhams Algorithmus verwendet Festkommazahlen, dh ganzzahlige Arithmetik.
AbrundenDer DDA-Algorithmus rundet die Koordinaten auf die ganze Zahl ab, die der Linie am nächsten liegt.Der Algorithmus von Bresenham rundet nicht ab, sondern nimmt den inkrementellen Wert bei seiner Operation.
ZeichnungDer DDA-Algorithmus kann Kreise und Kurven mit geringerer Genauigkeit zeichnen.Bresenhams Algorithmus kann Kreise und Kurven viel genauer zeichnen.
GeschwindigkeitDer DDA-Algorithmus ist langsamer als der Bresenham-Algorithmus, da er echte arithmetische Gleitkommaoperationen verwendet.Der Bresenham-Algorithmus ist schneller als der DDA-Algorithmus, da er ganzzahlige Arithmetik verwendet.
KomplexitätBeim DDA-Algorithmus ist die Komplexität der Berechnung komplexer.Bei Bresenhams Algorithmus ist die Komplexität der Berechnung einfach.
KostenDer DDA-Algorithmus ist teurer als der Bresenham-Algorithmus.Der Bresenham-Algorithmus ist billiger als der DDA-Algorithmus.

Lesen Sie auch : Unterschied zwischen Prims und Kruskals Algorithmus

Was Sie über DDA und Bresenhams wissen müssen

  • Der Bresenham-Algorithmus wurde 1962 von JEBresenham entwickelt und ist viel genauer und viel effizienter als DDA.
  • Es scannt die Koordinaten, aber anstatt sie zu runden, berücksichtigt es den Inkrementwert durch Addieren oder Subtrahieren und kann daher zum Zeichnen von Kreisen und Kurven verwendet werden.
  • Wenn also eine Linie zwischen zwei Punkten x und y gezogen werden soll, dann sind die nächsten Koordinaten (xa+1, ya) und (xa+1, ya+1), wobei a der Inkrementwert der nächsten Koordinaten und die Differenz zwischen diesen ist zwei werden durch Subtrahieren oder Addieren der von ihnen gebildeten Gleichungen berechnet.
  • Der DDA-Algorithmus ist beim Strichzeichnen eher langsam als der Bresenhams-Algorithmus, da er echte Arithmetik (Gleitkommaoperationen) verwendet.
  • DDA verwendet Gleitkommazahlen, während der Bresenham-Algorithmus Festkommazahlen verwendet.
  • DDA rundet die Koordinaten auf die nächste ganze Zahl ab, der Bresenham-Algorithmus jedoch nicht.
  • Der Bresenham-Algorithmus ist viel genauer und effizienter als DDA.
  • Der Bresenham-Algorithmus kann Kreise und Kurven viel genauer zeichnen als DDA.
  • DDA verwendet Multiplikation und Division von Gleichungen, aber der Bresenham-Algorithmus verwendet nur Subtraktion und Addition.
  • Der Bresenhams-Algorithmus ist beim Strichzeichnen schneller als der DDA-Algorithmus, da er in seinen Berechnungen nur Additionen und Subtraktionen durchführt und nur ganzzahlige Arithmetik verwendet, sodass er erheblich schneller läuft.
  • Der Bresenhm-Algorithmus rundet nicht ab, sondern nimmt den inkrementellen Wert bei seiner Operation.

Lesen Sie auch: Unterschied zwischen RSA- und DSA-Algorithmus

osky