Anders and Briegel in Python
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

70 рядки
2.0KB

  1. var colors = ["red", "green", "yellow", "blue", "pink", "orange", "purple"];
  2. var ws;
  3. function connectToServer() {
  4. ws = new WebSocket("ws://localhost:5000");
  5. ws.onopen = function()
  6. {
  7. message.innerHTML = "Connected to server.";
  8. message.className = "visible";
  9. };
  10. ws.onerror = function(err)
  11. {
  12. message.innerHTML = "Could not connect to server.";
  13. message.className = "visible";
  14. };
  15. ws.onmessage = function (evt)
  16. {
  17. console.log("Received update");
  18. var new_state = JSON.parse(evt.data);
  19. vops = new_state.vops;
  20. ngbh = new_state.ngbh;
  21. meta = new_state.meta;
  22. updateScene();
  23. };
  24. ws.onclose = function()
  25. {
  26. message.innerHTML = "Connection to server lost. <a href='#' onclick='javascript:connect_to_server()'>Reconnect</a>.";
  27. message.className = "visible";
  28. };
  29. }
  30. function updateScene() {
  31. var oldState = scene.getObjectByName("graphstate");
  32. scene.remove(oldState);
  33. oldState = null;
  34. var geometry = new THREE.Geometry();
  35. for (var i in abj.vops) {
  36. var vop = abj.vops[i];
  37. var pos = abj.meta[i].position;
  38. var vertex = new THREE.Vector3(pos.x, pos.y, pos.z);
  39. geometry.vertices.push(vertex);
  40. geometry.colors[i] = new THREE.Color(colors[abj.vops[i] % colors.length]);
  41. }
  42. var edges = new THREE.Object3D();
  43. var my_edges = abj.edgelist();
  44. for (i=0; i < my_edges.length; ++i) {
  45. var edge = my_edges[i];
  46. var start = abj.meta[edge[0]].position;
  47. var startpos = new THREE.Vector3(start[0], start[1], start[2]);
  48. var end = abj.meta[edge[1]].position;
  49. var endpos = new THREE.Vector3(end[0], end[1], end[2]);
  50. var newEdge = makeCurve(startpos, endpos);
  51. edges.add(newEdge);
  52. }
  53. var particles = new THREE.Points(geometry, materials.qubit);
  54. var newState = new THREE.Object3D();
  55. newState.name = "graphstate";
  56. newState.add(particles);
  57. newState.add(edges);
  58. scene.add(newState);
  59. render();
  60. }