Bài giảng Đồ họa máy tính - Tuần 7: Phương pháp tô màu - Lý Quốc Ngọc
Đồ họa máy tính
Tuần 7: Phương pháp tô màu
Nội dung
7.1. Tô màu theo vết dầu loang.
7.2. Tô màu theo dòng quét.
2
TS. Lý Quốc Ngọc
3/24/2014
7.1. Tô màu theo vết dầu loang
7.1.1. Phát biểu bài toán
Cho trước biên kín S được xác định bởi dãy liên tục các
pixels, hãy tô màu miền trong của S.
Giới hạn bài toán:
. Màu biên và màu tô thuần nhất.
. Màu biên khác màu tô.
3
TS. Lý Quốc Ngọc
7.1. Tô màu theo vết dầu loang.
7.1.2. Phương pháp
L1. Khởi đầu từ điểm P (x,y) trong S với màu tô C(P)
L2. Khảo sát các điểm trong lân cận của P: NS (P)
L3. Lặp với mỗi điểm Q thuộc NS(P)
Nếu C(Q) != C(Boundary) and C(Q) != C(P)
C(Q) :=C(P)
P :=Q goto L3
Nếu khác
Kết thúc
4
TS. Lý Quốc Ngọc
7.1. Tô màu theo vết dầu loang
7.1.3. Giải thuật
Procedure Boundary_fill (x, y, fill_color, boundary: integer)
Var present_color: integer;
begin
Present_color := inquire_color;
if ( present_color != boundary) and (( present_color != fill_color) then
begin
Set_pixel (x, y, fill_color);
Boundary_fill ( x+1, y, fill_color, boundary);
Boundary_fill ( x-1, y, fill_color, boundary);
Boundary_fill ( x, y+1, fill_color, boundary);
Boundary_fill ( x, y-11, fill_color, boundary);
end
end
5
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét
7.2.1. Phát biểu bài toán
Cho đa giác S xác định bởi n đỉnh: P1, P2, …,Pn. Hãy tô
màu miền trong của S.
Giới hạn bài toán:
. Dòng quét nằm ngang.
. Khoảng cách 2 dòng quét là 1 pixel.
. Miền tô được xác định bởi định lý Jordan.
6
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét
7.2.2. Phương pháp
Tô sọc dựa trên qui tắc xác định miền trong (qui tắc lẽ-
chẳn).
Phương pháp chung
L1. Với mỗi dòng quét
L2. Xác định giao điểm dòng quét với các cạnh của S.
L3. Sắp xếp các giao điểm theo thứ tự tăng dần của x
L4. Lấp đầy pixels giữa các cặp giao điểm lẽ-chẵn.
7
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét
7.2.2. Phương pháp
Khuyết điểm
KĐ1. Dòng quét đi qua các cạnh // 0x.
KĐ2. Dòng quét đi qua các đỉnh của S.
8
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét
7.2.2. Phương pháp
Giải quyết vấn đề
C1. Hiệu chỉnh lại phương pháp.
C2. Tinh chế dữ liệu đầu vào.
9
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét
7.2.2. Phương pháp
C2. Tinh chế dữ liệu đầu vào.
- Loại bỏ các cạnh // Ox.
- Làm ngắn cạnh tại các đỉnh không cực trị.
10
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét
7.2.3. Giải thuật
Cấu trúc dữ liệu AEL (Active Edge List)
struct AEL {
Int y_upper;
Float x_int;
Float reci_slope;
Struct AEL *next;
}
11
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét.
7.2.3. Giải thuật
Cấu trúc dữ liệu ET (Edge Table)
struct AEL *ET[MAX_LINES)
ET[y] trỏ đến danh sách các cạnh có giá trị y của đỉnh thấp
trùng giá trị y của dòng quét.
12
TS. Lý Quốc Ngọc
7.2. Tô màu theo dòng quét
Giải thuật tô sọc dựa trên cấu trúc ET và AEL
Giai đoạn lấp đầy miền trong của S dựa vào cấu trúc dữ liệu AEL và bảng ET.
L1. Lặp với mỗi dòng quét y từ MIN-Y đến MAX-Y.
L2.
L3.
Nếu ET[y] != NIL thì
.Thêm các cạnh được trỏ bởi ET[y] vào danh sách AEL được trỏ
bởi Beglist.
L4.
Nếu Beglist != NIL thì
. Sắp xếp danh sách AEL theo thứ tự tăng dần của x_int.
. Lấp đầy các pixel giữa các cặp giao điểm lẽ-chẵn ứng với dòng
quét y dựa vào thông tin trong danh sách AEL đã được sắp thứ tự.
. Loại bỏ các cạnh trong danh sách AEL có y_upper = y.
. Cập nhật giá trị x_int bởi lượng reci_slope trong danh sách AEL.
L4. Kết thúc lặp
13
TS. Lý Quốc Ngọc
Bạn đang xem tài liệu "Bài giảng Đồ họa máy tính - Tuần 7: Phương pháp tô màu - Lý Quốc Ngọc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_do_hoa_may_tinh_tuan_7_phuong_phap_to_mau_ly_quoc.pdf