Thuật toán Breshenham vẽ đoạn thẳng

Mình vừa bước vào học môn đồ họa máy tính với ngôn ngữ c/c++ và tìm tòi được một số thông tin về áp dụng thuật toán Breshenham để vẽ đường thẳng nên trong bài viết hôm nay mình xin chia sẻ cho các bạn

Thuật toán Breshenham

Cho 2 điểm A(x1,y1) B(x2, y2), nhiệm vụ của chúng ta là áp dụng thuật toán Breshenham để vễ đoạn thẳng AB.
Xây dựng phương trình đường thẳng theo thuật toán Breshenham có dạng:

y = mx + b. \text{ Trong do: } \begin{cases} m = \frac{y2 - y1}{x2-x1} = \frac{Dy}{Dx} \\ b = y1 - m.x1 \end{cases}

Trường hợp hệ số góc 0 < m <= 1:

P = 2dy – dx
nếu P >= 0 y++; P = P + (2dy – 2dx);
còn lại P = P + 2dy;

Thuật toán Bresenham vẽ đoạn thẳng trường cho trường hợp hệ số góc 0<m<1 có thể mô tả tóm tắt như sau:

  • Bước 1:
    • 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 2: Nếu x<x2 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 3: Lặp lại bước 2 cho đến khi x = x2.

Code minh họa:

Trường hợp hệ số góc -1<= m < 0:

P = 2dy + dx
nếu P < 0 thì y–; P = P + (2dy + 2dx);
còn lại P = P + 2dy;

Trường hợp hệ số góc m > 1:

P = 2dx – dy
nếu P >=0 thì x++; P = P + (2dx – 2dy);
còn lại P = P + 2dx;

Trường hợp hệ số góc nhỏ m > -1:

P = 2dx + dy
nếu P < 0 thì x–; P = P+ (2dx + 2dy);
còn lại P = P + 2dx;
Ngoài ra còn có 2 trường hợp vẽ đường thẳng đứng và đường ngang, khá là dễ nên mình không nhắc tới ở đây.

Code đầy đủ:

Kết quả:
thuật toán breshenham

Theo dõi lập trình không khó tại:

Similar Posts

Subscribe
Notify of
guest
1 Bình luận
Inline Feedbacks
View all comments