2016-08-26 7 views
2

私はアルゴリズムの中で、(幅と高さによって定義される)矩形。後者はサイズではなく、アスペクト比で定義されます。 結果の密度、つまり2つの長方形の平均距離を決める変数がもう1つ必要です。 コンテナのサイズが制限されていないため、すべての矩形を配置する必要があります。また、長方形の重なりがない必要があります。さまざまなサイズの矩形を可変サイズの平面上にランダムに配置します(密度の度合いを考慮して)

最終結果は、各矩形の決定された位置と、使用されたプレーン自体のサイズでなければなりません。

残念ながら、私はこれまでまたはこれまでの部分を実行するアルゴリズムを見つけることができませんでした。私は提案、コメント、または参考に感謝します!主な問題は「空きスペース」のリストを追跡することで、各プレースメントの後にそれに応じて更新されることが判明しました。

私が必要とする実際のケースでは、与えられた長方形は完全にランダムには形作られていません。彼らはほぼ同じ高さを持ち、背の高いものよりもはるかに幅が広い傾向があります。それは、平面上に「雲」として分布させるべきテキストから取った単なる言葉です。

+0

私は中央揃えの1桁区切りテキストから始めます。その後、言葉を広げてください。さまざまなエフェクト(円形、楕円形、長方形、虹)を実現するために、さまざまな展開式を使用できます。しかし、一般的な考え方は常に同じです。単語が中心点から遠ければ遠いほど移動する必要があります。 – user3386109

答えて

0

ここでアルゴリズムを設計する方法には、いくつかの考えだ:実際の矩形が同様の大きさを持っているので、あなたが行にグループ化して、おそらく、

  • ことができ、最終的なレイアウト
  • 使用インクルードを取得するために複数の行を積み重ねます事実、rowCount * colCount == totalCountcolCount/rowCount == aspectRatioは、各行と列の矩形の数を近似します。
  • 矩形を配置した後の残りの空き領域を決定するには、すべての矩形の境界ボックスの面積を計算し、 。矩形は重複しないので、これは機能します。
  • おそらく、totalFreeSpaceからboundingBoxAreaの比率で、望ましい密度が得られます。そうでなければ、O(n^2)アルゴリズムは、問題の説明ごとの密度を計算するのに役立ちます(矩形の総数が大きすぎないと仮定して)。
  • 上記の作業が完了したら、雲の形状を改善するために微調整を行うことができます。たとえば、各行をソートして、中央に最大の矩形を持つようにします。
0

私は、強制的なレイアウトでグラフの視覚化のようなものを探していると思います。あなたの言葉の間に関係をモデル化することができれば、力があなたが必要とするパラメータです。

関連する問題