Ồ Ọ Ồ Ọ

Đ H A RASTER Đ H A RASTER

CÁC THU T TOÁN TÔ MÀU CÁC THU T TOÁN TÔ MÀU

Ậ Ậ

Gi ng viên : Bùi Ti n Lên ế ả

Bài toán tô màu Bài toán tô màu

” m t vùng ể n m bên trong ằ ộ

Tô màu là thao tác tìm các đi m sáng “ khép kín. Input :

Vùng S

Output :

{(x1, y1), (x2, y2) … (xn, yn)}

Trang 22 Trang

ng ti p c n Các hCá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 33 Trang

Tô màu theo lân c nậ Tô màu theo lân c nậ

Lân c n là gì ? ậ Lân c n là gì ? ậ

Có hai lo i lân c n : lân c n 4 và lân c n 8. ạ Lân c n 4ậ

N4(x, y) = {(x-1, y), (x, y+1), (x+1, y), (x, y-1)}

Lân c n 8ậ

N8(x, y) = {(x-1, y), (x-1, y+1), (x, y+1), (x+1, y+1), (x+1, y), (x+1, y-

1), (x, y-1), (x-1, y-1)}

trái trên

y y trái (x,y) (x,y) ph iả

dư iớ

Trang 55 Trang

x x

ậThu t toán ậ Thu t toán

ệ qui đđ qui ệ

ộ đi m ể (x, y) n m bên trong vùng c n tô ằ ầ

bư c 1ớ K biên vùng c n tô ẻ bư c 2ớ Xác đ nh m t ị bươc 3 Tô đi m ể (x, y), sau đó tô loang sang nh ng ữ đi m lân c n ậ ể

y

x

Trang 66 Trang

ệ qui Cài Cài đđ t ặ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); 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 77 Trang

Nh n xét thu t toán Nh n xét thu t toán

ậ ậ

ậ ậ

ệ qui đđ qui ệ

Ưu đi mể

Có th tô vùng có hình d ng b t

đ tô các vùng

kỳ.

Khuy t ế đi mể Không th dùng ể ớ ớ

có kích thư c l n.

kích thöôùc ! kích thöôùc !

Trang 88 Trang

Thu t toán c i ti n Thu t toán c i ti n

ả ế ả ế

ậ ậ

bư c 1ớ

kho. C t ấ đi m ể h t gi ng ố đ u tiên vào ạ ầ

bư c 2ớ

L pặ n u ế kho không r ngỗ

ạ ố sau đó tô loang sang trái và ố . - c1 L y ấ đi m ể h t gi ng - c2 Tô đi m ể h t gi ng

kho t sang ph i.ả ổ ữ đi m ể h t gi ng ố m i vào ớ ạ ừ

- c3 B sung nh ng dòng trên và dòng dư i.ớ

Trang 99 Trang

Thu t toán c i ti n Thu 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 1010 Trang

Thu t toán c i ti n Thu t toán c i ti n

ả ế ả ế

ậ ậ

biên

biên

Minh h a tô loang ọ

Trang 1111 Trang

Thu t toán c i ti n Thu t toán c i ti n

ả ế ả ế

ậ ậ

ợ ả đi m biên. ể

ể ể

đi m biên (n u nó không ph i là ể ế ả

đi m trái 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 2. Đi m này tho : ả - Đi m trái đ u tiên. ầ ể - ho c bên trái c a nó là ặ ủ đ u tiên). ầ ể

Trang 1212 Trang

Thu t toán c i ti n Thu t toán c i ti n

ả ế ả ế

ậ ậ

biên

biên

Minh h a b sung nh ng ọ ổ ữ đi m ể h t gi ng ố m iớ ạ

biên

biên

biên

h t gi ng ạ ố

Trang 1313 Trang

Tô theo lân c n - M t s v n Tô theo lân c n - M t s v n

ộ ố ấ đđềề ộ ố ấ

ậ ậ

S d ng ử ụ lân c n nào ? ậ

Trang 1414 Trang

Tô theo lân c n - M t s v n Tô theo lân c n - M t s v n

ộ ố ấ đđềề ộ ố ấ

ậ ậ

Đư ng biên màu gì ?

Trang 1515 Trang

Tô theo lân c n - M t s v n Tô theo lân c n - M t s v n

ộ ố ấ đđềề ộ ố ấ

ậ ậ

Trang 1616 Trang

Tô màu theo dòng quét Tô màu theo dòng quét

Khái ni m dòng quét Khá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 1818 Trang

Tô hình ch nh t ữ ậ Tô hình ch nh t ữ ậ

l

r

t y

y

b

Trang 1919 Trang

Tô hình tam giác Tô hình tam giác

Input

(X1, Y1), (X2, Y2), (X3, Y3)

đ nhỉ

ờ ư ng h p ợ

Cách tô bư c 1 : S p x p các ớ ắ ế Y2 £ Y1 £ Y3 bư c 2 : Phân tr ớ Theo tung độ

Trang 2020 Trang

Tô hình tam giác Tô hình tam giác

Y1 = Y2 = Y3 Y1 < Y2 = Y3

2 3

1 3 2

1

Y1 < Y2 < Y3 3 Y1 = Y2 < Y3 3

2

1 2 1

Trang 2121 Trang

Tô hình tam giác Tô hình tam giác

1 3 2

Y1

Xmin Xmax

min, k t thúc t ế

max

i c t X i c t X ầ ạ ộ ạ ộ Tô tam giác (Y1 = Y2 = Y3) 1. Tìm Xmin, Xmax 2. Tô dòng Y1 b t ắ đ u t

Trang 2222 Trang

Tô hình tam giác Tô hình tam giác

2 3

l, xr gi a ữ

Y2

y

Tô tam giác (Y1 < Y2 = Y3) L pặ y : Y1 … Y2 1. Tìm hoành đ giao ộ ớ

đi m xể ạ

dòng quét y v i các c nh trái và c nh ph i c a tam giác. ạ

ả ủ

2. Tô dòng y b t ắ đ u t

ầ ạ ộ l, k t ế i c t x

y Y1

thúc t

ạ ộ r. i c t x

1

xl xr

Trang 2323 Trang

Tô hình tam giác Tô 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).

2

6 5 4 3 2 1

8 4 17 4 26 4 35 4 44 4

Trang 2424 Trang

Tô hình tam giác Tô hình tam giác

Caùch tính hoaønh ñoä giao ñieåm

2 x

cu

moi

X laø ñaàu 1 = + x x k

vôùi

- = 1 k - X 2 Y 2 X 1 Y 1

Trang 2525 Trang

Tô hình tam giác Tô hình tam giác

3

Y3

2

Y2

y Y1

1

Trang 2626 Trang

a giác l Tô hình đđa giác l Tô hình

iồ iồ

p0

Cách tô 1. Chia đa giác l

đ nh {p

i có n

p3

0, ồ p1, ... , pn-1} thành n-2 tam giác.

p1

p2

- D

1 p0p1p2 2 p0p2p3

-

...

p0

- D

i p0pipi+1

p1

-

...

pn-1

- D

p2

1. Tô t ng tam giác.

pn-2

n-2 p0pn-2pn-1 ừ

p3

- D

Trang 2727 Trang

a giác Tô hình đđa giác Tô hình

Nguyên lý chia tam giác c t M i ọ đa giác không t ự ắ đ u có th phân chia thành các tam giác. ề ể

Trang 2828 Trang

ậThu t toán tô Thu t toán tô

đđa giác t ng quát a giác t ng quát ổ ổ

ậThu t toán ậ Thu t toán

I1

I2 I3

I4

P}

ymax

P}

y

bư c 1ớ Tìm ymin và ymax ymin = min{yi, (xi, yi) ˛ ymax = max{yi, (xi, yi) ˛

P

bư c 2ớ Tô t ng dòng L pặ y : ymin … ymax

đi m.ể

c1 Tìm các giao đi m.ể c2 S p x p các giao ế c3 Tô các đo n th ng.

y ymin

Trang 3030 Trang

LLưưu ýu ý

B c nh n m ngang ằ ỏ ạ

bỏ

bỏ

Trang 3131 Trang

LLưưu ýu ý

Dòng quét đi qua đ nhỉ

b

d

c a e

y I2 I3 I1 I4

Bình thư ngờ

h f

g

Trang 3232 Trang

LLưưu ýu ý

Dòng quét đi qua đ nhỉ

L iỗ

b

y d I1 I4 I5

I2 I3 c e a

h f

g

Trang 3333 Trang

LLưưu ýu ý

C t b t c nh c theo tr c y ắ ớ ạ ụ 1 đơn vị

b

d 1 1y I1 I2 I3 I4

c e a

h f

g

Trang 3434 Trang

Ví dụVí dụ

{(1, 1) (2, 7) (4, 9) (7, 9) (9, 5) (9, 1) (7, 1) (5, 5) (4, 1)}

9

c

8

b

7

6

5

d

4

3

a

e

2

1

h g

8

1

2

3

4

5

6

7

9

i f

Trang 3535 Trang

Ti n x lý 1 ề ử Ti n x lý 1 ề ử

9

c

8

b

7

6

d

5

4

3

Lo i b các c nh ạ ỏ {c, f, i} a

e

2

1

h g

8

1

2

3

4

5

6

7

9

i f

Trang 3636 Trang

Ti n x lý 2 ề ử Ti n x lý 2 ề ử

9

8

b

7

6

5

d

4

3

a X lý các c nh ử {a, e}

e

2

1

1

2

3

4

5

6

7

8

9

h g

Trang 3737 Trang

TôTô

9

8

b

k=1

7

d

k=-3/4

6

5

4

a

k=1/6

k=-1/2

3

e

k=1/4

k=0

2

1

1

2

3

4

5

6

7

8

9

h g

Trang 3838 Trang

a giác đđa giác

Thông tin c nh ạ Thông tin c nh ạ

caïnh

k

ylower

yupper

xlower

a

1

7

1

1/6

b

7

9

2

1

d

5

9

9

-3/4

e

1

5

9

0

g

1

5

7

-1/2

h

1

5

4

1/4

Trang 3939 Trang

a giác đđa giác

Thông tin các c nh ạ Thông tin các c nh ạ

caïnh

k

ylower

yupper

xlower

a

1

6

1

1/6

b

7

9

2

1

d

5

9

9

-3/4

e

1

4

9

0

g

1

5

7

-1/2

h

1

5

4

1/4

Trang 4040 Trang

PhPhươương trình

o n th ng ng trình đđo n th ng ạ ạ

ẳ ẳ

F(x, y) = (Y2 – Y1)(x – X1) – (X2 – X1)(y – Y1)

(X2,Y2)

(X1,Y1)

Trang 4141 Trang

ịnh bên trong tam giác nh Xác Xác đđ nh bên trong tam giác nh ị

ế th nào ? ế ưư th nào ?

(X3,Y3)

(X2,Y2)

(X1,Y1)

Trang 4242 Trang

ềChi u các ề Chi u các

ủnh c a tam giác đđ nh c a tam giác ỉ ỉ

Tính di n tích tam giác ệ

)

)

)

+

+

- - -

( yx 1 2

y 3

y 1

( yx 3 1

y 2

=

S

( yx 2 3 2 (X2,Y2)

(X2,Y2)

(X3,Y3)

(X3,Y3)

(X1,Y1)

(X1,Y1)

S>0 S<0

Trang 4343 Trang

ậThu t toán ậ Thu t toán

1. Tìm xmin, xmax, ymin, ymax 2. L pặ y : ymin … ymax, x : xmin … xmax

thì N uế (x, y) n m bên trong tam giác ằ

Tô (x, y)

ymax

ymin

Trang 4444 Trang

xmin xmax