Графика, часть 3

2025-12-13 21:52

Графика, часть 3

Рендеринг 2D графики сводится к рисованию примитивов (точек, линий и многоугольников). Точки рисовать мы уже научились, теперь рассмотрим линии. К примеру алгоритм Брезенхэма. Это алгоритм использует только целочисленную арифметику для вычислений. На каждом шаге он увеличивает на 1 x или y, а также использует дополнительную переменную для определения нужно ли также увеличить x или y.

void draw_line(int x1, int y1, int x2, int y2) {
    int dx = abs(x2 - x1);
    int dy = abs(y2 - y1);
    int sx = x1 < x2 ? 1 : -1;
    int sy = y1 < y2 ? 1 : -1;
    int err = dx - dy;
    int cx = x1;
    int cy = y1;

    while (1) {
        set_pixel(cx, cy);

        if (cx == x2 && cy == y2) {
            break;
        }

        int e2 = 2 * err;

        if (e2 > -dy) {
            err -= dy;
            cx += sx;
        }
        if (e2 < dx) {
            err += dx;
            cy += sy;
        }
    }
}
ТЕГИ: #osdev #graphics
_ НАЗАД