Je regarde ce problème depuis quelques jours maintenant. J'ai truqué ce graphique pour m'aider à visualiser le problème: (à partir du graphique, nous savons que la ligne intersecte [1, 1], [1, 2], [2, 2], [2, 3], se terminant par [ 3,3])
Je veux avancer le long de la ligne jusqu'à chaque espace de grille et vérifier si le matériau de l'espace de grille est solide. Je sens que je connais déjà les mathématiques impliquées, mais je n'ai pas encore pu les enchaîner. J'utilise ceci pour tester la ligne de vue et éliminer les nœuds après qu'un chemin a été trouvé via mes algorithmes de recherche de chemin - mes agents ne peuvent pas voir à travers un bloc solide, donc ils ne peuvent pas passer à travers un, donc le nœud n'est pas éliminé du chemin parce qu'il est nécessaire pour naviguer dans un coin.
J'ai donc besoin d'un algorithme qui se déplacera le long de la ligne jusqu'à chaque espace de grille qu'il intersecte. Des idées?
J'ai jeté un coup d'œil à de nombreux algorithmes courants, comme celui de Bresenham, et celui qui passe à des intervalles prédéfinis le long de la ligne (malheureusement, cette méthode saute les tuiles si elles se croisent avec un coin plus petit que la taille du pas).
Je remplis maintenant mon tableau blanc avec une masse de fonctions floor () et ceil () - mais cela devient trop compliqué et je crains que cela ne provoque un ralentissement.