Giải thuật dòng quét cho việc tô màu vùng

Một phần của tài liệu Bài giảng Đồ họa máy tính (Trang 84 - 98)

3.3. Các giải thuật tô miền kín

3.3.2. Giải thuật dòng quét cho việc tô màu vùng

Giải thuật dựa trên ý tưởng sử dụng một đường quét trên trục y của màn hình đi

từ ymaxđến ymincủa vùng cần được tô màu. Với mỗi giá trị y = yiđường thẳng quét cắt các đường biên của vùng cần tô tạo ra đoạn thẳng y = yivới x [xmin, xmax]. Trên đoạn

(a) (b)

79

thẳng đó chúng ta tô màu các điểm tương ứng đi từ xmin đến xmax có các điểm tô (xi, yi)

y = yi.

Đơn giản nhất ví dụ tô màu hình chữ nhật:

procedure scanline_rectg(x1,y1,x2,y2,c :integer) {(x1,y1) là tọa độ điểm dưới cùng bên trái}

{(x2, y2) là tọa độ điểm trên cùng bên phải}

begin

var i,j :integer;

for i := y1 to y2 do for j :=x1 to x2 do

putpixel(i,j,c);

end ;

Phép tô màu 1 đa giác bất kỳ sẽ phức tập hơn rất nhiều so với hình chữ nhật

Giả sử vùng tô đƣợc cho bởi 1 đa giác n đỉnh: pi (xi, yi), i=0,1,....,n-1. Đa giác này có thể là đa giác lồi, đa giác lõm hay đa giác tự cắt....

Các bước tóm tắt chính của thuật toán:

- Tìm ytop, ybottom lần lƣợt là giá trị lớn nhất, nhỏ nhất của tập các tung độ của các đỉnh của đa giác đã cho.

ytop = max{yi,(xi,yi) P},

ybottom = min{yi,(xi,yi) P}.

- Ứng với mỗi dòng quét y = k, với k thay đổi từ ybottomđến ytoplặ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: x0, x1,....

+ 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 (x0, x1), (x2,x3), ..., (x2k,x2k+1).

Ta sẽ gặp 1 số vấn đề sau:

- Ứng với mỗi dòng quét không phải lúc nào tất cả các cạnh của đa giác cũng tham gia cắt dòng quét. Do đó để cải thiện tốc độ cần phải có một cách nào đó để hạn chế đƣợc số cạnh cần tìm giao điểm ứng với mỗi dòng quét.

80

- Nếu số giao điểm tìm đƣợc giữa các cạnh đa giác và dòng quét là lẻ (điều này chỉ xảy ra khi dòng quét sẽ đi qua các đỉnh của đa giác) khi đó ta sẽ tính số điểm là 2 thì có thể tô không chính xác. Ngoài ra, việc tìm giao điểm của dòng quét với các cạnh nằm ngang là trường hợp đặc biệt...

Hình 3.13 Giải thuật scanline cho một đa giác bất kỳ

Để giải quyết các vấn đề trên ta có các phương pháp sau:

+ Danh sách các cạnh kích hoạt (AET - Active Edge Table)

Mỗi cạnh của đa giác đƣợc xây dựng từ 2 đỉnh kề nhau Pi(xi,yi) và Pi+1(xi+1,yi+1) gồm các thông tin sau:

ymin: giá trị nhỏ nhất trong 2 đỉnh của cạnh

xIntersect: hoành độ giao điểm của cạnh với dòng quét hiện đang xét

DxPerScan: giá trị 1/m (m là hệ số góc của cạnh)

DeltaY: khoảng cách từ dòng quét hiện hành tới đỉnh ymax

Hình 3.14 Thông tin của một cạnh

Danh sách các cạnh kích hoạt AET: danh sách này dùng để lưu các tập cạnh của

đa giác có thể cắt ứng với dòng quét hiện hành và tập các điểm giao tương ứng. Nó có một số đặc điểm:

Các cạnh trong danh sách đƣợc sắp xếp theo thứ tự tăng dần của các hoành độ giao điểm để có thể tô màu các đoạn giao một cách dễ dàng.

81

Thay đổi ứng với mỗi dòng quét đang xét, do đó danh sách này sẽ đƣợc cập nhật liên tục trong quá trình thực hiện thuật toán. Đầu tiên ta có danh sách chứa toàn

bộ các cạnh của đa giác gọi là ET (Edge Table) đƣợc sắp xếp theo thứ tự tăng dần của ymin, rồi sau mỗi lần dòng quét thay đổi sẽ di chuyển các cạnh trong ET thoả điều kiện sang AET.

Một dòng quét y = k chỉ cắt 1 cạnh của đa giác khi và chỉ khi k ≥ ymin và DeltaY

>0. Chính vì vậy mà với các tổ chức của ET (sắp theo thứ tự tăng dần của ymin) điều kiện để chuyển các cạnh từ ET sang AET sẽ là k ≥ ymin; và điều kiện để loại một cạnh

ra khỏi AET là DeltaY ≤0

+ Công thức tìm giao điểm nhanh

Nếu gọi xk, xk+1 lần lƣợt là các hoành độ giao điểm của một cạnh nào đó với các dòng quét y = k và y = k+1 ta có:

xk+1 - xk = 1/m ((k+1) - k) = 1/m hay xk+1 = xk + 1/m

Hình 3.15 Công thức tìm giao điểm nhanh

Như vậy nếu lưu hoành độ giao điểm ứng với dòng quét trước lại, cùng với hệ số góc của cạnh, ta xác định đƣợc hoành độ giao điểm ứng với dòng quét kế tiếp theo công thức trên. Nên thông tin của cạnh có 2 biến: DxPerScan, xIntersect.

+ Trường hợp dòng quét đi ngang qua một đỉnh:

Tính 1 giao điểm nếu chiều của 2 cạnh kề của đỉnh đó có xu hướng tăng hay giảm

Tính 2 giao điểm nếu chiều của 2 cạnh kề của đỉnh đó có xu hướng thay đổi, nghĩa là tăng-giảm hay giảm-tăng.

Hình 3.16 Qui tắc tính một giao điểm (A) và hai giao điểm (B)

82

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3

Chọn một phương án đúng cho mỗicâu hỏi sau :

1. Giải thuật sau là giải thuật gì?

Procedure Ham (x, y, c1, c2:integer)

begin

if (getpixel(x, y) == c1)then

begin

putpixel(x, y, c2); Ham (x-1, y, c1, c2);

Ham (x+1, y, c1, c2); Ham (x+1, y+1, c1, c2);

Ham (x-1, y-1, c1, c2); Ham (x, y-1, c1, c2);

Ham (x, y+1, c1, c2);

end;

end;

[a]--Giải thuật tô màu dòng quét dùng 6 điểm lân cận

[b]--Giải thuật tô màu dùng đệ qui để tô vùng kín dùng mẫu tô

[c]--Giải thuật tô màu loang dùng 6 điểm lân cận

[d]--Giải thuật tô màu loang dùng 4 điểm lân cận

2. Giải thuật sau là giải thuật gì?

procedure Ham (x, y, c1, c2:integer)begin

if (getpixel(x, y) == c1) then

begin

putpixel(x, y, c2);

Ham (x-1, y, c1, c2); Ham (x+1, y, c1, c2);

Ham (x, y+1, c1, c2); Ham (x, y-1, c1, c2);

end;

end;

[a]--Giải thuật tô màu dùng đệqui để tô vùng kín dùng mẫu tô

[b]--Giải thuật tô màu loang dùng 4 điểm lân cận

[c]--Giải thuật tô màu dòng quét dùng 4 điểm lân cận

[d]--Giải thuật tô màu loang dùng 6 điểm lân cận

3. Hệ toạ độ thiết bị chuẩn (NDCS) có kích thước màn hình hiển thị là hình chữ nhật ngang có chiều dài gấp đôi chiều rộng. Vậy nếu một hình chữ nhật đứng (có chiều dài

gấp đôi chiều rộng khi hiển thị trên màn hình sẽ cho:

[a]--Hình chữ nhật có chiều dài gấp 1.5 chiều rộng

83

[b]--Hình vuông

[c]--Vẫn là hình chữ nhật đứng

[d]--Hình chữ nhật nằm ngang (chiều dài gấp đôi chiều rộng)

4. Cho cửa sổ xén tỉa có góc trái dưới (1,-2) và góc phải trên (6,8), mã vùng 4-bit của điểm A(7,9) là:

[a]--1010

[b]--1000

[c]--0110

[d]—0010

5. Cho cửa sổ xén tỉa có góc trái dưới (1,-2) và góc phải trên (6,8), mã vùng 4-bit của điểm B(-1,-4) là:

[a]--0000

[b]--0110

[c]--0100

[d]—0101

6. Mã vùng 4-bit của điểm A là (1001), theo giải thuật Cohen Sutherland thì điểm này

sẽ cắt các cạnh của cửa sổ cắt tỉa là:

[a]--x = xmax và y = ymax

[b]--x = xmax và y = ymin

[c]--x = xmin và y = ymin

[d]--x = xmax và y = ymax

7. Mã vùng 4-bit của điểm G là (0100), theo giải thuật Cohen Sutherland thì điểm này

sẽ cắt các cạnh của cửa sổ cắt tỉa là:

[a]--x=xmax

[b]--x=x min

[c]--y=ymax

[d]--y=ymin

8. Cho mã vùng 4-bit của hai điểm cuối đoạn AB lần lƣợt là A(0000) và B(0000), theo giải thuật Cohen Sutherland thì hạng mục xén tỉa của đoạn AB là:

[a]--Không thuộc hạng mục nào cả

[b]--Hoàn toàn nằm ngoài

[c]--Bị xén tỉa

[d]--Hoàn toàn nằm trong

84

9. Giả sử cạnh AB là một cạnh của cửa sổ xén tỉa, P0 P1... PN-1 là danh sách các đỉnh

của đa giác cần xén tỉa (đa giác lồi hướng dương). Theo giải thuật Hogman thì Pi-1 và

Piđều nằm bên phải của cạnh AB thì đỉnh đƣợc đƣa vào danh sách của đa giác sau khi xén tỉa(VertexOutput) là:

[a]--Pi-1

[b]--Pi

[c]--Cả Pi-1 và Pi

[d]--Không có đỉnh nào

10. Giả sử cạnh AB là một cạnh của cửa sổ xén tỉa, P0 P1... PN-1 là danh sách các đỉnh

của đa giác cần xén tỉa (đa giác lồi hướng dương). Theo giải thuật Hogman thì Pi-1 nằm bên phải và Pi nằm bên trái của cạnh AB thì đỉnh đƣợc đƣa vào danh sách của đa giác sau khi xén tỉa (VertexOutput) là:

[a]--Giao điểm I của Pi-1 Pi với cạnh AB và Pi

[b]--Giao điểm I và Pi-1

[c]--Chỉ có giao điểm I

[d]--Cả Pi-1 và Pi

11. Giả sử cạnh AB là một cạnh của cửa sổ xén tỉa, P0 P1... PN-1 là danh sách các đỉnh

của đa giác cần xén tỉa (đa giác lồi hướng dương). Theo giải thuật Hogman thì Pi-1 nằm bên trái và Pi nằm bên phải của cạnh AB thì đỉnh đƣợc đƣa vào danh sách của đa giác sau khi xén tỉa (VertexOutput) là:

[a]--Cả Pi-1 và Pi

[b]--Giao điểm I của Pi-1 Pi với cạnh AB và Pi

[c]--Giao điểm I của Pi-1 Pi với cạnh AB

[d]--Không có đỉnh nào

12. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dưới L(3,1), góc phải trên R(7,4). Cho đoạn IJ có toạ độ là I(8,2) và J(8,3), dùng giải thuật Lyangbarsky tính các giá trị P1 ,

P2 , P3 và P4

[a]--P1 =0, P2 =0, P3 = -1 và P4 =1

[b]--P1 = -1, P2 = 1, P3 = 0 và P4 = 0

[c]--P1 = 1, P2 = - 1, P3 = 0 và P4 = 0

[d]--P1 = 1, P2 = - 1, P3 = 1 và P4 = -1

13. Trong các câu nói sau câu nào sai ? (theo giải thuật Cohen Sutherland)

[a]--Đoạn thẳng nằm hoàn toàn ngoài khi nó phạm bất kỳ một trong bốn bất đẳng thức sau: X1.X2 > Xmax; X1.X2 ‹ Xmin; Y1.Y2 > Ymax; Y1.Y2 ‹ Ymin;

85

[b]--Đoạn thẳng nằm hoàn toàn ngoài khi nó phạm bất kỳ một trong bốn bất

đẳng thức sau: X1.X2 ≥ Xmax; X1.X2≤ Xmin; Y1.Y2 ≥ Ymax; Y1.Y2≤ Ymin;

[c]--Đoạn thẳng đƣợc hiển thị khi cảhai đầu cuối đều trong cửa sổ hiển thị [d]--Đoạn thẳng đƣợc hiển thị khi: P1 mã or P2 mã =0000

14. Giải thuật LyangBarsky dựa vào phương trình đường thẳng:

[a]--Không tường minh f(x,y) = 0

[b]--Do ông đƣa ra

[c]--Tường minh y=f(x)

[d]--Tham số x = x(t), y = y(t) có t Є [0,1]

15. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dưới L(-2,-2), góc phải trên R(9,4). Cho đoạn CD có toạ độ là C(1,-3) và D(6,5), dùng giải thuật Lyangbarsky tính các giá

trị P1 , P2 , P3và P4

[a]--P1 = -1, P2 = 1, P3 = 7 và P4 = -7

[b]--P1 = -6, P2 = 6, P3 = 8 và P4 = -8

[c]--P1 = -2, P2 = 2, P3 = 5 và P4 = -5

[d]--P1 = -5, P2 = - 5, P3 = 8 và P4 = -8

16. Dựa vào giải thuật LyangBarsky thì muốn tính giá trị mới u0 và u1nhƣ sau :

[a]--

[b]--

[c]--

[d]--

17. Trong giải thuật LyangBarsky thì để tính các giá trị trung gian q1 , q2 , q3 và q4 nhƣ sau:

[a]--q1=xmin - x1, q2=x1-xmax , q3=ymin - y1, q4=y1-ymax.

[b]--q1=xmin - x1, q2=xmax-x1 , q3=ymin - y1, q4=ymax-y1.

86

[c]--q1=xmin - x1, q2=xmax-x1 , q3=y1 - ymin, q4=y1-ymax.

[d]--Tất cảđều sai

18. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dưới L(-3,1), góc phải trên R(2,6). Dùng giải thuật Cohen Sutherland tìm hạng mục cắt tỉa của MN có M(-4,2) và N(-1,3).

[a]--(-4,2) và (-1,2)

[b]--(2, 3) và (-1,3)

[c]--(-3, 7/3) và (-1,3)

[d]--(-3,5) và (-1,3)

19. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dưới L(1,1), góc phải trên R(6,5). Dùng giải thuật Cohen Sutherland tìm hạng mục cắt tỉa của EF có E(2,2) và F(7,4).

[a]--(1,2) và (7,4)

[b]--(2, 2) và (6, 18/5)

[c]--(2, 3) và (-1,3)

[d]--(2, 2 ) và (1,18/5)

20. Hệ tọa độ thiết bị chuẩn (Normalized Devices coordinates) :

[a]--Một hình ảnh hiển thị đƣợc trên thiết bị này là chính xác thì chƣa chắc hiển

thị chính xác trên thiết bị khác

[b]--Một hình ảnh hiển thị đƣợc trên thiết bị này là chính xác thì chắc chắn sẽ hiển thị chính xác trên thiết bị khác

[c]--Một hình ảnh hiển thịđược trên thiết bị này sẽ tạo ra hình ảnh tương tự trên thiết bị khác

[d]--Tất cảđều sai

Bài tập

1. Cho cửa sổ với các đường biên: xmin = 10, ymin = 47, xmax = 76, ymax = 165 và các đoạn thẳng:

+ Đoạn thẳng AB với điểm A(33, 210); điểm B(121, 187) + Đoạn thẳng CD với điểm C(-56, 173); điểm D(142, 2) + Đoạn thẳng EF với điểm E(76, 68); điểm F(19, 156)

Áp dụng giải thuật Liang-Barsky xác định chính xác phần nào trong các đoạn thẳng trên đƣợc hiển thị.

2. Cho cửa sổ với các đường biên: xmin = 10, ymin = 47, xmax = 76, ymax= 165 và tứ giác ABCD với điểm A(-33, 141); B(53, 145); C(45, 76); D(-25, 82). Áp dụng giải thuật Hodgman xác định chính xác phần nào của tứ giác ABCD đƣợc hiển thị.

87

3. Tìm ảnh của tam giác ABC với các toạ độ A(20,60), B(10,5), C(60,5) trong phép ánh xạ từ cửa sổ có các đường biên xwmin=ywmin= 20, xwmax=80, yvmax=60 vào khung nhìn có các đường biên xvmin = yvmin = 0, xvmax=yvmax =120

4. Cho cửa sổ với các đường biên: xmin = 40, ymin = 40, xmax = 180, ymax = 100 và các điểm A(93, 147); điểm B(121, 187); điểm C(77, 82); điểm D(136, 60); điểm E(93, - 20); điểm F(168, 160)

a. Áp dụng giải thuật Liang-Barsky xác định chính xác phần nào trong các đoạn thẳng AB, CD, EF đƣợc hiển thị.

b. Tìm ảnh của tam giác AEF trong phép ánh xạ từ cửa sổ vào khung nhìn với các đường biên xvmin = 10, yvmin = 20, xvmax= 290, yvmax =200.

5. Cho cửa sổ với các đường biên: xmin = 10, ymin = 20, xmax = 50, ymax = 80 và các điểm A(-30, 116); điểm B(90, 8); điểm C(0, 0); điểm D(5, 75); điểm E(50, 40); điểm F(82, 64)

a. Áp dụng giải thuật Cohen- Sutherland xác định chính xác phần nào trong các đoạn thẳng AB, CD, EF đƣợc hiển thị.

b. Tìm ảnh của tam giác ABC trong phép ánh xạ từ cửa sổ vào khung nhìn với các đường biên xvmin = 20, yvmin = 10, xvmax= 140, yvmax =130.

6. Cho cửa sổ với các đường biên: xmin = 20, ymin = 20, xmax = 80, ymax= 50 và các điểm A(-28, 92); điểm B(36, 92); điểm C(35, 16); điểm D(155, 4); điểm E(36, 36); điểm F(66, 41).

a. Áp dụng giải thuật Chia trung điểm xác định chính xác phần nào trong các đoạn thẳng AB, CD, EF đƣợc hiển thị.

b. Tìm ảnh của tam giác ABE trong phép ánh xạ từ cửa sổ vào khung nhìn với các đường biên xvmin = 20, yvmin = 10, xvmax= 140, yvmax =130.

7. Cho cửa sổ với các đường biên xmin= 55, xmax= 105, ymin = 35, ymax =85, và tam giác ABC với điểm A(27, 31); B(111, 112); C(200, 0).

a. Áp dụng giải thuật Hodgman xác định chính xác phần hiển thị của tam giác ABC?

b. Tìm ảnh của tam giác ABC trong phép ánh xạ từ cửa sổ vào khung nhìn với các đường biên xvmin = 0, yvmin = 10, xvmax= 100, yvmax = 110.

8. Cho cửa sổ với các đường biên xmin= 30, xmax=90, ymin = 70, ymax =130, và tứ giác ABCD với điểm A(30, 194); B(130, 34); C(90, 70); D(0, 0).

a. Áp dụng giải thuật Hodgman xác định chính xác phần hiển thị của tam giác ABCD?

88

b. Tìm ảnh của tứ giác ABCD trong phép ánh xạ từ cửa sổ vào khung nhìn với các đường biên xvmin = 30, yvmin = 70, xvmax= 90, yvmax = 130.

9. Cho cửa sổ với các đường biên xmin= 18, xmax=81, ymin = 115, ymax =147 và các đoạn thẳng:

+ Đoạn thẳng AB với điểm A(112, 190); điểm B(42, 39)

+ Đoạn thẳng CD với điểm C(48, 123); điểm D(169, 117)

+ Đoạn thẳng EF với điểm E(87, 67); điểm F(198, 48)

Áp dụng giải thuật Liang-Barsky xác định chính xác phần nào trong các đoạn thẳng trên đƣợc hiển thị.

10. Cho cửa sổ với các đường biên xmin= 18, xmax=100, ymin = 81, ymax =120 và các đoạn thẳng:

+ Đoạn thẳng AB với điểm A(6, 86); điểm B(72, 146)

+ Đoạn thẳng CD với điểm C(86, 101); điểm D(181, 107)

+ Đoạn thẳng EF với điểm E(35, 101); điểm F(72, 108)

Áp dụng giải thuật Cohen - Sutherland xác định chính xác phần nào trong các đoạn thẳng trên đƣợc hiển thị.

11. Cho cửa sổ với các đường biên xmin= 48, xmax=133, ymin = 64, ymax=149, và tứ giác ABCD với điểm A(15, 107); B(103, 125); C(170, 82); D(0, 0).

a. Áp dụng giải thuật Hodgman xác định chính xác phần hiển thị của tam giác ABCD?

b. Tìm ảnh của tứ giác ABCD trong phép ánh xạ từ cửa sổ vào khung nhìn với các đường biên xvmin = 30, yvmin = 70, xvmax= 90, yvmax = 130.

Hướng dẫn giải bài tập

1.

+ Xén tỉa đoạn thẳng AB: ta có:

p1 = -88, q1 = 23, p2 = 88, q2 = 43,p3 = 23, q3 = 163, p4 = -23, q4 = -45

u1 = 1.956522, u2 = 0.4886364

u1>u2do đó kết luận đoạn thẳng AB nằm ngoài cửa sổ + Xén tỉa đoạn thẳng CD: ta có

p1 = -198, q1 = -66, p2 = 198, q2 = 132, p3 = 171, q3 = 126, p4 = -171,

q4 = -8

u1 = -66/-198, u2 = 132/198

89

Đoạn thẳng sau CD xén tỉa thành C‘D‘ với C‘(10, 116); D‘(76, 59)

+ Xén tỉa đoạn thẳng EF: ta có

p1 = 57, q1 = 66, p2 = -57, q2 = 0, p3 = -88, q3 = 21, p4 = 88, q4 = 97

u1 = 0, u2 = 1 Đoạn thẳng nằm trong cửa sổ

2. Xén tỉa đoạn thẳng AB với biến trái cửa sổ có giao điểm A‘(10, 143), điểm A nằm ngoài, B nằm trong lưu lại điểm A‘ và B. Xén tỉa đoạn thẳng BC có hai điểm B, C đều nằm trong cửa sổ lưu lại điểm C. Xén tỉa đoạn thẳng CD với biên trái có giao điểm D‘ (10, 79) có điểm C ở trong, điểm D ở ngoài, lưu điểm D. Xén tỉa đoạn thẳng DA với hai điểm A, D đều nằm ngoài do đó không lưu giữ điểm nào.Tứ giác ABCD được xén tỉa thành A‘BCD‘.

3. Xén tỉa đoạn thẳng AB với biên trái cửa sổ có giao điểm(20, 60) trùng điểm

A với điểm A nằm trong cửa sổ, điểm B nằm ngoài, giữ lại điểm A. Xén tỉa đoạn thẳng

BC với biên trái có giao điểm B‘(20, 50) với điểm B nằm ngoài, C nằm trong giữ lại điểm B‘ và C. Xén tỉa CD với cửa sổ có A, C đều nằm trong nên giữ lại điểm C, tam giác ABC đƣợc xén tỉa thành AB‘C.

Tính sx = 2

Tính sy = 3

Ánh xạ cửa sổ vào khung nhìn, áp dụng công thức ta có A(20, 6) trở thành A‘(0, 120). B‘(20, 50) trở thành B‘‘(0, 90). C(60, 50) trở thành C‘(89, 90).

4.

a.

+ Xén tỉa đoạn thẳng AB:

p1 = -28, q1 = 53, p2 = 28, q2 = 87, p3 = -40, q3 = 107, p4 = 40, q4 = -47

u1 = 0= 0/0, u2 = -1.175= -47/40

Do u1> u2 đoạn thẳng nằm ngoài cửa sổ

+ Xén tỉa đoạn thẳng CD

p1 = -59, q1 = 37, p2 = 59, q2 = 103, p3 = 22, q3 = 42, p4 = -22, q4 = 18

u1 = 0= 0/0

u2 = 1= 1/1

90

Đoạn thẳng nằm trong cửa sổ + Xén tỉa đoạn thẳng EF

p1 = -75, q1 = 53, p2 = 75, q2 = 87, p3 = -180, q3 = -60, p4 = 180, q4 = 120

u1 = -60/-180, u2 = 120/180 Đoạn thẳng sau khi xén tỉa:

E‘ (118, 40) F‘ (143, 100)

b.

Xén tỉa đoạn thẳng AE với cửa sổ, AE trở thành A‘(93, 100) E‘(93, 40)

Xén tỉa đoạn thẳng AF với cửa sổ ta có AF nằm ngoài cửa sổ. Tam giác AEF trở thành A‘HE‘F‘

Ánh xạ điểm A‘; H sang khung nhìn thành A‘‘(116, 200) H‘(116, 20)

Ánh xạ điểm E‘; F‘ sang khung nhìn thành E‘‘(166, 20) F‘‘(216, 200)

5.

a. Đoạn thẳng AB với điểm A có mã 1001 điểm B có mã 0110, thực hiện xén tỉa AB với biên trái đoạn thẳng AB thành đoạn thẳng A‘B với A‘(10, 80) có mã 0000. Tiếp tục xén tỉa đoạn thẳng A‘B với biên phải ta đƣợc giao điểm B‘(50, 44) có mã

0000, kết thúc xén tỉa đoạn thẳng AB thành đoạn thẳng A‘B‘. Xén tỉa đoạn thẳng CD với điểm C có mã 0101 điểm D có mã 0001, hai điểm này có mã thứ nhất đều bằng 1

do đó đều nằm về phía trái của cửa số, kết thúc xén tỉa. Xén tỉa đoạn thẳng EF với điểm E có mã 0000, điểm F có mã 0010, thực hiện xén tỉa với biên phỉa ta đƣợc điểm F‘ (50, 40) có mã 0000 trùng điểm E, kết thúc

b. Xén tỉa tam giác ABC với biên trái ta đƣợc đa giác A‘BC‘ với điểm A‘(10,

80), điểm C nằm phía dưới cửa sổ. Xén tỉa A‘BC‘ với biên trên đa giác được giữ nguyên. Xén tỉa đa giác A‘BC‘ với biên phải ta đƣợc đa giác A‘B‘ D‘C‘ với điểm B‘(50, 44), D‘ nằm dưới cửa sổ. Xén tỉa A‘B‘D‘C‘ với biên dưới được đa giác A‘B‘D‘‘C‖, với D‘‘(50, 20) C‘‘(10, 20). Ánh xạ điểm A‘ qua khung nhìn thành A‘‘(20, 130).Ánh xạ điểm B‘ qua khung nhìn thành B‘‘(140, 58). Ánh xạ điểm D‘‘ qua khung nhìn thành D‘‘‘(140, 10).Ánh xạ điểm B‘ qua khung nhìn thành B‘‘(20, 10)

6.

91

a. Đoạn thẳng AE có điểm A với mã 1001, điểm E có mã 0000, gọi A1 trung điểm đoạn thẳng AE với A1(4, 64) có mã 1001, đoạn thẳng AE đƣợc rút ngắn thành A1E. Gọi A2 là trung điểm A1E với A2(4, 50) có mã 0000 đoạn thẳng A1E đƣợc xén tỉa thành A2E. Kết thúc. Đoạn thẳng CD có điểm C với mã 0100, điểm D với mã 0110, mã(C) and mã(D) ≠ 0000 nên đoạn thẳng CD nằm ngoài cửa sổ. Đoạn thẳng EF với điểm E có mã 0000, điểm F có mã 0000, do đó đoạn thẳng EF nằm hoàn toàn trong cửa sổ

b. Xén tỉa tam giác ABE với biên trái ta đƣợc tứ giác A‘B‘BE với điểm A‘(20,

50) B‘(20, 92). Xén tỉa ABE với biên bên trên ta đƣợc tam giác A‘CE với C(36, 50). Ánh xạ điểm A‘ qua khung nhìn thành A‘‘(20, 130). Ánh xạ điểm C qua khung nhìn thành C‘(53, 130). Ánh xạ điểm E qua khung nhìn thành E‘(52, 74)

7.

a. Xén tỉa tam giác ABC với biên trái, tam giác trở thành tứ giác A‘BCD với A(55, 58) D là điểm nằm dưới cửa sổ. Xén tỉa tứ giác A‘BCD với biên trên, đa giác A‘B‘ECD với điểm B‘(83, 85) điểm E nằm phía bên phải cửa sổ. Xén tỉa đa giác A‘B‘ECD với biên phải, đa giác A‘B‘ECD thành đa giác A‘B‘E‘C‘D với E‘(105, 85) C‘ nằm dưới cửa sổ. Xén tỉa đa giác A‘B‘E‘C‘D với biên dưới, đa giác trở thành A‘B‘E‘C‘D‘với điểm D‘(55, 35), C‘‘(105, 35). Kết thúc

b. Ánh xạ điểm A‘ qua khung nhìn thành A‘‘(0, 56), Ánh xạ điểm B‘ qua khung nhìn thành B‘‘(56, 110), Ánh xạ điểm E‘ qua khung nhìn thành E‘‘(100, 110), Ánh xạ điểm D‘ qua khung nhìn thành D‘‘(0, 10), Ánh xạ điểm C‘‘ qua khung nhìn thành C‘‘‘(100, 10)

8.

a. Xén tỉa tứ giác ABCD với biên trái thành tứ giác ABCD‘; với điểm D‘ nằm dưới cửa sổ. Xén tỉa đa giác với biên trên đa giác trở thành ngũ giác A‘BCD‘E với điểm A‘(70, 130), E (30, 130). Xén tỉa đa giác với biên bên phải đa giác trở thành A‘B‘CD‘E với B‘(90, 98). Xén tỉa đa giác với biên bên dưới đa giác trở thành A‘B‘CD‘‘E với D‘‘(30, 70)

b. Ánh xạ điểm A‘ thành A‘‘(0, 56), Ánh xạ điểm B‘ thành B‘‘(56, 110), Ánh

xạ điểm C thành C‘(100, 110), Ánh xạ điểm D‘ thành D‘‘(100, 10), Ánh xạ điểm E thành E‘(0, 10)

Một phần của tài liệu Bài giảng Đồ họa máy tính (Trang 84 - 98)

Tải bản đầy đủ (PDF)

(227 trang)