OK 512x512 = 262144 ピクセル/ロケーションの空白のマップから始めます。
その上にオブジェクトを効率的に描画し、空き領域を見つけて、後でこれらの空き領域にさまざまなオブジェクトを追加できるようにする方法が必要です。このデータを保存する最善の方法や空き領域を見つけるアルゴリズムがわかりません。
私は実用的な解決策を持っていましたが、計算には永遠にかかりました。私は AS3 を使用しています。これが最適なソリューションに影響する場合に備えてです。
何かアドバイス?ありがとう。
OK 512x512 = 262144 ピクセル/ロケーションの空白のマップから始めます。
その上にオブジェクトを効率的に描画し、空き領域を見つけて、後でこれらの空き領域にさまざまなオブジェクトを追加できるようにする方法が必要です。このデータを保存する最善の方法や空き領域を見つけるアルゴリズムがわかりません。
私は実用的な解決策を持っていましたが、計算には永遠にかかりました。私は AS3 を使用しています。これが最適なソリューションに影響する場合に備えてです。
何かアドバイス?ありがとう。
あなたの問題は、オペレーティング システムのメモリ割り当ての問題とほぼ同じです。断片化、クリーンアップ、適切な連続領域の使用の問題もすべてそこに現れます。この問題が OS でどのように解決されているかを読み進めたいと思います:ウィキペディアから始めてください。
最初に頭に浮かぶのは、ポリゴン フィリング テクニックを使用することです。空間を一連のスキャン ライン、Y 座標ごとに 1 つのスキャン ラインと考えてください。各走査線で、空き領域と占有領域の間の遷移を表す X 座標のリストを保存します。
Bitmap および BitmapData クラスには、ビットマップを操作するためのメソッドが多数あります。
私はそのようなことをしたことがありませんが、試してみてください。最善のアプローチは、マップにオブジェクトを描画することだと思います。次に、メソッド bitmapData.getColorBoundsRect() を使用して、空いていない領域を取得します。これらの AS3 ネイティブ メソッドは非常に高速です。
ドキュメントは次のとおりです: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/BitmapData.html
乾杯、CaioToOn!