Ý tưởng
• Thuật toán nhằm tô màu vùng kín, giới hạn bởi màu Bcolor, mà sử dụng để tô là Fcolor với điểm (x,y) nằm trong vùng tô màu.
• Thuật sử dụng phép gọi đệ quy, ban đầu (x,y) được kiểm tra màu, nếu màu của nó là Fcolor hoặc Bcolor thì tiến trình kết thúc. Trong trường hợp ngược lại, điểm (x,y) được tô với màu Fcolor và quá trình gọi đệ quy với các điểm láng giềng của (x,y). Các điểm láng giềng được sử dụng là 4 láng giềng.
X
X (x,y) X
X
4 láng giềng của (x,y): (x+1,y), (x-1,y), (x,y+1),(x,y-1)
Chương trình minh họa
BoundaryLine(int x, int y, int Bcolor, int Fcolor) Begin
if(getPixel(x, y) <> Bcolor || getPixel(x, y) <> Fcolor) Begin
putPixel(x, y,Fcolor) = Fcolor; Boundary(x+1,y,Bcolor,Fcolor); Boundary(x-1,y,Bcolor,Fcolor); Boundary(x,y+1,Bcolor,Fcolor); Boundary(x,y-1,Bcolor,Fcolor); End End
Chương trình khử đệ quy
BoundaryLine(int x, int y, int Bcolor, int Fcolor) Begin
int color, count=0; Point mPT[MaxPT];
mPT[count].x=x; mPT[count].y=y; while(count>0)
Begin
count--;
color = getPixel(mPT[count].x, mPT[count].y); if(color != Bcolor || color != Fcolor)
Begin putPixel(x,y,Fcolor); mPT[count].x=x+1; mPT[count++].y=y; mPT[count].x=x-1; mPT[count++].y=y; mPT[count].x=x; mPT[count++].y=y+1; mPT[count].x=x; mPT[count++].y=y-1; End End End
Bài tập chương 3
1. Viết chương trình vẽ một đa giác n đỉnh, xét xem một điểm P nào đó có thuộc đa giác không ?
2. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật tô đơn giản (Tìm xmin, ymin, xmax, ymax).
3. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô đơn giản. 4. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật tô biên. Lưu ý
cho các trường hợp của đa giác : hình chữ nhật, đa giác lồi, đa giác lõm. 5. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô biên.
6. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật dòng quét.
7. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô màu theo dòng quét.
8. Viết chương trình vẽ hai đường tròn C1 và C2 cắt nhau. Tô phần giao của hai đường tròn đó. Tô phần bù của C2. Tô phần bù của C1. Lưu ý rằng 3 màu tô này phải khác nhau.
Chương 4
PHÉP BIẾN ĐỔI HAI CHIỀU Nội dung chính
Các phép biến đổi ma trận.
Các phép biến đổi Affine 2D cơ sở.
Các phép biến đổi 3D gộp.