私がプレイしているゲーム用のオンライン マップ編集プログラムを開発しようとしています。
地図のデータは少し大きいです。すべての正方形のデータを送信すると、中サイズのマップのデータは 1 MB 近くになります。
私ができると思ったのは、地図上で境界を見つけ、それに基づいてポリゴンを作成することでした。
現在私は:
- 最も北西の境界を見つけて、そこから始めます。私のサンプル マップでは、(3,2) です。
- 次に、北、東、南、西を確認し、データが 1 でない最初の未訪問の場所に移動します。
- 未訪問の場所がない場合は、最も歴史の古い場所に移動します。
これは、北部地域ではうまく機能します。しかし、南のエリアに行くと、北をチェックして、そこが未訪問の場所であることに気づき、そこに行きます。おかしくなった場所の座標は 13,11 です。
明らかに、これでは必要な境界が得られず、マップ全体を歩きません。ですから、何かを変える必要があります。
以前と同じ操作順序で境界チェックを追加することを検討しました(NESW)。ただし、それを台無しにすることも可能です。
(13,11) で北をチェックし、未訪問の場所であることを確認します。そして今回はそこに境界があるので、そこに行ってもいいと思うでしょう。
外側の境界全体を歩くにはどうすればよいですか?
ここで言及されている凸包アルゴリズムを見てみましたが、それは私が必要とするものではないと思います。私は間違っているかもしれませんが、これは凸包の結果がどのように見えるかを期待するものです。
これにより、マップのサイズが少し縮小されますが、必要のないデータがまだたくさんあります。また、マップ内のアイテムの内部境界線を取得する必要がある場合、それらも不規則になるため、サイズ縮小は失われます。
では、実際に外側の境界線を歩いていることを確認するにはどうすればよいでしょうか?