私は、(大)水平スクロールビューと、それに配置したい四角形の束を持っています。各矩形は、所望の水平位置を有するが、必要に応じてその位置から一定量(定数、K)まで変化させることができる。長方形は重なり合ってはいけません。長方形の垂直位置は任意です(もちろん、ビューの高さに制限されます)。衝突を避けるために長方形をレイアウトする(アルゴリズムのヘルプ)
理想的には、矩形のサイズを可変にしたいと思っています...それが不可能かどうかは、大きさを1次元で変えることができると思います。
ここでは、ある程度の垂直方向のスペースしかなく、理想から水平方向にKピクセルしか移動できないため、すべての矩形を描くことができない可能性があります。これに対処するため、各矩形は優先度(P)を持ち、優先度の低いものは最初に省略する必要があります。 (あなたはそれが曖昧ではないと仮定することができます、そして、あなたはいつもより高い優先順位を持っているどんな2つの四角形のどちらが高いかを知ることができます)。
私は概念的アルゴリズムの後のものですが、 iPad上では数千(> 1000、ただし<00)の長方形が考慮されます。理想的には、ユーザーがズームレベルを変更するたびに再実行するのに十分な速さが必要ですが、それが簡単でない場合は、位置をキャッシュすることができます。オブジェクトはタイムライン上の写真です。イベントが発生したときに、それらを近づけたいと思っています。私は、その上にもっと多くを得るために近づくつもりです。
私はthisのようなアルゴリズムを見てきましたが、交差していないトリックはありますが、各アイテムが一定量までしか移動できないという考えはありません。明らかに後者の制約がなければ、すべてのアイテムを表示することができるので、どのポイントにも長方形を表示することはできません。
上記の問題を解決することが難しい場合は、より実用的なアイデアの提案を歓迎します。他のすべてが失敗した場合、私は常に優先順位順に何かを行うことができます。可能であれば、それぞれのアイテムを必要な場所にレンダリングします。垂直方向にシフトしない場合は、水平方向に許容範囲までシフトします。次のものに移ります。優先順位は、おそらく最適以下の解決策が見つかることを意味しますが、最も重要な項目に向かって重み付けされます。
1つまたは2つの画像がこの質問を改善します。 –
イメージが作成されました。申し訳ありませんが記述することはとても難しいです:) –