Các thuật toán cắt xén điểm, đoạn thẳng

Một phần của tài liệu Bài giảng học phần đồ họa máy tính với C (đại học Hồng Đức) giảng viên Lê Thị Hồng (Trang 41)

- Khi điểm tiếp theo được chọn là D ,M tăng một đơn vị theo hướng x Tọa độ trung điểm mới là (xp+2, yp+1/2) Do đó: d1

2.6.1.Các thuật toán cắt xén điểm, đoạn thẳng

dnew =d old +b2 (2xp+ 3) 2( −2 yp+ 2)= dold D

2.6.1.Các thuật toán cắt xén điểm, đoạn thẳng

• Thuật toán Sutherland-Cohen:

 Mã hóa đầu mút các đoạn thẳng: mỗi đầu mút được mã hóa bằng 4 bit, 4 bit này cho biết vị trí của điểm đầu mút đó so với hình chữ nhật:

- Nếu kết quả phép OR hai mã đầu mút đoạn thẳng cho giá trị 0: cả hai điểm nằm trong chữ nhật. Vì vậy hiển thị ngay đoạn thẳng mà không cần cắt xén

- Ngược lại, ta xét hai trường hợp:

+ Nếu kết quả phép AND hai mã đầu mút đoạn thẳng cho giá trị khác 0: cả hai điểm nằm ngoài chữ nhật và đoạn thẳng này không cắt hình chữ nhật. Vì vậy, không cần cắt xén, loại bỏ ngay đoạn thẳng này.

+ Nếu kết quả phép AND hai mã đầu mút đoạn thẳng cho giá trị 0: thực hiện cắt xén

 Thực hiện cắt xén theo thuật toán sau:

- Đánh số 4 cạnh của hình chữ nhật lần lượt theo 4 bốn cạnh dùng để xác định các vùng: trên, dưới, phải, trái.

- Giả sử x là bít 1 phải nhất của đầu mút thứ nhất. Tìm giao điểm A của đoạn thẳng với đường thẳng thứ x trong số 4 cạnh của hình chữ nhật. Nếu không có bit nào bằng 1 thì A chính là đầu mút thứ nhất.

+ Nếu A thuộc HCN: làm tương tự như trên với đầu mút thứ hai ta được giao điểm B. Đoạn AB là đoạn cần hiển thị.

+ Ngược lại đoạn thẳng nằm ngoài HCN nên không cần hiển thị

- Ví dụ với đoạn CD: *C có mã: 0100

- Đi từ phải sang trái gặp bit 1 tại vị trí thứ 3, tìm giao điểm của CD với đường thẳng thứ 3 được giao điểm C’ thuộc HCN nên đây là điểm đầu tiên của đoạn giao

*D có mã: 1010

- Đi từ phải sang trái gặp bit 1 đầu tiên tại vị trí thứ 2 nên tìm gioa điểm của CD với đưởng thẳng thứ 2 được giao điểm D’ thuộc HCN nên đây là điểm thứ 2 của đoạn giao

Một phần của tài liệu Bài giảng học phần đồ họa máy tính với C (đại học Hồng Đức) giảng viên Lê Thị Hồng (Trang 41)