Zeichnen von Linien mit Bresenhams Linienalgorithmus

8

Meine Computergrafikaufgabe besteht darin, OpenGL-Algorithmen zu implementieren, die nur die Fähigkeit zum Zeichnen von Punkten verwenden.

Also muss ich natürlich drawLine() arbeiten, bevor ich etwas anderes zeichnen kann. drawLine() muss nur mit ganzen Zahlen gemacht werden. Kein Gleitkomma.

Das wurde mir beigebracht. Grundsätzlich können Linien in 4 verschiedene Kategorien unterteilt werden: positiv steil, positiv flach, negativ steil und negativ flach. Dies ist das Bild, das ich zeichnen soll:

und das ist das Bild, das mein Programm zeichnet:

Die Farben sind für uns gemacht. Wir haben Vertices und müssen den Bresenham-Linienalgorithmus verwenden, um die Linien basierend auf den Start- und Endpunkten zu zeichnen.

Das habe ich bisher:

%Vor%

Ich weiß, mein Fehler wird etwas albern sein, aber ich kann ehrlich nicht herausfinden, was ich falsch mache. Warum werden einige der Linien falsch gezeichnet, wie oben gezeigt?

    
ToastyMallows 08.04.2012, 03:01
quelle

2 Antworten

0

Falls jemand sich fragte, was das Problem war, weiß ich immer noch nicht, was es war. Was ich am Ende getan habe, war, meinen Code neu zu faktorisieren, so dass der -shallow und -steep denselben Algorithmus wie + shallow und + steep verwendeten. Nach dem Anpassen der x, y-Koordinaten (Negieren der x- oder y-Koordinate), negierte ich meine ursprüngliche Negation, so dass sie an der richtigen Stelle aufgetragen wurde.

    
ToastyMallows 12.04.2012, 05:16
quelle
5

Sie können den vollständigen Code in C ++ finden, um eine Linie mit dem Bresenham-Algorithmus unter Ссылка :

%Vor%     
Avi 06.05.2013 18:52
quelle

Tags und Links