prev up next


Aufgabe 2.3 (30 Punkte)

Implementieren Sie eine weitere Klasse AntiAliasedLine zum Zeichnen von Linien, bei denen die Aliasing-Effekte durch eine einfache Änderung des Bresenham-Algorithmus verringert werden:

Wenn Sie beim Nutzen des Bresenham-Algorithmus einen Pixel mit Hilfe von setPixel setzen, kennen Sie auch den derzeitigen Fehler, also den Betrag, den der entsprechende Pixel in einer Koordinate vom optimalen Wert abweicht. Nutzen Sie diesen Fehler, um die Helligkeit des Pixels entsprechend zu verändern. Dazu können Sie setPixel einen Intensitätswert zwischen 1 und 0 übergeben. Setzen Sie außerdem neben den soeben gezeichneten Pixel einen weiteren, so dass die Summe der Helligkeiten wieder 1 ergibt, also 100%-iges schwarz.

Beispiel: Sie würden mit dem Bresenham-Algrithmus den Pixel mit den Koordinaten (10,10) einfärben. Der Fehler beträgt aber derzeit 0,2. Sie zeichnen die Linie flach nach oben rechts, so dass - sobald der Fehler 0,5 überschreitet - der y-Wert um 1 verringert (Bedenken Sie die Umkehrung der y-Achse in Java!) werden wird. Um einen Anti-Aliasing-Effekt zu erzeugen, zeichnen Sie den Punkt bei den Koordinaten (10,10) also nicht in 100%-igem schwarz, sondern nur mit 80%-igem Farbwert. Außerdem setzen Sie an die Koordinaten (10,9) einen weiteren Pixel mit 20%-igem Farbwert.

Ein Schaubild dazu ist in Foliensatz 3, Folie 19 gegeben.

Musterlösung vom 21.04.2010:

Die Quellen zur Lösung finden sich hier: /home/cg/Uebung/Blatt2/Lsg/draw2d-mlg.jar


prev up next