Quantcast
Viewing all articles
Browse latest Browse all 21942

Jung java tworzenie grafu z zachowaniem odpowiedniej odległości między wierzchołkami

Witam,

można jakoś w prosty sposób odpowiednio rozmieścić wierzchołki grafu w taki sposób (np. waga krawędzi AB = 10, AC = 8) to wizualnie odległość punktu A do B nie jest mniejsza od A do C.

W skrócie chodzić o to, aby na odległości między wierzchołkami miała wpływ waga danej krawędzi.

Używam biblioteki jung, może zastosować coś innego? :)

 

Pozdrawiam

public class Testowa extends JFrame {

    public static void main(String[] args) throws IOException {

        SparseGraph<Integer, Double> g = new SparseGraph<Integer, Double>();
        g.addVertex((Integer) 1);
        g.addVertex((Integer) 2);
        g.addVertex((Integer) 3);
        g.addVertex((Integer) 4);
        g.addVertex((Integer) 5);
        g.addVertex((Integer) 6);
        g.addVertex((Integer) 7);
        g.addVertex((Integer) 8);
        g.addEdge(10.0, 1, 2, EdgeType.UNDIRECTED);
        g.addEdge(8.0, 1, 3, EdgeType.UNDIRECTED);
        g.addEdge(5.0, 4, 5, EdgeType.UNDIRECTED);

        Layout<Integer, String> layout = new CircleLayout(g);
        layout.setSize(new Dimension(700, 700));

        VisualizationViewer<Integer, String> vs
                = new VisualizationViewer<Integer, String>(layout);
        vs.setPreferredSize(new Dimension(750, 750));

        DijkstraShortestPath<Integer, String> alg = new DijkstraShortestPath(g);
        java.util.List<String> lista = alg.getPath(1, 6);
        for (Object s : lista) {
            System.out.println(s);
        }


        Transformer<Integer, String> transformer2 = new Transformer<Integer, String>() {
            @Override
            public String transform(Integer i) {
               return i.toString();
            }

        };

        vs.getRenderContext().setLabelOffset(35);
        vs.getRenderContext().setVertexLabelTransformer(transformer2);
        vs.getRenderer().getVertexLabelRenderer().setPosition(edu.uci.ics.jung.visualization.renderers.Renderer.VertexLabel.Position.AUTO);
        //vs.getRenderContext().setEdgeLabelTransformer(transformer);
        DefaultModalGraphMouse gm = new DefaultModalGraphMouse();
        gm.setMode(ModalGraphMouse.Mode.TRANSFORMING);
        vs.setGraphMouse(gm);

        JFrame frame = new JFrame("Prosta Interakcja");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(vs);
        frame.pack();
        frame.setVisible(true);
    }
}

 


Viewing all articles
Browse latest Browse all 21942

Trending Articles