Dado un rectángulo y un punto con una dirección vectorial hacia el rectángulo. ¿Cómo puedo encontrar el punto más cercano en el exterior de ese rectángulo al punto en cuestión?
mathematics
geometry
onedayitwillmake
fuente
fuente
Respuestas:
Una técnica que podría utilizar se llama "fundición de rayos". Se usa comúnmente para renderizar gráficos, pero tiene otras aplicaciones, como la línea de visión (como desea hacer) y la búsqueda de rutas. En términos generales, funciona al encontrar la intersección de un rayo y un objeto. En tu ejemplo, el rayo es el vector para la dirección del personaje.
Una referencia útil para las intersecciones de rayos / objetos (y, por cierto, otras intersecciones de objetos / objetos) es www.realtimerendering.com/intersections.html (busque en las referencias ray / aabb y ray / obb).
fuente
El rectángulo tiene cuatro lados. Cada lado es un segmento de línea.
Prueba cada uno de los cuatro lados para la intersección con el rayo. Rastrea el golpe más cercano.
Aquí hay un código para averiguar en qué parte del segmento impacta el rayo:
fuente
Si su caja está alineada con el eje, solo tiene que sujetar cada eje de coordenadas a la caja si el punto está fuera de la caja.
De RTCD pg 130:
Si hace esto para los ejes x, y, z, entonces se
point
cerrará de golpe a la pared más cercana de la caja, si está fuera de la caja, para empezar. si ya está dentro de la caja, se dejará solo (donde está).fuente
Bueno, puedes usar solo álgebra lineal (geometría analítica, para ser más específico) para resolver esto. Depende de cómo modelaste el rectángulo.
Aquí hay un caso general: http://paulbourke.net/geometry/lineline2d/
fuente