§ Линия

Алгоритм Брезенхэма.
1void line(int x1, int y1, int x2, int y2, int color) {
2
3    // Инициализация смещений
4    int signx  = x1 < x2 ? 1 : -1;
5    int signy  = y1 < y2 ? 1 : -1;
6    int deltax = x2 > x1 ? x2 - x1 : x1 - x2;
7    int deltay = y2 > y1 ? y2 - y1 : y1 - y2;
8    int error  = deltax - deltay;
9    int error2;
10
11    // Если линия - это точка
12    pset(x2, y2, color);
13
14    // Перебирать до конца
15    while ((x1 != x2) || (y1 != y2)) {
16
17        pset(x1, y1, color);
18        error2 = 2 * error;
19
20        // Коррекция по X
21        if (error2 > -deltay) {
22            error -= deltay;
23            x1 += signx;
24        }
25
26        // Коррекция по Y
27        if (error2 < deltax) {
28            error += deltax;
29            y1 += signy;
30        }
31    }
32}

§ Рисование окружности

1void circle(int xc, int yc, int radius, int color) {
2
3    int x = 0,
4        y = radius,
5        d = 3 - 2*y;
6
7    while (x <= y) {
8
9        // Верхний и нижний сектор
10        pset(xc - x, yc + y, color);
11        pset(xc + x, yc + y, color);
12        pset(xc - x, yc - y, color);
13        pset(xc + x, yc - y, color);
14
15        // Левый и правый сектор
16        pset(xc - y, yc + x, color);
17        pset(xc + y, yc + x, color);
18        pset(xc - y, yc - x, color);
19        pset(xc + y, yc - x, color);
20
21        d += (4*x + 6);
22        if (d >= 0) {
23            d += 4*(1 - y);
24            y--;
25        }
26
27        x++;
28    }
29}

§ Рисование закрашенной окружности

1void circle_fill(int xc, int yc, int radius, int color) {
2
3    int x = 0,
4        y = radius,
5        d = 3 - 2*y;
6
7    while (x <= y) {
8
9        // Верхний и нижний сектор
10        line(xc - x, yc + y, xc + x, yc + y, color);
11        line(xc - x, yc - y, xc + x, yc - y, color);
12
13        // Левый и правый сектор
14        line(xc - y, yc + x, xc + y, yc + x, color);
15        line(xc - y, yc - x, xc + y, yc - x, color);
16
17        d += (4*x + 6);
18        if (d >= 0) {
19            d += 4*(1 - y);
20            y--;
21        }
22
23        x++;
24    }
25}