// *********** HERE STARTS circle-mode.js ************* | |
circleMode = false; | |
function initCircleMode() { | |
document.querySelector("#circle-mode").addEventListener('click', function() { | |
circleMode = !circleMode; | |
document.querySelector("#circle-mode i").innerText = (circleMode ? "scatter_plot" : "trip_origin"); | |
s.graph.nodes().forEach(function(n) { | |
n.x = (circleMode ? n.circleX : n.originalX); | |
n.y = (circleMode ? n.circleY : n.originalY); | |
n.size = 10; | |
}); | |
s.refresh(); | |
}); | |
} | |
function isInRect(x, y, rect) { | |
if (x < -10000 || x > 10000) return true; | |
if (y < -10000 || y > 10000) return true; | |
var ans = true; | |
var c = crossProd(rect[0], rect[1], x, y); | |
for (var i = 1; i < 4; i++) { | |
var temp = crossProd(rect[i], rect[(i+1)%4], x, y); | |
if (c*temp < 0) ans = false; | |
} | |
return ans; | |
} | |
function crossProd(r1, r2, x, y) { | |
return r1[0]*r2[1] + r2[0]*y + x*r1[1] - r1[0]*y - r2[0]*r1[1] - x*r2[1]; | |
} |