JUNGのDAGLayoutアルゴリズムを使用し、その後、レイアウト座標を自分のデータ構造に再度読み取る際に問題が発生しました。
sとsのリストを含むNetwork
クラスがあります。これをJUNGデータ構造に変換するために、オブジェクトを作成してエッジを追加します。ノードオブジェクトを返します。Node
Edge
DirectedSparseMultigraph
e.getSrc()
e.getDest()
DirectedSparseMultigraph<Node, Edge> graph;
for (Edge e : net.getEdges()) {
graph.addEdge(e, e.getSrc(), e.getDest());
}
次に、レイアウトアルゴリズムを適用します。
Layout<Node, Point2D> layout;
layout = new DAGLayout(graph);
その後、頂点座標を取得するためにレイアウトに使用します。
for (Node node : net.getNodes()) {
Point2D coord = layout.transform(node);
node.setPos((float)coord.getX(), (float)coord.getY());
}
ただし、Node
オブジェクトには常に(0,0)が(x、y)として含まれます。
なぜこれがこのように機能しないのですか、そしてどうすれば修正できますか?