Вопрос

Мне нужно нарисовать круг вокруг вершины в Юнг. Анкет Круг определяется вершиной как центр и заданный радиус r.

Это было полезно?

Решение

Я думаю, что -то вроде этого. Это даст вам очки за круг с данными radius. Анкет Чтобы настроить разрешение изменений точек x+=0.01 к большему/меньшему значению по мере необходимости. Перемещать центр круга в произвольную точку (p,q), просто добавьте это в (x,y), то есть plot(x+p,y+q);.

double radius = 3;
for (double x = -radius; x <= radius; x += 0.01) {
    double y = Math.sqrt(radius * radius - x * x);
    plot(x, y);//top half of the circle
    plot(x, -y);//bottom half of the circle
}

РЕДАКТИРОВАТЬ: Похоже, что Юнг на самом деле не тарифт XY, а структура сети/графика. Таким образом, все, что вам нужно, - это расположить ваши точки по кругу, используя один из предоставленных макетов. CircleLayout а также KKLayout Кажется, что делает свое дело, хотя CircleLayout дает странные результаты, когда есть много узлов. Вот полный пример кода:

//Graph holder
Graph<Integer, String> graph = new SparseMultigraph<Integer, String>();

//Create graph with this many nodes and edges
int nodes = 30;
for (int i = 1; i <= nodes; i++) {
    graph.addVertex(i);
    //connect this vertext to vertex+1 to create an edge between them.
    //Last vertex is connected to the first one, hence the i%nodes
    graph.addEdge("Edge-" + i, i, (i % nodes) + 1);
}

//This will automatically layout nodes into a circle.
//You can also try CircleLayout class
Layout<Integer, String> layout = new KKLayout<Integer, String>(graph);
layout.setSize(new Dimension(300, 300)); 

//Thing that draws the graph onto JFrame
BasicVisualizationServer<Integer, String> vv = new BasicVisualizationServer<Integer, String>(layout);
vv.setPreferredSize(new Dimension(350, 350)); // Set graph dimensions

JFrame frame = new JFrame("Circle Graph");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);

Я выбрал SparseMultiGraph Потому что это то, что было в Учебник Юнга. Анкет Есть и другие типы графиков, но я не уверен, в чем разница.

Вы также можете использовать StaticLayout это может занять (x,y) Вершины, затем используйте мой исходный код, чтобы построить точки, но это не было бы таким элегантным для Jung Framework. Зависит от того, каковы ваши требования, однако.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top