Simplified circle mode code and translated the circle to another position so it's more centered compared to the regular view
diff --git a/js/circle-mode.js b/js/circle-mode.js
index 492c6c6..3677f68 100644
--- a/js/circle-mode.js
+++ b/js/circle-mode.js
@@ -4,28 +4,15 @@
 

 function initCircleMode() {

   document.querySelector("#circle-mode").addEventListener('click', function() {

-    if(circleMode) {

-      circleMode = false;

-      document.querySelector("#circle-mode i").innerText = "trip_origin";

+    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.graph.nodes().forEach(function(n) {

-        n.x = n.originalX;

-        n.y = n.originalY;

-        n.size = 10;

-      });

-

-      s.refresh();

-    } else {

-      circleMode = true;

-      document.querySelector("#circle-mode i").innerText = "scatter_plot";

-

-      s.graph.nodes().forEach(function(n) {

-        n.x = n.circleX;

-        n.y = n.circleY;

-      });

-

-      s.refresh();

-    }

+    s.refresh();

   });

 }

 

@@ -34,10 +21,10 @@
   if (y < -10000 || y > 10000) return true;

 

   var ans = true;

-  var c = crossProd (rect[0], rect[1], x, y);

+  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);

+  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;