Tengo un rectángulo 2D con posición x, y, altura y ancho, y un punto ubicado al azar cerca.
¿Hay alguna manera de verificar si este punto podría chocar con el rectángulo si está más cerca de cierta distancia? Imagine un radio invisible fuera de ese punto que choca con dicho rectángulo. ¡Tengo problemas con esto simplemente porque no es un cuadrado!
collision-detection
geometry
John Smith
fuente
fuente
Supongo que su rectángulo está alineado con el eje.
Solo tiene que "sujetar" el punto en el rectángulo y luego calcular la distancia desde el punto sujeto.
Punto = (px, py), Rectángulo = (rx, ry, rwidth, rheight) // (esquina superior izquierda, dimensiones)
fuente
Debe usar colisiones círculo-rectángulo para esto. Hay un similar pregunta sobre Stack Overflow.
El centro de su círculo sería el punto en cuestión, y el radio sería la distancia que desea verificar.
fuente
Si está tratando de calcular la distancia desde un punto hasta el borde de un rectángulo, trabajar con cada una de las nueve regiones creadas por el rectángulo podría ser la forma más rápida:
fuente
[Respuesta modificada basada en comentarios]
Si desea ver si el punto está dentro de 10 unidades si el rectángulo gris en la imagen a continuación, verifique si el punto está en cualquiera de
Este enfoque es un poco poco elegante. Aquí se documenta un método similar que evita tener que probar las 4 esquinas utilizando la simetría del rectángulo en stackoverflow
fuente
Podrías usar algo como esto:
fuente