prev up next

Grundlagen

Dateien mit 2D-Vektor-Grafiken beschreiben ein 2-dimensionales Bild durch Angabe von x/y-Koordinaten und geometrischen Attributen (Strichstärke, Farbe, Füllmodus, Transparenz). Der zugehörige Player rendert aus diesen Angaben ein Pixelbild.

Algorithmus zum Zeichnen einer Linie:

void bresenham_linie(Point p, Point q)
/* zeichnet Linie von Punkt p zu Punkt q im 1. Oktanden */
{
    int dx, dy, error, delta, schwelle;
    dx       = q.x - p.x;
    dy       = q.y - p.y;
    error    = -dx;
    delta    = 2*dy;
    schwelle = -2*dx;
    while (p.x <= q.x) {
        set_pixel(p);
        p.x++;
        error += delta;
        if (error > 0) { p.y++; error += schwelle; }
    }
}


Vom Bresenham-Algorithmus erzeugte Linien

Durch Antialiasing (angepasste Grauwerte in der Umgebung) kann der Pixelverlauf geglättet werden.

Algorithmus zum Zeichnen eines Kreises

void bresenham_kreis (int r)             
/* zeichnet Kreis um Punkt 0,0 mit Radius r */
{
    int x, y, d, dx, dxy; 
    x=0; y=r; d=1-r;
    dx=3; dxy=-2*r+5;
    while (y>=x) {
        set_pixel (new Point(x,y));
        if (d < 0) { d += dx;  dx += 2; dxy += 2; x++;      }
              else { d += dxy; dx += 2; dxy += 4; x++; y--; }
    }
}


Vom Bresenham-Algorithmus erzeugte Kreise


prev up next