問題 (疑似) 一連のタイルの輪郭を見つける方法は? x/y 座標 A[20,20]、B[20,30]、C[30,30] に 3 つのタイルがあるとします (これにより単純な L 字型になります)。これらの点は、タイルの中心を表します。各タイルには、TL (左上)、TR、BL (左下)、BR の 4 つの頂点があります。合わせて、3 つのタイルには 8 つの一意の (重複しない) 頂点があります。
緑の点 (頂点) で定義された赤い線 (パス) が必要です: http://img7.imageshack.us/img7/2469/lshapetiles.png
必要な解決策アルゴリズムの出力は、タイルの輪郭形状を形成するパスである必要があります。これらの頂点は、次の順序で構成されます: A TL、A TR、A BR、C TR、C BR、C BL、B BL 、B TL (およびオプションの A TL で閉じる)。赤い線を参照してください。
考えられる解決策 1 つのオプションは、すべてのタイルを繰り返し処理し、各タイルについて次のことを確認することです。そうでない場合、パス + への TL および TR で右側にネイバーがありますか? そうでない場合、パス + への TR および BR で、その下にネイバーがありますか? そうでない場合、パス + への BL および BR で、左側にネイバーがありますか? そうでない場合は、TL と BL でパスへ
見つかった頂点がまだ追加されていない場合にのみパスに追加すると、パスの一意の頂点が正常に収集されます。ただし、順序が間違っている可能性があります。これは問題です。
誰かがこれに対する良い解決策(アルゴリズム)を知っていますか?