長方形の合成画像を見ると2D形状が見えるようになるなど、任意の2D形状を長方形で塗りつぶそうとしています。最終的な結果は、次のアプリケーションで生成された画像に似ているはずです: http://www.shapecollage.com/ (いいえ、このアプリケーションをコピーしようとしているわけではありませんが、より大きなアプリケーションの一部として同様の機能を提供したいと考えています) .
このSOの質問から、私の問題に対する最適な解決策が存在しない可能性があることはわかっていますが、かなり良い結果が得られるはずであり、私の手段には十分です。これまでのところ、フラッド フィル アルゴリズムのアイデアに基づいて、次の 2 つのアプローチを試してきました。
アプローチ1
図形の任意の点から開始し、この点に長方形を描きます。
前の画像と並んで描かれた場合、チェックされたポイントが次の画像の中心に対応するように、前の画像の右、下、左、および上にポイントをチェックします
// 右移動の新しい x 座標を見つける例
newCenter.x = oldCenter.x + oldWidth + newWidth;
新しい中心点が a) 2D 形状内にあり、b) 既に描画されている長方形の内側にないことを確認します。両方の条件が満たされている場合は、長方形を描画してステップ 2 に進みます。それ以外の場合は何もしません。
アプローチ 2
アプローチ 1 と同じですが、長方形の新しい中心が描画された長方形内にあることを許可されていないという条件がありません。代わりに、全方向にパディングが追加されます。
// Example of finding new x-coordinate for right move
newCenter.x = oldCenter.x + oldWidth + newWidth + padding;
どちらのアプローチも非常に限られた結果しか得られず、シェイプを完全に塗りつぶすことはできませんが、アプローチ 1 では輪郭の一部が見えることがあります。
上記の例と同様の結果を達成するために試行できる情報、アイデア、または実証済みの方法があれば幸いです。ありがとう!