Grundsätzlich muss ich eine 3D-ungerichteten Graphen aus der Liste der Scheitelpunkte plotten.Zurzeit kann ich eine ungerichtete Grafik in 2D und ich habe den folgenden Code dafür verwendet.Kann JGraphT Java-Bibliothek für die Erstellung von 3D-Grafiken verwendet werden
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);
}
}
Nun, was ich wissen will, ist, dass Können wir diesen Code und zeichnen Sie die ungerichteten Graphen in 3D mit JGraphT library.Is es etwas anderes, das in erfuellen, meine Aufgabe anders als mir dies wird nützlicher verlängern.