Ich habe dieses Problem jetzt seit ein paar Tagen angestarrt. Ich habe diese Grafik zusammengestellt, um das Problem besser veranschaulichen zu können: (Aus der Grafik wissen wir, dass sich die Linie schneidet [1, 1], [1, 2], [2, 2], [2, 3] und endet mit [ 3,3])
Ich möchte entlang der Linie zu jedem Gitterraum gehen und prüfen, ob das Material des Gitterraums fest ist. Ich habe das Gefühl, dass ich die Mathematik bereits kenne, aber ich konnte sie noch nicht aneinander reihen. Ich verwende dies, um die Sichtlinie zu testen und Knoten zu entfernen, nachdem ein Pfad über meine Pfadfindungsalgorithmen gefunden wurde. Meine Agenten können nicht durch einen festen Block sehen, daher können sie sich nicht durch einen bewegen, daher wird der Knoten nicht aus dem Pfad entfernt, weil er ist erforderlich, um eine Ecke zu navigieren.
Ich brauche also einen Algorithmus, der entlang der Linie zu jedem Gitterraum geht, den er schneidet. Irgendwelche Ideen?
Ich habe mir viele gängige Algorithmen wie den von Bresenham angesehen, die in vordefinierten Intervallen entlang der Linie ausgeführt werden (bei dieser Methode werden leider Kacheln übersprungen, wenn sie sich mit einem kleineren Keil als der Schrittgröße schneiden).
Ich fülle mein Whiteboard jetzt mit einer Vielzahl von Funktionen für Boden () und Decke () - aber es wird zu kompliziert und ich befürchte, es könnte zu einer Verlangsamung führen.