Kiểm tra điểm có nằm trong đa tuyến hay không là kỹ thuật cơ bản của lập trình đồ họa vi tính. Một phƣơng pháp đơn giản đƣợc gọi là Ray Casting giúp xác định xem một điểm I nằm bên trong hay bên ngoài một đa tuyến đơn giản đó là kiểm tra xem một tia (ra) bắt đầu từ điểm I đó giao với các cạnh của đa tuyến bao nhiêu lần. Nếu điểm I không nằm trên biên của đa tuyến thì:
1
- I nằm ngoài đa tuyến nếu tổng số giao điểm là số chẵn - I nằm trong đa tuyến nếu tổng số giao điểm là số lẻ
Kết luận này dựa trên một quan sát đơn giản là nếu ta có một điểm đi dọc theo một tia từ vô cực đến I thì điểm đó sẽ giao (có thể nhiều lần) với biên của đa tuyến, điểm này có thể đi từ ngoài vào trong rồi lại từ trong ra ngoài,...Chính vì vậy sau mỗi hai lần giao với biên của đa tuyến thì điểm đó sẽ đi ra ngoài đa tuyến. Quan sát này có thể đƣợc chứng minh toán học bằng cách sử dụng định lý “đƣờng cong Jordan”.
Hình 3-12: Mô tả phƣơng pháp xác định vị trí điểm nằm trong hoặc nằm ngoài đa tuyến bằng phƣơng pháp Ray Casting
Phân tích vị trí 3 điểm bất kỳ 1, 2, 3 đối với đa tuyến nhƣ hình vẽ trên, ta nhận thấy với tia xuất phát từ mỗi điểm đi theo chiều dƣơng của trục X sẽ cắt đa tuyến tại lần lƣợt 1, 2, 1 điểm. Theo phƣơng pháp Ray Casting có thể kết luận điểm 1 và 3 nằm trong đa tuyến và điểm 2 nằm ngoài đa tuyến, trùng hợp với quan sát thực tế.
Theo phƣơng pháp toán học, để nhận dạng tia xuất phát từ điểm I hƣớng theo chiều dƣơng trục X cắt đoạn thẳng AB hay không phải thỏa mãn 2 điều kiện:
- (XA ≤ XI ≤ XB) hoặc (XB ≤ XI ≤ XA)
- Và XI <
(trong đó: k=
, m=YA - k.XA)
Sau khi kiểm tra sự giao nhau của tia Ix và đoạn AB, lần lƣợt tiến hành kiểm tra sự giao nhau của tia Ix với các đoạn tiếp theo của đa tuyến. Đếm số lần tia Ix cắt đa tuyến để đƣa ra kết luận điểm I có nằm trong đa tuyến hay không
2 3
Giới hạn của kỹ thuật này là các đa tuyến chỉ gồm các đoạn thẳng, không bao gồm các cung tròn. Do đó, để kiểm tra đa tuyến có cung tròn, có thể dung cách lấy mẫu các điểm thuộc cung tròn. Số lƣợng điểm lấy mẫu, vị trí lấy mẫu tùy thuộc theo từng trƣờng hợp cụ thể.