Tôi có đa giác được xác định với đỉnh của chúng và tôi cần tính toán các khu vực của liên minh và giao lộ của chúng. Điều khó chịu nhất là nó được thực hiện trong Mapping Toolbox, nhưng tôi không thể mua nó. Có ai biết làm thế nào để thực hiện một thuật toán nhanh để tính toán nó? Cảm ơn bạn đã dành thời gian.giao lộ và liên minh các đa giác
Trả lời
tôi thấy điểm giao điểm của đa giác của tôi và thêm vào đỉnh mà là bên trong/đa giác bên ngoài cho nhiệm vụ giao/công đoàn (kiểm tra nếu có các đỉnh của đa giác 1 sự dối trá bên trong một lại đa giác 2 và ngược sử dụng 'inpolygon '). Sau đó tất cả các điểm được chuyển đổi thành các tọa độ cực với trung tâm trong các tọa độ trung bình của ma trận và được sắp xếp theo góc, sao cho chúng hình thành đường bao khép kín liên tiếp. Biết được điều này rất dễ dàng để tìm khu vực giao lộ/công đoàn bằng cách sử dụng 'polyarea'.
tôi sẽ làm như thế này:
- Hãy S là tập các đỉnh của cả hai đa giác.
- Đối với mỗi cạnh e trong đa giác 1
- Đối với mỗi cạnh e trong đa giác 2
- Nếu e giao cắt với e
- Thêm điểm giao nhau để S
- Nếu e giao cắt với e
- Đối với mỗi cạnh e trong đa giác 2
- Hủy bỏ tất cả các đỉnh trong S được bên trong đa giác 1 hoặc 2.
Tập kết quả của đỉnh nên tạo nên sự kết hợp của các đa giác.
Đối với giao lộ, bạn chỉ cần xóa tất cả các đỉnh trong S là bên ngoài của cả đa giác 1 và 2 (ở bước thứ ba).
(Bạn có thể tra cứu giao điểm và "bên trong đa giác" -checks nơi khác ;-)
cảm ơn câu trả lời của bạn, nhưng làm cách nào tôi có thể tìm thấy điểm giao nhau? là cần thiết để sử dụng phương trình của một dòng? – Kate
Đã thêm hai liên kết vào câu trả lời của tôi. – aioobe
cảm ơn bạn. Tôi biết toán học, nhưng tiếc là tôi không phải là một lập trình viên rất tốt, vì vậy có mã số rất tốt đẹp. – Kate
Ý tưởng là để phá vỡ tất cả các giao nhau cạnh thành bốn các bộ phận và tạo thành một đa giác mới với những phần này. Khi bạn muốn liên minh, lấy hai cạnh ngoài. Nếu bạn muốn giao nhau, lấy hai cạnh bên trong.
Câu trả lời hay sẽ đưa ra một ví dụ. –
Bạn chỉ cần tìm khu vực giao lộ; khu vực của công đoàn là trivially thu được từ đó. Gói PolygonIntersection từ FEX có thể hữu ích.
Bạn có thể hiển thị một số mã giả để chúng tôi có thể thực hiện điều này bằng các ngôn ngữ khác không? – Pacerier
- 1. Liên minh và giao lộ trong PowerShell?
- 2. giao lộ phân đoạn-đa giác
- 3. Giao tiếp đệ quy đệ quy giữa các đa giác
- 4. Cách hiệu quả nhất để phát hiện giao lộ tam giác-tam giác là gì?
- 5. Chia đa giác đơn giản, đa giác thành đa giác hoặc đa giác đơn giản thực sự
- 6. Kiểm tra xem Đa giác có tự liên kết
- 7. Giao lộ CGPathRef
- 8. Tìm giao điểm của hai đa giác 3D
- 9. Sắp xếp các điểm của đa giác
- 10. Giao diện đa giác với đường thẳng | Python Shapely
- 11. Trong SQL, Tham gia thực sự là Giao lộ? Và nó cũng là một liên kết hoặc "Liên minh đi ngang"?
- 12. Sự khác biệt giữa Đa giác và Đa giác trong SVG
- 13. Điểm trong thuật toán đa giác xử lý các đa giác nằm ngang antemeridian
- 14. Đa giác với các tọa độ kép
- 15. Thu nhỏ các đỉnh đa giác
- 16. So sánh các đa giác tương tự
- 17. Triangulation đa giác
- 18. Giao lộ đường trong android
- 19. Boost :: Geometry: cách tham gia các đa giác giao nhau trong multi_polygon?
- 20. Tìm đa giác diện tích tối đa được ghi trong đa giác lớn hơn
- 21. Android Geofencing (Đa giác)
- 22. giao lộ khoảng thời gian trăn
- 23. Cách nhận thông tin cho đa giác được liên kết gần nhất với các điểm bằng cách sử dụng R?
- 24. Đa giác Tam giác Tối ưu hóa số
- 25. Rasterizing một đa giác 2D
- 26. Nhận đa giác đơn giản
- 27. Tìm giao lộ của các tên gọi khung dữ liệu
- 28. Cắt đường thẳng thành đa giác 2D
- 29. Chuyển đổi đa giác thành hình tam giác
- 30. Phân hủy đối với Đa giác lồi
Chức năng này là 'polybool'. Và tôi có thể tính toán diện tích bằng 'polyarea' (có sẵn cho tôi). – Kate
Tôi nghĩ bạn không nên yêu cầu người dùng vi phạm bản quyền. Đã chỉnh sửa. –
@Kate: Đa giác của bạn có được đảm bảo lồi không? – Jacob