Điểm bên trong/ bên ngoài đa giác

Một phần của tài liệu Đồ án Thiết kế hệ thống kiểm tra các quan hệ hình học trong không gian 2D và 3D (Trang 35)

III. CÁC THUẬT TOÁN KIỂM TRA SỰ TƯƠNG QUAN GIỮA CÁC ĐỐI TƯỢNG HÌNH HỌC

7. Điểm bên trong/ bên ngoài đa giác

Lun văn tt nghip

Thiết kế h thng kim tra cácc quan h hình hctrang 36 trang 36

Giải thuật này nhằm xác định một điểm cho trước có nằm bên trong một đa giác đơn phẳng hay không.

Giải thuật xây dựng dựa trên định lý mang tên JORDAN sau đây:

“Mỗi đường cong, kín, đơn, phẳng, một chiều, phân hoạch mặt phẳng thành hai miền, một trong hai miền đó hoàn toàn chứa những đường thẳng nào đó, miền còn lại thì không có tính chất đó”.

Trong định lý trên đây một trong hai miền sẽ được gọi là miền trong (gồm bản thân đường cong và phần mặt phẳng giới nội bởi đường cong). Không thuộc miền trong gọi là miền ngoài.

Định lý này vẫn đúng cho trường hợp đa giác đơn phẳng một chiều như là một trường hợp riêng.

Từ định lý này dẫn đến hệ quả sau:

Từ một điểm P bất kỳ, vẽ một tia chỉ cắt đa giác ở những điểm trong của các cạnh (nghĩa là : không đi qua đỉnh nào của đa giác); nếu số giao điểm là lẻ thì P là điểm trong, nếu số giao điểm là chẵn thì P là điểm ngoài”.

Về mặt kỹ thuật mọi đường cong đơn, phẳng, kín, liên thông, không tự cắt đều có thể tiếp cận tuyến tính bằng một đa giác bao gồm một số hữu hạn các cạnh liên tiếp. Vì vậy cho phép xây dựng một giải thuật test quan hệ trong/ ngoài chỉ bằng cách xét số giao điểm của tia có gốc là điểm cần xét.

Giải thuật:

- Chọn Px là nửa đường thẳng xuất phát từ P song song với trục Ox, hướng về phía x>0. Lấy P=(x,y).

- P là điểm cần xét.

- Nếu (P là một đỉnh) hoặc (P thuộc trong một cạnh) thì Return (P điểm trong)

- Ngược lại, xác định giao điểm Px với các cạnh đa giác {

Lun văn tt nghip

Thiết kế h thng kim tra cácc quan h hình hctrang 37 trang 37

. Nếu y = yi thì xét hai cạnh có một đầu là Pi (1)

.. Nếu cả hai đầu kia ở một phía của Pi thì tính Px cắt cả hai cạnh

. Ngược lại (1)

Nếu y > Max(yi,yi+1) hay y<Min(yi,yi+1) (2) Thì Px không cắt cạnh Ci

. Ngược lại (2)

.. Nếu x <= Min (xi,xi+1) (3) Thì Py cắt cạnh Ci

. Ngược lại (3)

.. Xét tọa độ giao điểm (yo,xo) của Px với cạnh Ci Nếu x >= xo thì Px không cắt Ci

}

- Nếu số giao điểm lẻ

. Return P thuộc đa giác.

Một phần của tài liệu Đồ án Thiết kế hệ thống kiểm tra các quan hệ hình học trong không gian 2D và 3D (Trang 35)

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

(79 trang)