私は、それぞれが1つ以上の星系を所有している、異なる派閥/状態を示すかなり大きな2次元の星図を生成しようとしています。派閥の境界・エリアを自動で作成したいのですが。
アイデアは基本的にこのようなものから行くことです(ドットは2d平面上の星系を表し、色は派閥の所属です)
これに
このようなマップを生成することはかなり一般的な要件のように思われるので、私の実際の質問はこれです:示されているように状態領域を生成するための標準的なアルゴリズムはありますか?もしそうなら、私にそれらを指摘してもらえますか?そうでない場合、良いアルゴリズムを考えることができますか?
アルゴリズムのパフォーマンスは私にとって主な関心事ではないので、生成するのが高速なマップよりも「きれいな」マップを使用したいと思います。この同様の質問は、いくつかの「整形」が必要であるにもかかわらず、おそらく私の問題に適用できるアプローチを提供します: グラフからマップを作成する方法
きれいに言うときの意味を説明しましょう。リンクされた質問の下部に、質問者は受け入れられた回答を実装した後の最終結果を提示します。ここでの最初の問題:ノード#6、#9、および#12の領域は非常に小さく、奇妙な形をしています。また、シャープなエッジの代わりに、滑らかで湾曲した外観を好むでしょう。
これまでに見たそれぞれの欠点/質問を含む、これまでの自分のアイデア:
- 各派閥の「凸包」ポリゴンを生成し、少し外側に拡張します。問題:凹面の特徴はありません。また、オーバーラップにはどのように対処しますか?
- ドットのボロノイグラフを生成し、隣接する異なる派閥のシステム間のボロノイポリゴンエッジを境界として使用します。問題:マップの端にある大きなポリゴン-それらを特定して修正するにはどうすればよいですか?
- ドットごとに固定サイズのポリゴンを生成し、単一のファクションのすべてのポリゴンを結合します(結果として、1つの大きく潜在的に複雑な「ファクションポリゴン」が生成されます)。次に、2つの派閥間の重複領域を調整するために何かを行います。問題:これを正確に行うにはどうすればよいですか?単純なプロセスではありません。3つ以上の派閥間で重複がある場合はどうなりますか?
よろしくお願いします。
補遺:最初の2つの回答と問題を解決するためのそれぞれのアプローチを検討した後、上記の要件が不完全であることに気付きました。
私は、地図にまばらに人口の多いエリアがある可能性があることを追加する必要があります。これは、孤立した星または星のクラスターがある可能性があることを意味します。それらの各クラスターを、独自の隣接する色付きの領域で表示したいと思います。このようなもの:
これには、クラスターを識別する最初のステップが必要であり、次に各クラスターに対して実際のアルゴリズムを実行する必要があることを理解しています。