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