int nodeCount; Node[] nodes = new Node[100]; HashMap nodeTable = new HashMap(); int edgeCount; Edge[] edges = new Edge[500]; static final color nodeColor = #F0C070; static final color selectColor = #FF3030; static final color fixedColor = #FF8080; static final color edgeColor = #FF8000; PFont font; void setup(){ size(600,600); loadData(); font = createFont("SansSerif", 10); textFont(font); smooth(); } void loadData(){ addEdge("Wagner", "Handel"); addEdge("Wagner", "Mozart"); addEdge("Wagner", "Debussy"); addEdge("Mozart", "Debussy"); addEdge("Chopin", "Debussy"); addEdge("Chopin", "Wagner"); addEdge("Chopin", "Mozart"); addEdge("Beethoven", "Wagner"); addEdge("Bellini", "Wagner"); addEdge("Berlioz", "Wagner"); addEdge("Wagner", "Bruckner"); addEdge("Wagner", "Rimsky-Korsakov"); nodes[0].fixed = true; nodes[0].x = width/2; nodes[0].y = height/2; } void addEdge(String fromLabel, String toLabel){ Node from = findNode(fromLabel); Node to = findNode(toLabel); Edge e = new Edge(from, to); if(edgeCount == edges.length){ edges = (Edge[]) expand(edges); } edges[edgeCount++] = e; } Node findNode(String label){ //label = label.toLowerCase(); Node n = (Node) nodeTable.get(label); if (n==null){ return addNode(label); } return n; } Node addNode(String label){ Node n = new Node(label); if(nodeCount == nodes.length){ nodes = (Node[]) expand(nodes); } nodeTable.put(label, n); nodes[nodeCount++] = n; return n; } void draw(){ background(0); for (int i =0; i