bresenham直线生成算法C语言代码
时间: 2024-10-07 22:05:48 浏览: 25
Bresenham直线生成算法是一种计算机图形学中的经典算法,用于在屏幕上精确地绘制从一个点到另一个点的直线,而不会产生锯齿效果。以下是简单的C语言实现该算法的一个版本:
```c
#include <stdio.h>
#include <math.h>
void bresenham(int x1, int y1, int x2, int y2) {
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int steep = (dy > dx); // 判断斜率是否陡峭
if (steep) {
swap(x1, y1);
swap(x2, y2);
}
int error = dx / 2;
int y = y1;
for (int x = x1; x <= x2; x++) {
if (steep)
printf("%d ", y);
else
printf("%d ", x);
if (error <= dy) {
y += steep ? 1 : -1;
error += dx;
} else {
error -= dy;
y += steep ? -1 : 1;
}
}
}
int main() {
int x1, y1, x2, y2;
printf("请输入起点(x1, y1): ");
scanf("%d %d", &x1, &y1);
printf("请输入终点(x2, y2): ");
scanf("%d %d", &x2, &y2);
bresenham(x1, y1, x2, y2);
return 0;
}
```
在这个代码中,我们首先处理斜率的问题,如果斜率较大,就交换x和y坐标以简化计算。然后通过循环,每次按照误差递增的方式更新x和y,并调整误差值,直到达到终点。