Estoy trabajando en un algoritmo de pathfinding basado en Theta *, una variante de A * que proporciona un buen sistema para pathfinding que no está restringido a una cuadrícula, aunque el terreno/obstrucciones se basan en un patrón de cuadrícula. Este sistema requiere un algoritmo de línea de visión para determinar si una ruta en particular está obstruida o no.¿Cómo puedo modificar este algoritmo de línea de vista para aceptar los rayos que pasan por las esquinas?
Encontré this algoritmo de línea de visión extremadamente útil, y lo he implementado con éxito en mi código. Por desgracia, se considera que los siguientes son una ruta no válida:
Sin embargo, para mis propósitos, quiero un camino así se considere válida. Intenté modificar el algoritmo detectando si un punto está en la línea usando la fórmula básica y = mx + b
, pero las inconsistencias del algoritmo me impiden confiar en dicho sistema.
¿Hay alguna manera eficiente de modificar este algoritmo para permitir tal ruta? ¿Hay algún otro algoritmo que funcione mejor? Tenga en cuenta que los puntos de inicio y fin de la ruta serán no necesariamente confinados a una cuadrícula, por lo que todos los puntos utilizan la precisión double
.
bien, fresco, que funciona. ¿Pero podrías indicarme exactamente por qué? Yo * más o menos * lo entiendo, pero no lo hago del todo. –
1. 'error == 0' significa que su LOS está golpeando un punto de la grilla –
Correcto, entiendo eso, pero ¿podría explicarme más sobre qué hace el valor del' error' en general? –