私は、C#で企業の構造ツリー(家系のような)を描く必要があります。すべての補助コードはそこにあります。それは色付けされ、インタラクティブで、派手です。唯一の問題は、実際に各ノードをどこに置くかを決めるアルゴリズムで、私に多くの悲しみを与えていることです。木を効率的に描画するためのアルゴリズムですか?
今のところ、ボックスのサイズは100x50です。特定のx、y座標のスタッフメンバーを表すStaffNode
というクラスがあります。
アルゴリズムでは、適切なxとyを使用してList<StaffNode>
を作成するだけで済みます。
これは信じられないほどトリッキーです。
基本的に、アルゴリズムは企業構造に沿って再帰的です(ツリーに沿って左→右、上→下)。 2つのノードが互いに重なっていると明らかに悪いことです。
私はこのような何かを生み出す可能性があるいくつかのアルゴリズムを考えることができ:
*
o O
o o o o o O
o O O O O O
O
ツリーが非常に大きく、スペースが非常に限られているので、このようなものは、より良いでしょうに対し:
*
o O
o o o o o O
o O O O O O
O
これまでのようなツリーを描かなければならなかった人はいますか?もしあなたが私が持っている多くのハードルに出会ったと確信しています。任意のヒント?これまで私は一日を費やしてきました。
を最適解を見つけることができませんできますか?それは、マイクロソフトのVisioや何かで行われるべきではない? – DrStrangeLove
テトリスソルバーを取る... – Dialecticus
@DrStrangeLoveいいえ、私はインタラクティブな視覚化を書いています。 – user1002358