Thuật toán Bresenham: Vẽ đoạn thẳng
Thuật toán Bresenham vẽ đoạn thẳng trường cho trường hợp hệ số góc 0
- Bước 1: Nhập các điểm đầu mút. Điểm đầu mút bên trái chứa tọa độ (x1,y1), điểm đầu mút bên phải chứa tọa độ (x2,y2).
-
Bước 2:
- Tính Dx = |x2 - x1| , Dy = |y2 - y1| và p = 2Dy - Dx.
- Chọn điểm xuất phát (x,y) = (x1,y1).
- Vẽ điểm (x,y).
-
Bước 3: Nếu x<>2 thì x = x+1.
- Nếu p < 0: p = p + 2Dy
Ngược lại: p = p + 2( Dy - Dx) và y = y+1.
- Vẽ điểm (x,y) mới.
- Bước 4: Lặp lại bước 3 cho đến khi x = x2.
Sau đây là hàm cài đặt thuật toán:
void Line(int x1,int y1,int x2,int y2)
// 0<>
{
int x_max,x,y;
int dx=abs(x1-x2);
int dy=abs(y1-y2);
int c1=2*dy;
int c2=2*(dy-dx);
int p=2*dy-dx;
if (x1>x2)
{
x=x2; y=y2; x_max=x1;
}
else
{
x=x1; y=y1; x_max=x2;
}
putpixel(x,y,color);
while (x < x_max)
{
x=x+1;
if (p<0) p=p+c1;
else
{
y=y+1;
p=p+c2;
}
putpixel(x,y,5);
}
}