|
- var graph = {};
- graph.colors = ["red", "green", "yellow", "green", "pink", "orange", "purple"];
-
- graph.prepare = function() {
- materials.prepare();
- websocket.connect(graph.update);
- };
-
- graph.center = function() {
- var middle = new THREE.Vector3(0, 0, 0);
- for (var i in abj.node) {
- middle = middle.add(abj.node[i].position);
- }
- middle = middle.multiplyScalar(1.0/abj.order());
- return middle;
- };
-
- graph.update = function(newState) {
- if (newState){abj.update(newState);}
-
- if (graph.object){gui.scene.remove(graph.object);}
- graph.object = null;
-
- var geometry = new THREE.Geometry();
- geometry.colors = [];
- for (var i in abj.node) {
- var color = graph.colors[abj.node[i].vop % graph.colors.length];
- if (abj.node[i].color !== undefined){
- color = abj.node[i].color;
- }
- geometry.vertices.push(abj.node[i].position);
- geometry.colors.push(new THREE.Color(color));
- }
-
- graph.center();
- gui.controls.target.copy(graph.center());
-
- var edges = new THREE.Object3D();
- var my_edges = abj.edgelist();
- for (i = 0; i < my_edges.length; ++i) {
- var edge = my_edges[i];
- var start = abj.node[edge[0]].position;
- var startpos = new THREE.Vector3(start.x, start.y, start.z);
- var end = abj.node[edge[1]].position;
- var endpos = new THREE.Vector3(end.x, end.y, end.z);
- var newEdge = materials.makeCurve(startpos, endpos);
- edges.add(newEdge);
- }
-
- var particles = new THREE.Points(geometry, materials.qubit);
- graph.object = new THREE.Object3D();
- graph.object.name = "graphstate";
- graph.object.add(particles);
- graph.object.add(edges);
- gui.scene.add(graph.object);
- gui.render();
- geometry = null;
- edges=null;
- particles = null;
- graph.object = null;
- };
-
- graph.test = function(command) {
- //Act the command
- //Send it back to the server, ultimately thru to python
- };
|