# Sepho-Intersections

```//// Based on the Starter Code for "Embedded Iteration + Randomness" var boolDoRefresh;   var lines = []; var lineNumber = 12; //&lt;&lt;-----change this number to add/remove lines!   function setup() { createCanvas(720, 480); background(20,20,50) noStroke(); boolDoRefresh = true; }   // Math for the intersection of two lines from Paul Bourke http://paulbourke.net/geometry/pointlineplane/ //takes two lines and returns the x,y value for the inersection of those lines function intersec(a,b){ var x1 = a[0]; var y1 = a[1]; var x2 = a[2]; var y2 = a[3];   var x3 = b[0]; var y3 = b[1]; var x4 = b[2]; var y4 = b[3];   var ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / ((y4-y3) * (x2-x1) - (x4-x3) * (y2-y1)); var ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / ((y4-y3) * (x2-x1) - (x4-x3) * (y2-y1)); var x = (x1 + ua * (x2 - x1)); var y = (y1 + ua * (y2 - y1));   if (ua &lt; 0 || ua &gt; 1 || ub &lt; 0 || ub &gt; 1) { return [-20,-20]; }   return[x,y]; }   //moves the lines according to each points velocity. function updateLines(lines){ for(var i = 0; i &lt; lines.length; i++){ var l = lines[i]; l[0] += l[4]; l[1] += l[5]; l[2] += l[6]; l[3] += l[7]; } }     function draw() { updateLines(lines);   //Draws all of the lines: background(20,20,50) stroke(255, 50); fill(255); for(var i = 0; i &lt; lines.length; i++){ line(lines[i][0],lines[i][1],lines[i][2],lines[i][3]); }   //Draws a red dot at all of the intersections: for(var i = 0; i &lt; lines.length; i++){ for(var j = 0; j &lt; lines.length; j++){ if(i != j){ la = lines[i]; lb = lines[j]; noStroke() fill(255,0,0); ellipse(intersec(la,lb)[0],intersec(la,lb)[1],3); } } }   if (boolDoRefresh) { boolDoRefresh = false; //Creates new lines: lines = []; for(var i = 0; i &lt; lineNumber; i++){ lines.push([random(width),random(height),random(width),random(height),random(-1,1), random(-1,1),random(-1,1),random(-1,1)]) } } }   function mousePressed() { boolDoRefresh = true; }```