Quiero comprobar si una línea (o cualquier punto de una línea) está dentro de un rectángulo o se cruza con un rectángulo.Cómo comprobar si algún punto (o parte) de una línea está dentro o toca un rectángulo
Tengo (x0, y0) y (x1, y1) como puntos de inicio y final de una línea. También , (Ax, Ay) y (Bx, By) como los puntos superior izquierda e inferior derecha de un rectángulo
Por ejemplo,
____________
| |
---|----- | Result: true
| |
|____________|
/
_/__________
|/ |
/ | Result: true
/| |
|____________|
____________
| |
| -------- | Result: true
| |
|____________| ---------- Result: false
Puede alguien sugerir cómo hacer esto? No quiero saber qué punto es eso, solo quiero saber si está allí o no.
Muchas gracias por la ayuda
+1 por claro ASCII art :) – alex
Un rápido Google para "Cohen Sutherland" debería comenzar en la dirección correcta. –
Considere cada borde como su propio segmento de línea. Entonces, solo es cuestión de determinar la intersección del segmento de línea * y * el caso en el que está completamente contenida. Por supuesto, esto es solo una observación rápida y probablemente no la forma * ideal * de resolver este tipo de intersección (también es una intersección muy común; me sorprendería mucho si esta es una pregunta original ;-) –