В принципе, мне нужно построить трехмерный неориентированный граф из списка вершин. В настоящее время я могу построить неориентированный граф в 2D, и для этого я использовал следующий код.Может использовать java-библиотеку JGraphT для создания 3D-графиков
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JApplet;
import javax.swing.JFrame;
import org.jgraph.JGraph;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.GraphConstants;
import org.jgrapht.ListenableGraph;
import org.jgrapht.ext.JGraphModelAdapter;
import org.jgrapht.graph.ListenableDirectedGraph;
import org.jgrapht.graph.DefaultEdge;
public class JGraphAdapterDemo extends JApplet {
private static final Color DEFAULT_BG_COLOR = Color.decode("#FAFBFF");
private static final Dimension DEFAULT_SIZE = new Dimension(530, 320);
//
private JGraphModelAdapter m_jgAdapter;
/**
* @see java.applet.Applet#init().
*/
public void init() {
// create a JGraphT graph
ListenableGraph g = new ListenableDirectedGraph(DefaultEdge.class);
// create a visualization using JGraph, via an adapter
m_jgAdapter = new JGraphModelAdapter(g);
JGraph jgraph = new JGraph(m_jgAdapter);
adjustDisplaySettings(jgraph);
getContentPane().add(jgraph);
resize(DEFAULT_SIZE);
// add some sample data (graph manipulated via JGraphT)
g.addVertex("v1");
g.addVertex("v2");
g.addVertex("v3");
g.addVertex("v4");
g.addEdge("v1", "v2");
g.addEdge("v2", "v3");
g.addEdge("v3", "v1");
g.addEdge("v4", "v3");
// position vertices nicely within JGraph component
positionVertexAt("v1", 50, 50);
positionVertexAt("v2", 120, 120);
positionVertexAt("v3", 200,200);
positionVertexAt("v4", 20, 20);
// that's all there is to it!...
}
private void adjustDisplaySettings(JGraph jg) {
jg.setPreferredSize(DEFAULT_SIZE);
Color c = DEFAULT_BG_COLOR;
String colorStr = null;
try {
colorStr = getParameter("bgcolor");
}
catch(Exception e) {}
if(colorStr != null) {
c = Color.decode(colorStr);
}
jg.setBackground(c);
}
private void positionVertexAt(Object vertex, int x, int y) {
DefaultGraphCell cell = m_jgAdapter.getVertexCell(vertex);
Map attr = cell.getAttributes();
Rectangle2D b = GraphConstants.getBounds(attr);
GraphConstants.setBounds(attr, new Rectangle(x, y, b.OUT_BOTTOM, b.OUT_TOP));
Map cellAttr = new HashMap();
cellAttr.put(cell, attr);
m_jgAdapter.edit(cellAttr, null, null, null);
}
}
Теперь то, что я хочу знать, что Можем ли мы расширить этот код и построить неориентированный граф в 3D с помощью JGraphT library.Is есть что-нибудь еще, что будет более полезным для меня в fulfulling свою задачу, кроме этого.