public void draw(CGCanvas cgc) { int x, y, error, delta, schritt, dx, dy, inc_x, inc_y; x = x1; // Koordinaten retten y = y1; dy = y2 - y1; // Hoehenzuwachs dx = x2 - x1; // Schrittweite if(dx > 0) // Linie nach rechts? inc_x = 1; // x inkrementieren else // Linie nach links inc_x = -1; // x dekrementieren if(dy > 0) // Linie nach unten? inc_y = 1; // y inkrementieren else // Linie nach oben inc_y = -1; // y dekrementieren if(Math.abs(dy) < Math.abs(dx)) { // flach nach oben oder unten error = -Math.abs(dx); // Fehler bestimmen delta = 2*Math.abs(dy); // Delta bestimmen schritt = 2*error; // Schwelle bestimmen while(x != x2) { // Fuer jede x-Koordinate cgc.setPixel(x,y); // setze Pixel x += inc_x; // naechste x-Koordinate error = error + delta; // Fehler aktualisieren if (error > 0) { // neue Spalte erreicht? y += inc_y; // y-Koord. aktualisieren error += schritt; // Fehler aktualisieren } } } else { // steil nach oben oder unten error = -Math.abs(dy); // Fehler bestimmen delta = 2*Math.abs(dx); // Delta bestimmen schritt = 2*error; // Schwelle bestimmen while(y != y2) { // fuer jede y-Koordinate cgc.setPixel(x,y); // setze Pixel y += inc_y; // naechste y-Koordinate error = error + delta; // Fehler aktualisieren if (error > 0) { // neue Zeile erreicht? x += inc_x; // x-Koord. aktualisieren error += schritt; // Fehler aktualisieren } } } cgc.setPixel(x2, y2); // letztes Pixel hier setzen, } // falls (x1==x2) & (y1==y2)