Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1ĐỒ HỌA RASTER
CÁC THUẬT TOÁN TÔ MÀU
Giảng viên : Bùi Tiến Lên
Trang 2Bài toán tô màu
Tô màu là thao tác tìm các điểm sáng “nằm bên trong” một vùng khép kín
Input :
Vùng SOutput :
{(x1, y1), (x2, y2) … (xn, yn)}
Trang Trang 2 2
{(x1, y1), (x2, y2) … (xn, yn)}
Trang 3Các hướng tiếp cận
Có hai phương pháp
- Tô màu theo lân cận
- Tô màu theo dòng quét
Trang 4Tô màu theo lân cận
Trang 5Lân cận là gì ?
Có hai loại lân cận : lân cận 4 và lân cận 8.
dưới
trên
trái
Trang 6Thuật toán đệ qui
bước 1 Kẻ biên vùng cần tô
bước 2 Xác định một điểm (x, y) nằm bên trong vùng cần tô
bươc 3 Tô điểm (x, y), sau đó tô loang sang những điểm lân cận
Trang Trang 6 6
xy
Trang 7Cài đặt đệ qui
// To loang
void BoundaryFill(CDC *pDC, int x, int y,
int fill_color, int boundary_color)
{
int color;
color = pDC->GetPixel(x, y);
if((color != fill_color) && (color != boundary_color))
{
pDC->SetPixel(x, y, fill_color);
pDC->SetPixel(x, y, fill_color);
BoundaryFill(pDC, x-1, y, fill_color, boundary_color);
BoundaryFill(pDC, x, y+1, fill_color, boundary_color);
BoundaryFill(pDC, x+1, y, fill_color, boundary_color);
BoundaryFill(pDC, x, y-1, fill_color, boundary_color);
}
}
Trang 8Nhận xét thuật toán đệ qui
kích thước
!
Trang 9Thuật toán cải tiến
bước 1
Cất điểm hạt giống đầu tiên vào kho
bước 2
Lặp nếu kho không rỗng
- c1 Lấy điểm hạt giống
- c Tô điểm hạt giống sau đó tô loang sang trái và
- c2 Tô điểm hạt giống sau đó tô loang sang trái và
sang phải
- c3 Bổ sung những điểm hạt giống mới vào kho từ
dòng trên và dòng dưới
Trang 10Thuật toán cải tiến
hạt giống : điểm sáng
kho : chứa các điểm hạt giống
Trang Trang 10 10
Trang 11Thuật toán cải tiến
Minh họa tô loang
Trang 12Thuật toán cải tiến
Tiêu chuẩn để là điểm hạt giống
1 Điểm này chưa được tô và không phải điểm biên
2 Điểm này thoả :
- Điểm trái đầu tiên
- hoặc bên trái của nó là điểm biên (nếu nó không phải là điểm trái đầu tiên)
Trang Trang 12 12
phải là điểm trái đầu tiên)
Trang 13Thuật toán cải tiến
Trang 14Tô theo lân cận
Tô theo lân cận Một số vấn đề Một số vấn đề
Sử dụng lân cận nào ?
Trang Trang 14 14
Trang 15Tô theo lân cận
Tô theo lân cận Một số vấn đề Một số vấn đề
Đường biênmàu gì ?
Trang 16Tô theo lân cận
Tô theo lân cận Một số vấn đề Một số vấn đề
Trang Trang 16 16
Trang 17Tô màu theo dòng quét
Trang 18Khái niệm dòng quét
Dòng quét là dòng điểm sáng trên màn hình
y
Trang Trang 18 18
y
Trang 20Tô hình tam giác
Y1 ≤ Y2 ≤ Y3
bước 2 : Phân trường hợp
Theo tung độ
Trang 21Tô hình tam giác
3
Y1 < Y2 < Y3
12
3
Trang 22Tô hình tam giác
1 3 2
Y1
Trang Trang 22 22
Tô tam giác (Y1 = Y2 = Y3)
1 Tìm Xmin, Xmax
2 Tô dòng Y1 bắt đầu tại cột Xmin, kết thúc tại cột Xmax
Trang 23Tô hình tam giác
Tô tam giác (Y1 < Y2 = Y3) Lặp y : Y1 … Y2
1 Tìm hoành độ giao điểm xl, xrgiữa dòng quét y với các cạnh
Trang 24Tô hình tam giác
Ví dụ
Các hoành độ giao điểm của các dòng quét với cạnh (2, 2), (11, 6)
654
2
Trang Trang 24 24
543
84
174
264
354
444
Trang 25Tô hình tam giác
1 2
cu moi
1
X
Xk
với
kx
x
Xlàđầu
x
điểmgiao
độhoànhtính
1
2
YY
k
−
Trang 26Tô hình tam giác
1
Y1
y
Trang 27Tô hình đa giác lồi
Cách tô
1 Chia đa giác lồi có n đỉnh
{p0, p1, , pn-1} thành n-2 tam giác.
Trang 28Tô hình đa giác
Nguyên lý chia tam giác
Mọi đa giác không tự cắt đều có thể phân chia thành các tam giác
Trang Trang 28 28
Trang 29Thuậật toán tô đa giác tổng quát t toán tô đa giác tổng quát
Trang 30bước 2 Tô từng dòng
Lặp y : ymin … ymax
c1 Tìm các giao điểm.
c2 Sắp xếp các giao điểm.
c3 Tô các đoạn thẳng.
ymin
P
y
Trang 31Lưu ý
Bỏ cạnh nằm ngang
bỏ
bỏ
Trang 32h
Bình thường
y
Trang 34h
Trang 35i
Trang 36Loại bỏ các cạnh{c, f, i}
fi
Trang 37h
Trang 38k=1/6
k=0 k=-1/2
k=1/4
Trang 39Thông tin cạnh đa giác
cạnh ylower yupper xlower k
Trang 40Thông tin các cạnh đa giác
cạnh ylower yupper xlower k
Trang 41Phương trình đoạn thẳng
F(x, y) = (Y2 – Y1)(x – X1) – (X2 – X1)(y – Y1)
(X2,Y2)
(X1,Y1)
Trang 42Xác định bên trong tam giác như thế nào ?
(X3,Y3)
Trang Trang 42 42
(X1,Y1)
(X2,Y2)
Trang 43Chiều các đỉnh của tam giác
Tính diện tích tam giác
(X2,Y2) (X2,Y2)
2
yy
xy
yxy
Trang 44Thuật toán
1 Tìm xmin, xmax, ymin, ymax
2 Lặp y : ymin … ymax, x : xmin … xmax
Nếu (x, y) nằm bên trong tam giác thì
Tô (x, y)
y
Trang Trang 44 44
ymin
ymax