Tôi đã tìm kiếm một thay thế python để inpolygon MATLAB() và tôi đã đi qua contains_points như là một lựa chọn tốt.inpolygon cho Python - Ví dụ về phương thức matplotlib.path.Path contains_points()?
Tuy nhiên, các tài liệu là một chút trần không có dấu hiệu của loại contains_points dữ liệu dự đoán:
contains_points (điểm, chuyển đổi = None, bán kính = 0,0)
Trả về một mảng bool mà là True nếu đường dẫn chứa điểm tương ứng.
Nếu biến đổi không phải là Không, đường dẫn sẽ được chuyển đổi trước khi thực hiện thử nghiệm.
bán kính cho phép đường dẫn được tạo ra lớn hơn hoặc nhỏ hơn một chút.
Tôi có đa giác được lưu trữ dưới dạng mảng n * 2 (trong đó n là khá lớn ~ 500). Theo như tôi có thể nhìn thấy tôi cần phải gọi phương thức Path() trên dữ liệu này mà dường như làm việc Ok:
poly_path = Path(poly_points)
Tại thời điểm này tôi cũng có những điểm tôi muốn kiểm tra được lưu trữ như một n * 2 NumPy mảng (catalog_points).
Có lẽ vấn đề của tôi nằm ở đây? Như khi tôi chạy:
in_poly = poly_path.contains_points(catalog_points)
tôi nhận lại một ndarray chứa 'False' cho mỗi giá trị không có vấn đề tập hợp các điểm tôi sử dụng (tôi đã thử nghiệm này trên mảng các điểm tốt trong đa giác).
Đối với những gì nó có giá trị, điều này làm việc như mong đợi đối với tôi: 'p = Đường dẫn ([[0, 0], [0, 1], [1, 0]]); result = p.contains_points ([[0.1, 0.1], [1, 1], [0.5, 0.6], [0.5, 0.4]]) '. Tôi nhận được một mảng chứa '[True, False, False, True]', như mong đợi. Tuy nhiên, nếu tôi sử dụng 'p = Path ([[0, 0], [0, 1], [1, 0]], đóng = True)', 'result' là tất cả False. –
Bạn có thể chỉnh sửa câu hỏi của mình để bao gồm một ví dụ độc lập (tức làmột cái gì đó chúng ta có thể sao chép và chạy) mà không hoạt động như mong đợi? –