私はこの問題を数日間見つめてきました。問題を視覚化するのに役立つように、このグラフィックを作りました:( グラフから、線が[1、1]、[1、2]、[2、2]、[2、3]と交差し、[で終わることがわかります3,3])
ラインに沿って各グリッドスペースに進み、グリッドスペースのマテリアルが固体であるかどうかを確認したいと思います。関係する数学はすでに知っているように感じますが、まだまとめることはできていません。私はこれを使用して視線をテストし、パスファインディングアルゴリズムを介してパスが見つかった後にノードを排除します-エージェントは固体ブロックを通過できないため、ブロックを通過できず、ノードがパスから排除されません。コーナーをナビゲートするために必要です。
そのため、交差する各グリッドスペースまでラインに沿って進むアルゴリズムが必要です。何か案は?
私は、Bresenhamのような多くの一般的なアルゴリズムと、線に沿って事前定義された間隔でステップを実行するアルゴリズムを調べました(残念ながら、このメソッドは、タイルがステップサイズよりも小さいウェッジと交差している場合、タイルをスキップします)。
ホワイトボードに大量のfloor()関数とceil()関数を実装していますが、複雑すぎて、速度低下の原因となる可能性があります。