Графика, часть 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;
}
}
}