Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีที่เร็วที่สุดในการตรวจสอบว่าจุดอยู่ภายในรูปหลายเหลี่ยมใน Python คืออะไร


ขั้นแรก เราจะสร้างรูปหลายเหลี่ยมโดยใช้เมธอด mplPath.Path และตรวจสอบว่าจุดที่กำหนดอยู่ในรูปหลายเหลี่ยมหรือไม่ เราจะใช้วิธีนี้ poly_path.contains_point

ขั้นตอน

  • สร้างรายการจุดเพื่อสร้างรูปหลายเหลี่ยม

  • สร้างเส้นทางใหม่ด้วยจุดยอดและรหัสที่กำหนด โดยใช้ mplPath.Path()

  • ตรวจสอบว่าจุด (200, 100) มีอยู่ในรูปหลายเหลี่ยมหรือไม่ โดยใช้เมธอด contain_point() ส่งคืนว่าเส้นทาง (ปิด) มีจุดที่กำหนดหรือไม่ => จริง

  • ตรวจสอบว่าจุด (1200, 1000) มีอยู่ในรูปหลายเหลี่ยมหรือไม่ โดยใช้เมธอด contain_point() ส่งคืนว่าเส้นทาง (ปิด) มีจุดที่กำหนดหรือไม่ => เท็จ

ตัวอย่าง

import matplotlib.path as mplPath
import numpy as np

poly = [190, 50, 500, 310]
poly_path = mplPath.Path(np.array([[190, 50],
                                    [50, 500],
                                    [500, 310],
                                    [310, 190]]))
point = (200, 100)
print(point, " is in polygon: ", poly_path.contains_point(point))

point = (1200, 1000)
print(point, " is in polygon: ", poly_path.contains_point(point))

ผลลัพธ์

(200, 100) is in polygon: True
(1200, 1000) is in polygon: False