Giao hai đa giác

Một phần của tài liệu Hướng dẫn làm đồ họa vi tính giáo trình cơ bản (Trang 80 - 85)

M Ở ĐẦU

5.5. Giao hai đa giác

Thut toán Sutherland-Hodgman

Ký hiêu Subj và Clip là danh sách các đỉnh của hai đa giác (S)(C) tương ứng. Có bốn khả năng xảy ra giữa mỗi cạnh của (S) và của (C):

1. Hai đỉnh F và S nằm trong: xuất S.

2. Đỉnh F nằm trong và S nằm ngoài: tìm giao điểm I và xuất nó. 3. Hai đỉnh F và S nằm ngoài: không xuất.

Hình 5.10: Bn trường hp vi mi cnh ca (S)

1. Danh sách Subj sau khi cắt (S) với cạnh bên trái của (C):

(1, 2, D, E, F, G, 3, 4, I, A, 1).

2. Danh sách Subj sau khi cắt (S) với cạnh bên dưới của (C):

(5, 6, E, F, 7, 5, 4, I, A, 1, 5).

3. Danh sách Subj sau khi cắt (S) với cạnh bên phải của (C):

(8, 9, F, 7, 5, 4, I, A, 1, 5, 8).

4. Danh sách Subj sau khi cắt (S) với cạnh bên trên của (C):

(9, F, 7, 5, 4, I, 10, 11, 5, 8, 9).

Thut toán Weiler-Atherton

Cách tiếp cận của Weiler-Atherton nhằm tìm ra giao của hai đa giác bất kỳ, thậm chí có lỗ hổng trong các đa giác. Ngoài ra có thể tìm phần hợp và hiệu hai đa giác nữa. Xét ví dụ hình 5.12 sau:

Hình 5.12: Ví d thut toán Weiler-Atherton

Hai đa giác (S) (C)được biểu diễn bởi danh sách các đỉnh, ký hiệu Subj = (A, B, C, D, E, A) Clip = (a, b, c, d, e, a) tương ứng.

• Tất cả các giao điểm của hai đa giác được xác định và lưu vào một danh sách. Trong ví dụ trên có tất cả sáu giao điểm: 1, 2, 3, 4, 5, 6.

• Thực hiện tiến trình: “lần theo hướng thuận và nhảy” là xây dựng hai danh sách:

Subj: (A, 1, B, 2, C, 3, 4, D, 5, 6, E, A)

Clip: (a, b, 4, 5, c, d, e, 6, 3, 2, 1, a)

Xuất phát từ giao điểm đi vào” là điểm đi từ ngoài vào trong của đa giác (C),

duyệt trên (S) đến khi gặp giao điểm thì chuyển sang duyệt trên (C), vàlặp lại.

Quá kết thúc khi gặp điểm xuất phát ban đầu. Tiếp tục kiểm tra giao điểm trên (S)chưa được đi qua và lặp lại tiến trình trên. Ta có hai đa giác sinh ra là (1, B, 2, 1) và (3, 4, 5, 6, 3).

Hp hai đa giác (S) ∪∪∪∪ (C)

Đi trên (S) theo hướng thuận cho đến khi gặp “đim ra” là điểm đi từ trong ra ngoài của đa giác (C)duyệt cho đến khi gặp giao điểm khác với (C)thì duyệt sang (C) cho đến khi gặp giao điểm kế tiếp rồi chuyển sang (S). Quá trình kết thúc khi gặp điểm xuất phát ban đầu. Kết quả (S)∪ (C) gồm hai đa giác:

• (2, C, 3, 2) (lỗ hỗng).

Hiu hai đa giác (C) \ (S)

Đi trên (S) theo hướng thuận cho đến khi gặp “đim vào” duyệt cho đến khi gặp giao điểm khác với (C) thì duyệt sang (C) theo hướng ngược cho đến khi gặp giao

điểm kế tiếp rồi chuyển sang (S). Quá kết thúc khi gặp điểm xuất phát ban đầu.

• (C) \ (S): (1, B, 2, 3, 4, b, a, 1); (5, 6, e, d, c, 5).

• (S) \ (C): (4, 5, D, 4); (6, 3, C, 2, 1, A, E, 6).

Một phần của tài liệu Hướng dẫn làm đồ họa vi tính giáo trình cơ bản (Trang 80 - 85)

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

(120 trang)