質問: マインドマップを作成しようとしています。 以下のルールで配置しようと思っています。 ・各要素は長方形 ・ルート要素は1つ ・親要素の下にぶら下がるように、直下の子要素がずらっと横一列に並ぶ ・親要素は、並んだ直下の子要素の中央に配置される この条件を満たしつつ、なるべく全体としてコンパクトに配置するにはどうすれば良いでしょうか? 良いアルゴリズムなどはありますでしょうか?
回答: 以前自分も探したことがあり、d3-hierarchyというJavaScriptのライブラリを参考にしました。 READMEにいくつかのReferenceがあり、 配置に関するアルゴリズムの資料は * Reingold–Tilford “tidy” algorithm 線形時間で配置するためのアルゴリズムに関する資料は * Improving Walker's Alghorithm to Run in Linear Time を参考にしていると記載があります。GitHubのリポジトリで実際の実装も見れるので、基本的なアルゴリズムの参考になるかもしれません。