var table; var edges = []; var nodes = []; function preload() { table = loadStrings('698.edges'); } class Edge{ constructor(id1, id2){ this.id1 = id1; this.id2 = id2; } } class Node{ constructor(id, x, y){ this.id = id; this.x = x; this.y = y; this.disp1 = 0; this.disp2 = 0; } } function search(id, nodes){ for(var x = 0; x < nodes.length; x++){ if(nodes[x].id == id){ return nodes[x] } } return 0; } function setup() { createCanvas(1800, 1800); var v = table.length; var w = 1000; var l = 1000; var area = w*l; var k = sqrt(area/v); for(var x = 0; x < table.length; x++){ edgeInfo = table[x].split(" "); var e = new Edge(parseInt(edgeInfo[0]), parseInt(edgeInfo[1])); edges.push(e); var result1 = search(parseInt(edgeInfo[0]), nodes); var result2 = search(parseInt(edgeInfo[1]), nodes); if(result1 == 0){ var node = new Node(parseInt(edgeInfo[0]), random(0,1000),random(0,1000)) nodes.push(node); } if(result2 == 0){ var node = new Node(parseInt(edgeInfo[1]), random(0,1000),random(0,1000)) nodes.push(node); } } sort(nodes, nodes.length) } function draw(){ clear() var lines = nodes.length; var u = 100 var v = 1500 //vertical line line(100,100, 100, v); line( v, v, v, 100); //horizontal line line(100,v,v, v); line(v,100,100, 100); //squares var increment = (v-u)/lines; var pos = 100; for(var x = 0; x < nodes.length+1; x++){ line(pos, v, pos, u); line(v, pos, u, pos); pos = pos + increment; } //axis line(100,100,100,85) line(100,100,70,100) var n = 0; for(var x = 1; x < nodes.length+1; x++){ var tick = map(n, min(0), max(nodes.length), u,v) //x-axis line(tick,100, tick,75) //y-axis line(100, tick, 70, tick) //node id textSize(10) fill(0,0,0) text(str(nodes[n].id), tick+2, 90) text(str(nodes[n].id), 75, tick+13) n++; } tick = map(nodes.length, min(0), max(nodes.length), u,v) //last x-axis line(tick,100, tick,70) //last y-axis line(100, tick, 70, tick) //closes tick marks line(70, u, 70, v) line(u, 75 , v, 75) var w = u var y_coord=0; //fill in matrix for(var x = 0; x < edges.length; x++){ var node1 = search(edges[x].id1, nodes) var idx1 = nodes.indexOf(node1) var node2 = search(edges[x].id2, nodes) var idx2 = nodes.indexOf(node2) fill(0, 2, 152) var x1 = map(idx1, min(0), max(nodes.length), u,v) y_coord = (idx2*increment)+100 rect(x1, y_coord, increment, increment); } for(var x = 0; x < edges.length; x++){ var node1 = search(edges[x].id1, nodes) var idx1 = nodes.indexOf(node1) var node2 = search(edges[x].id2, nodes) var idx2 = nodes.indexOf(node2) var x1 = map(idx1, min(0), max(nodes.length), u,v) y_coord = (idx2*increment)+100 if(mouseX > x1 && mouseY < (y_coord+increment) && mouseX < (x1+increment) && mouseY > y_coord){ fill(0, 2, 252) rect(x1, y_coord, increment, increment); fill(192,192,192) rect(mouseX+10, mouseY-(50), 75, 25) fill(0,0,0) textSize(10); text("Node 1: " + edges[x].id1, mouseX+15, mouseY-(40)) text("Node 2: " + edges[x].id2, mouseX+15, mouseY-(30)) } } }