1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ họa máy tính - Chương 5 Tô màu, Font chữ - Bài 15 ppsx

6 426 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 263,24 KB

Nội dung

Kỹ thuật Đồ hoạ máy tính 84 Chơng 5 tô mu, Font chữ $15. Các thuật toán về đa giác Trong kỹ thuật đồ hoạ có nhiều bài toán phức tạp đợc chuyển về các bài toán về đa giác chính vì vậy trong phần này chúng ta sẽ khảo sát một số thuật toán liên quan đến đa giác Định nghĩa 1: Một đa giác n đỉnh gọi là đa giác lồi nếu đoạn thẳng chứa hai điểm bất kỳ của đa giác nằm trong đa giác Định nghĩa 2: Đa giác thông thờng là đa giác có n đỉnh, n cạnh, mỗi đỉnh là điểm đầu của một cạnh và điểm cuối của một cạnh khác. Mỗi đỉnh không phải là điểm xuất phát của 2 cạnh, các cạnh đa giác không cắt nhau ở các điểm nào khác trên đỉnh của nó 1. Xác định điểm trong hay ngoài đa giác Bài toán : Cho một đa giác thờng và một điểm P hãy xác định P là điểm trong hay điểm ngoài của đa giác Thuật toán thứ nhất: Giả sử đa giác W có các đỉnh P 1 ,P 2 Pn đợc đánh số theo chiều kim đồng hồ Nối P với tất cả các đỉnh P 1 ,P 2 Pn của đa giác W. Ta gọi i là góc tạo bởi PPi và PPi+1 i=1,2 n+1 (P n+1 =P1) E Y X D A X Y B C Kỹ thuật Đồ hoạ máy tính 85 Góc i có dấu + nếu PPi dịch chuyển theo chiều kim đồng hồ tuỳ với PPi+1, ngợc lại i có dấu - khi đó nếu i O i n = = 360 1 thì P là điểm trong của đa giác nếu i i n = = 0 1 thì P nằm ngoài đa giác Thuật toán 2: Để xác định P là điểm trong hoặc ngoài của đa giác ta có thể thực hiện theo thuật toán khác Giả sử cho đa giác W và P là điểm bất kỳ để xác định P là điểm trong hay ngoài đa giác ta thực hiện các bớc sau: theo hớng Bớc 1: Từ P kẻ nửa đờng thẳng s tuỳ ý không giảm tổng quát có thể chọn hớng // với trục OX và phía phải Bớc 2: Tính số giao điểm của N của nửa đờng thẳng l với các cạnh của đa giác Bớc 3: Kiểm tra nếu N chẵn P nằm ngoài, nếu N lẻ P nằm trong Ví dụ: 5 P 5 P 1 4 P 4 1 3 2 P 2 P 3 P 3 P 3 P 5 P 4 P 4 P 2 P 2 P 1 P 1 + + P P 6 l l P P Kỹ thuật Đồ hoạ máy tính 86 Chú ý: 1. Để tính điểm giao của nửa đờng thẳng l với các cạnh của đa giác ta không cần phải tìm điểm giao của l với tất cả các cạnh của đa giác, có thể cải tiến để thuật toán làm việc nhanh hơn dựa vào nhận xét sau: Giả sử P có toạ độ (xo,yo) và Pi có toạ độ (xi,yi), in= 1, . Cạnh (Pi,P i+1 ) không cần phải tính điểm giao với l nếu max(x i ,x i+1 )<x o Cạnh Pi P i+1 có giao với l nếu: min(x i ,x i+1 )>x o và (y i -y o )(y i+1 -y o )<0 2. Thuật toán dùng nửa đờng thẳng l không giải quyết đúng khi l đi qua một đỉnh nào đó của đa giác. Để khắc phục tình trạng này ta có thể đánh số các cạnh của đa giác theo chiều kim đồng hồ và coi các cạnh của đa giác là các đoạn thẳng đứng một đầu và mở đầu kia P 4 P 5 P 3 P P 2 P 1 3. Thuật toán sử dụng nửa đờng thẳng l không giải quyết đúng khi rơi vào các trờng hợp sau: P 6 P 1 l P 5 P l P 3 P 2 N chẵn song P thuộc W Tóm lại thuật toán 2 không phải là thuật toán tổng quát để giải quyết bài toán xác định P là điểm trong hay ngoài đa giác Chơng trình tự lập xem nh bài tập Kỹ thuật Đồ hoạ máy tính 87 2. Thuật toán phân chia đa giác a. Hình thang cơ bản Hình thang cơ bản là hình thang có dạng sau Hình thang cơ bản là hình thang trong đó có 2 cặp đỉnh có cùng toạ độ y (x 1 ,y 1 ) (x 4 ,y 4 ) (x 3 ,y3) (x 2 ,y 2 ) (x 1 ,y 1 ) (x 2 ,y 2 ) (x 4 ,y 4 ) (x 3 ,y3) Nếu x 3 =x 4 hoặc x 1 =x 2 thì hình thang cơ bản biến dạng thành tam giác do đó tam giác là một hình thang cơ bản Hình thang cơ bản là một đa giác đơn giản nhất, việc tô màu trên nó chẳng hạn là rất đơn giản, vì vậy ta phải cần phân chia một đa giác thành tổng các hình thang cơ bản. b. Phân chia đa giác thành các hình thang cơ bản Bài toán : Cho W là một đa giác thờng. Hãy phân chia đa giác thành tổng các hình thang S1, S2, , Sm sao cho : WS S S SS ij mij m ij = = = 12 1 ,, + Thuật toán Brasel và Fagrat : (x 3 ,y 3 ) (x 4 ,y 4 ) (x 1 ,y 1 ) (x 2 ,y 2 ) (x 1 ,y 1 ) (x 1 ,y 1 ) (x 3 ,y 3 ) (x 3 ,y 3 ) (x 2 ,y 2 ) (x 2 ,y 2 ) Kỹ thuật Đồ hoạ máy tính 88 Giả sử các đỉnh của đa giác W là Wi=(xi,yi), i=1,2, ,n. Các đỉnh của đa giác đợc đánh số theo chiều ngợc kim đồng hồ sao cho phần thuộc đa giác luôn luôn nằm về phía của canh WiWi+1. Nếu không chúng ta đánh số lại các đỉnh để đạt đợc điều này để đơn giản cho việc trình bày thuật toán ta giả sử W không có các cạnh // với Ox Bớc 1 : thực hiện phân chia các đỉnh của đa giác thành 3 loại sau : + Đỉnh Wk=(x k ,y k ) gọi là đỉnh lồi nếu có 2 đỉnh Wk-1=(x k-1 ,y k-1 ), Wk+1=(x k+1 ,y k+1 ) thoả mãn điều kiện y k-1 >y k ; y k+1 >y k . + Đỉnh Wk=(xk,yk) gọi là đỉnh lõm nếu có 2 đỉnh Wk-1=(x k-1 ,y k-1 ), Wk+1=(xk+1,yk+1) thoả mãn điều kiện yk-1<yk; yk+1<yk. + Đỉnh Wk=(x k ,y k ) là đỉnh bình thờng nếu nó không lồi, không lõm. Ví dụ trong đa giác trên W 5 là đỉnh lồi W 4 ,W 6 là đỉnh lõm W 1 ,W 2 ,W 3 là đỉnh thờng Bớc 2: Từ đỉnh W k k=1,n của đa giác kẻ các đờng thẳng y=y k , giả sử P 1 ,P 2 Pl là giao của đờng thẳng với các cạnh của đa giác W và giả sử Pi=(x' i ,y k ) i=1,2, ,l và x' 1 <x' 2 < <x' l Nếu các giao điểm Pi trùng với các đỉnh lồi hoặc lõm ta bỏ qua không xem là giao điểm của y=y k với đa giác Nếu giao điểm Pi của y=yk rơi vào đỉnh thờng, ta tính là 1 lần cắt với đa giác. Với cách tính nh vậy đờng thẳng y=y k luôn luôn cắt đa giác W một số chẵn lần, gọi số lần cắt là 2m. Khi đó các đoạn thẳng (P 1 ,P 2 ),(P 3 ,P 4 ) (P 2m-1 P 2m ) là các đoạn nằm trong đa giác. Các đoạn thẳng (P 2 ,P 3 ),(P 4 ,P 5 ) (P 2m-2 P 2m-1 ) là các đoạn nằm ngoài đa giác W1 W2 W3 W4 W5 W1 W2 W3 W4 W6 W5 Kỹ thuật Đồ hoạ máy tính 89 Các hình thang cơ bản sẽ là các hình giới hạn bởi các đoạn thẳng (P 1 ,P 2 ), (P 3 ,P 4 ) (P 2n-1 , P 2m ) và các đoạn thẳng thuộc các cạnh của đa giác Ví dụ: Bài tập: Hãy diễn đạt chính xác thuật toán trên và lập chơng trình phân chia đa giác thành các hình thang cơ bản $16. Các thuật toán tô mu 1. Thuật toán tô màu hình thang cơ bản Giả sử cho hình thang cơ bản có dạng: (x 4 y 4 ) (x 3 y 3 ) (x 1 y 1 ) (x 2 y 2 ) Thuật toán nh sau: 1. Đặt y min =y 1 ; y max =y 3 ; m=y max -y min +1 2. tính hệ số góc Cl=(x 4 -x 1 )/(y 4 -y 1 ) Cr=(x 3 -x 2 )/(y 3 -y 2 ) 2. Đặt y i =y min +(i-1) im=1, tính xx yyC i l i l =+ 11 (). xx yyC i r i r =+ 22 (). W 8 W 1 W 1 W 7 W 6 W 2 W 4 W 3 W 5 W 5 1 2 3 W 2 3 2 4 7 8 6 9 5 5 W 4 6 W 3 . Kỹ thuật Đồ hoạ máy tính 84 Chơng 5 tô mu, Font chữ $ 15. Các thuật toán về đa giác Trong kỹ thuật đồ hoạ có nhiều bài toán phức tạp đợc chuyển về các bài toán về đa giác. đa giác. Các đoạn thẳng (P 2 ,P 3 ),(P 4 ,P 5 ) (P 2m-2 P 2m-1 ) là các đoạn nằm ngoài đa giác W1 W2 W3 W4 W5 W1 W2 W3 W4 W6 W5 Kỹ thuật Đồ hoạ máy tính 89 Các hình thang cơ bản sẽ là các. Đặt y min =y 1 ; y max =y 3 ; m=y max -y min +1 2. tính hệ số góc Cl=(x 4 -x 1 )/(y 4 -y 1 ) Cr=(x 3 -x 2 )/(y 3 -y 2 ) 2. Đặt y i =y min +(i-1) im=1, tính xx yyC i l i l =+ 11 (). xx yyC i r i r =+

Ngày đăng: 24/07/2014, 10:21

TỪ KHÓA LIÊN QUAN