Anders and Briegel in Python
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.5KB

  1. var graph = {};
  2. graph.colors = ["red", "green", "yellow", "blue", "pink", "orange", "purple"];
  3. graph.hook = function() {
  4. materials.load();
  5. websocket.connect(graph.update);
  6. };
  7. graph.update = function(json) {
  8. abj.vops = json.vops;
  9. abj.ngbh = json.ngbh;
  10. abj.meta = json.meta;
  11. graph.updateScene();
  12. };
  13. graph.updateScene = function() {
  14. if (graph.object){gui.scene.remove(graph.object);}
  15. graph.object = null;
  16. console.log("update");
  17. var geometry = new THREE.Geometry();
  18. geometry.colors = [];
  19. for (var i in abj.vops) {
  20. var vop = abj.vops[i];
  21. var pos = abj.meta[i].position;
  22. var vertex = new THREE.Vector3(pos.x, pos.y, pos.z);
  23. geometry.vertices.push(vertex);
  24. geometry.colors.push(new THREE.Color(graph.colors[abj.vops[i] % graph.colors.length]));
  25. }
  26. var edges = new THREE.Object3D();
  27. var my_edges = abj.edgelist();
  28. for (i = 0; i < my_edges.length; ++i) {
  29. var edge = my_edges[i];
  30. var start = abj.meta[edge[0]].position;
  31. var startpos = new THREE.Vector3(start.x, start.y, start.z);
  32. var end = abj.meta[edge[1]].position;
  33. var endpos = new THREE.Vector3(end.x, end.y, end.z);
  34. var newEdge = materials.makeCurve(startpos, endpos);
  35. edges.add(newEdge);
  36. }
  37. var particles = new THREE.Points(geometry, materials.qubit);
  38. graph.object = new THREE.Object3D();
  39. graph.object.name = "graphstate";
  40. graph.object.add(particles);
  41. graph.object.add(edges);
  42. gui.scene.add(graph.object);
  43. gui.render();
  44. };