次のように、JavaScriptで親ノードと子ノードの関係を持つデータ構造があります。
var data = {
'name': 'A1',
'children': [
{
'name': 'B1',
'children': [
{'name': 'C1'},
{'name': 'C2'},
{'name': 'C3'},
{'name': 'C4'},
{'name': 'C5'}
]
},
{
'name': 'B2',
'children': [
{
'name': 'C6',
'children': [
{'name': 'D1'}
]
},
{'name': 'C7'},
{'name': 'C8'}
]
}
]
};
私がする必要があるのは、トポロジーを持つ各子ノードの座標を計算することです。最終結果はおそらく次のようになります-トポロジツリー:
┌─────────────────────────────────
│ ┌C1[2,0]
│ │C2[2,1]
│ ┌B1[1,2]─┼C3[2,2]
│ │ │C4[2,3]
│A1[0,4]┤ └C5[2,4]
│ │ ┌C6[2,5]─D1[3,5]
│ └B2[1,6]─┼C7[2,6]
│ └C8[2,7]
もちろん、アルゴリズムはさまざまな状況と互換性があります。たとえば、最終ノードに子ノードが多すぎる場合、各親のY座標にオフセットが加算されます。
これはトポロジツリーのデモンストレーションです:http://mbostock.github.com/d3/talk/20111018/tree.html
しかし、それでも、JavaScriptコードのコアで、上記のように座標を計算したいだけです。何か案が?または、他の言語を使用してそれを実現できるかもしれません。
どうもありがとう!