Kiểm tra điểm nằm trong đa giỏc

Một phần của tài liệu nghiên cứu sử dụng cấu trúc DCEL làm cơ sở để khai thác ứng dụng dữ liệu bản đồ số địa chính việt nam (Trang 59)

Bài toỏn này nhằm xỏc định xem một điểm cú nằm trong miền một đa giỏc khộp kớn hay khụng. Bài toỏn Điểm nằm trong đa giỏc cú nhiều ứng dụng trong thực tiễn. Đõy là bài toỏn cần được giải quyết cho hầu hết cỏc phần mềm đồ họa. Bài toỏn này sẽ được mở rộng để giải quyết cỏc bài toỏn

phức tạp hơn như đoạn nằm trong một đa giỏc, miền nằm trong một đa giỏc [27].

Cú thể liệt kờ một số ứng dụng của cỏc bài toỏn này: - Phục vụ cho thao tỏc chọn đối tượng theo vựng

- Lọc cỏc điểm ngoài biờn trong xõy dựng mụ hỡnh số độ cao - Phục vụ cho việc xử lý, phõn tớch cỏc miền

Như vậy, đầu vào của bài toỏn này sẽ là một điểm và một đường đa giỏc khộp kớn cho trước, cũn đầu ra là cõu trả lời "cú" nếu điểm nằm trong, hoặc "khụng" nếu điểm nằm ngoài vựng cú biờn là đa giỏc núi trờn.

Giải phỏp để giải quyết bài toỏn như sau:

- Xỏc định số lượng cỏc giao điểm của một nửa đường thẳng bất kỳ xuất phỏt từ điểm xột với đa giỏc nờu trờn.

- Nếu số này là lẻ thỡ điểm xột sẽ nằm trong đa giỏc - Cũn nếu là chẵn thỡ điểm xột nằm ngoài.

Thụng thường, nờn lấy nửa đường thẳng này song song với một trục tọa độ.

Tuy nhiờn cần phải xột cỏc trường hợp biờn:

- Nửa đường thẳng đi qua một trong số cỏc đỉnh của đa giỏc

- Một trong số cỏc đoạn của đa giỏc trựng với một phần của nửa đường thẳng này.

Ta cú thể thay thế nửa đường thẳng này bằng một đoạn thẳng song song với trục hoành, được gọi là đoạn thẳng kiểm tra với đầu mỳt thứ nhất là điểm xột, cũn đầu mỳt thứ hai phải nằm ngoài đa giỏc bằng cỏch lấy điểm thứ hai cú tọa độ X lớn hơn tọa độ X lớn nhất trong số cỏc đỉnh của đa giỏc. Việc loại bỏ cỏc trường hợp biờn được thực hiện bằng cỏch bỏ qua khi đỉnh đa giỏc rơi trờn đoạn thẳng kiểm tra, tức là khụng tăng biến đếm giao khi gặp cỏc trường hợp này.

Trong trường hợp đa giỏc lồi, tỡnh hỡnh sẽ đơn giản hơn nếu ta sử dụng tớnh chất khụng bao giờ cú hơn 2 giao điểm với đoạn thẳng kiểm tra.

Thuật toỏn hàm Điểm nằm trong đa giỏc

Hàm PntInPolygon

Tạo đoạn thẳng kiểm tra e

Cho i = 1 tới n+1

Nếu (ei,i+1 giao e) thỡ k = k+1

Tăng tiếp i

Nếu k chẵn thỡ điểm nằm ngoài cũn nếu k lẻ thỡ điểm nằm trong Kết thỳc hàm

Trong trường hợp khi đa giỏc là một hỡnh chữ nhật bài toỏn trờn sẽ trở nờn đơn giản hơn nữa. Lỳc đú điều kiện để điểm nằm trong hỡnh chữ nhật là:

X min < X < X max , Ymin < Y < Ymax ; với Xmin, Ymin, Xmax, Ymax là cỏc giỏ trị tọa độ cực trị của cỏc đỉnh hỡnh chữ nhật.

Một phần của tài liệu nghiên cứu sử dụng cấu trúc DCEL làm cơ sở để khai thác ứng dụng dữ liệu bản đồ số địa chính việt nam (Trang 59)