Hodgeman
• Trong phần này chúng ta sẽ khảo sát một trong các thuật toán xén đa giác đó là thuật toán Sutherland-Hodgeman.
ThS.GVC Tô Oai Hùng 43
Thuật Toán Sutherland-Hodgeman Hodgeman
• Với mỗi lần xén đa giác dọc theo một biên nào đó của cửa sổ, nếu gọi Vi, Vi+1 là hai đỉnh kề của cạnh ViVi+1, ta có 4 trường hợp có thể xảy ra khi xét từng cặp đỉnh của đa giác ban đầu với biên của cửa sổ như sau:
- Nếu Vi nằm ngoài, Vi+1 nằm trong, ta sẽ lưu giao điểm I (của ViVi+1 với biên của cửa sổ) và Vi+1.
- Nếu Vi, Vi+1 đều nằm trong, ta sẽ lưu cả hai Vi và Vi+1.
- Nếu Vi nằm trong, Vi+1 nằm ngoài, ta sẽ lưu giao điểm I và Vi.
- Nếu cả Vi, Vi+1 đều nằm ngoài, ta không lưu gì cả.
ThS.GVC Tô Oai Hùng 44
Thuật Toán Sutherland-Hodgeman Hodgeman
• Thuật toán Sutherland-Hodgeman cho kết quả rất chính xác khi làm việc với các đa giác lồi.
• Tuy nhiên với các đa giác lõm kết quả
hiển thị có thể sẽ có đoạn thừa.
• Điều này xảy ra khi đa giác sau khi xén bị tách thành hai hay nhiều vùng. Do
ThS.GVC Tô Oai Hùng 45
Thuật Toán Sutherland-Hodgeman Hodgeman
chúng ta chỉ lưu kết quả xuất trong một danh sách các đỉnh, nên đỉnh cuối của danh sách ứng với đa giác trước sẽ nối với đỉnh đầu của danh sách ứng với đa giác sau.
• Một trong nhiều cách để khắc phục
điểm này là phân đa giác lõm thành hai hay nhiều đa giác lồi và xử lí mỗi đa giác lồi riêng.