Tôi muốn kiểm tra xem một dòng (hoặc bất kỳ điểm nào của một đường) nằm trong hình chữ nhật hay cắt hình chữ nhật.Làm cách nào để kiểm tra xem có bất kỳ điểm nào (hoặc một phần) của một đường thẳng hay chạm vào hình chữ nhật
Tôi có (x0, y0) và (x1, y1) làm điểm bắt đầu và kết thúc của một dòng. Ngoài ra, (rìu, ay) và (bx, bởi) là điểm trên bên trái và phía dưới bên phải của hình chữ nhật
Ví dụ,
____________
| |
---|----- | Result: true
| |
|____________|
/
_/__________
|/ |
/ | Result: true
/| |
|____________|
____________
| |
| -------- | Result: true
| |
|____________| ---------- Result: false
bất cứ ai có thể đề xuất làm thế nào để làm điều này? Tôi không muốn biết đó là điểm nào, tôi chỉ muốn biết liệu nó có hay không.
Cảm ơn rất nhiều sự giúp đỡ
+1 cho nghệ thuật ASCII rõ ràng :) – alex
Google nhanh cho "Cohen Sutherland" sẽ giúp bạn bắt đầu đi đúng hướng. –
Hãy xem xét từng cạnh như là đoạn đường riêng của nó. Sau đó, nó chỉ là vấn đề xác định giao lộ đoạn * và * trường hợp nó hoàn toàn chứa trong. Tất nhiên, đây chỉ là một quan sát nhanh và có thể không phải là cách lý tưởng * để giải quyết loại giao lộ này (nó cũng là một giao lộ thực sự phổ biến - tôi thực sự ngạc nhiên nếu đây là câu hỏi gốc ;-) –