Sto fissando questo problema da alcuni giorni. Ho truccato questo grafico per aiutarmi a visualizzare il problema: (dal grafico, sappiamo che la linea interseca [1, 1], [1, 2], [2, 2], [2, 3], che termina in [ 3,3])
Voglio avanzare lungo la linea per ogni spazio della griglia e verificare se il materiale dello spazio della griglia è solido. Mi sembra di conoscere già la matematica coinvolta, ma non sono ancora riuscito a metterla insieme. Lo sto usando per testare la linea di vista ed eliminare i nodi dopo che è stato trovato un percorso tramite i miei algoritmi di pathfinding: i miei agenti non possono vedere attraverso un blocco solido, quindi non possono spostarsi attraverso uno, quindi il nodo non viene eliminato dal percorso perché è necessario per navigare in un angolo.
Quindi, ho bisogno di un algoritmo che passi lungo la linea per ogni spazio della griglia che interseca. Qualche idea?
Ho dato un'occhiata a molti algoritmi comuni, come quello di Bresenham, e uno che fa passi a intervalli predefiniti lungo la linea (sfortunatamente, questo metodo salta le piastrelle se si intersecano con un cuneo più piccolo della dimensione del passo).
Sto popolando la mia lavagna ora con una massa di funzioni floor () e ceil () - ma sta diventando eccessivamente complicata e temo che potrebbe causare un rallentamento.