(+84) 236.3827111 ex. 402

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);

}

}