Estou encarando esse problema há alguns dias. Eu montei esse gráfico para me ajudar a visualizar o problema: (no gráfico, sabemos que a linha cruza [1, 1], [1, 2], [2, 2], [2, 3], terminando em [ 3,3])
Quero avançar ao longo da linha para cada espaço da grade e verificar se o material do espaço da grade é sólido. Sinto que já conheço a matemática envolvida, mas ainda não fui capaz de entender. Estou usando isso para testar a linha de visão e eliminar nós depois que um caminho é encontrado através dos meus algoritmos de busca de caminhos - meus agentes não podem ver através de um bloco sólido, portanto, eles não podem se mover através de um, portanto o nó não é eliminado do caminho porque é necessário para navegar em um canto.
Então, eu preciso de um algoritmo que vá ao longo da linha para cada espaço da grade que cruzar. Alguma ideia?
Examinei muitos algoritmos comuns, como o de Bresenham, e um que pisa em intervalos predefinidos ao longo da linha (infelizmente, esse método ignora blocos se eles estiverem se cruzando com uma cunha menor do que o tamanho da etapa).
Agora estou preenchendo meu quadro branco com uma grande quantidade de funções floor () e ceil () - mas está ficando muito complicado e tenho medo de que possa causar uma desaceleração.