He estado mirando este problema por unos días. Arreglé este gráfico para ayudarme a visualizar el problema: (del gráfico, sabemos que la línea interseca [1, 1], [1, 2], [2, 2], [2, 3], terminando en [ 3,3])
Quiero avanzar a lo largo de la línea hasta cada espacio de la cuadrícula y verificar si el material del espacio de la cuadrícula es sólido. Siento que ya conozco las matemáticas involucradas, pero aún no he podido unirlas. Estoy usando esto para probar la línea de visión y eliminar nodos después de encontrar una ruta a través de mis algoritmos de búsqueda de ruta: mis agentes no pueden ver a través de un bloque sólido, por lo tanto, no pueden moverse a través de uno, por lo tanto, el nodo no se elimina de la ruta porque Se requiere para navegar una esquina.
Entonces, necesito un algoritmo que avance a lo largo de la línea hacia cada espacio de la cuadrícula que se cruza. ¿Algunas ideas?
He echado un vistazo a muchos algoritmos comunes, como el de Bresenham, y uno que avanza a intervalos predefinidos a lo largo de la línea (desafortunadamente, este método omite los mosaicos si se cruzan con una cuña más pequeña que el tamaño del paso).
Ahora estoy poblando mi pizarra con una masa de funciones floor () y ceil (), pero se está volviendo demasiado complicada y me temo que podría causar una desaceleración.