- Phương pháp này sẽ xác định phần giao của các dòng quét kế tiếp nhau với đường biên của vùng tô. Sau đó, sẽ tiến hành tô màu các điểm thuộc phần giao này.
- Phương pháp này thường được dùng để tô màu đa giác lồi, lõm hay đa giác tự cắt, đường tròn, ellipse, và một số đường cong đơn giản khác.
Các bƣớc chính của thuật toán
- Tìm ymin, ymax lần lượt là giá trị nhỏ nhất, lớn nhất của tập các tung độ của các đỉnh của đa giác đã cho.
- Ứng với mỗi dòng quét y = k với k thay đổi từ ymin đến ymax, lặp :
Tìm tất cả các hoành độ giao điểm của dòng quét y = k với các cạnh của đa giác.
Sắp xếp các hoành độ giao điểm theo thứ tự tăng dần : x
0 ,x
1 ,..., x
n ,...
Tô màu các đoạn thẳng trên đường thẳng y = k lần lượt được giới hạn bởi các cặp (x
0, x
1), ( x
1 ,x
46
Bộ môn Truyền thông Đa phương tiện – Đại học Công nghệ thông tin và Truyền thông Hình 2.19 : Tô màu đa giác bằng giải thuật scan – line
Các vấn đề cần lƣu ý:
- Hạn chế được số cạnh cần tìm giao điểm ứng với mỗi dòng quét vì ứng với mỗi dòng quét không phải lúc nào cũng giao điểm với các cạnh của đa giác. - Xác định nhanh hoành độ giao điểm vì nếu lặp lại thao tác tìm giao điểm của
cạnh đa giác với mỗi dòng quét sẽ tốn rất nhiều thời gian.
- Giải quyết trường hợp số giao điểm đi qua đỉnh đơn điệu thì tính số giao điểm là 1 hay đi qua đỉnh cực trị.thì tính số giao điểm là 0 (hoặc 2).
2.3.3. Tô màu theo đƣờng biên
Bài toán đặt ra : Cần tô màu một vùng nếu biết được màu của đường biên vùng tô và một điểm nằm bên trong vùng tô.
Ý tƣởng : Bắt đầu từ một điểm nằm bên trong vùng tô, kiểm tra các điểm lân cận của nó đã được tô với màu muốn tô, hay điểm lân cận có màu trùng với màu biên không? Nếu cả hai trường hợp đều không phải thì ta sẽ tô điểm đó với màu muốn tô. Quá trình này được lặp lại cho đến khi không còn tô được nữa thì dừng (xem hình 2.20).
47
Bộ môn Truyền thông Đa phương tiện – Đại học Công nghệ thông tin và Truyền thông Hình 2.20: Tô màu theo đường biên
Có 2 quan điểm về cách tô này. Đó là dùng 4 điểm lân cận (có thể gọi là 4 liên thông) hay 8 điểm lân cận (8 liên thông) (xem hình 2.21).
Hình 2.21: 4 liên thông và 8 liên thông
Nhận xét
Thuật toán này có thể sẽ không hoạt động chính xác khi có một số điểm nằm trong vùng tô có màu là màu cần tô của vùng (FillColor). Để khắc phục điều này, trước khi tô màu cần phải đảm bảo rằng toàn bộ các điểm thuộc về vùng tô có màu khác màu tô.