xxxxxxxxxx
54
var num;
var boolDoRefresh;
var coll;
function setup() {
createCanvas(640, 480);
coll = new Array(num);
for(var p = 0; p < coll.length; p++){
coll[p] = new Array(4);
}
boolDoRefresh = true;
num = 12;
}
function draw() {
if (boolDoRefresh) {
background(220);
for (var i = 0; i < num; i++) {
let r1 = random(640);
let r2 = random(480);
let r3 = random(640);
let r4 = random(480);
fill(0);
stroke(0);
line(r1, r2, r3, r4);
coll[i] = [r1, r2, r3, r4];
coll[i][1] = r2;
coll[i][2] = r3;
coll[i][3] = r4;
}
for (var j = 0; j < num - 1; j++) {
for (var k = j + 1; k < num; k++) {
let num1 = (coll[k][2] - coll[k][0]) * (coll[j][1] - coll[k][1]) - (coll[k][3] - coll[k][1]) * (coll[j][0] - coll[k][0]);
let num2 = (coll[j][2] - coll[j][0]) * (coll[j][1] - coll[k][1]) - (coll[j][3] - coll[j][1]) * (coll[j][0] - coll[k][0]);
let denom = (coll[k][3] - coll[k][1]) * (coll[j][2] - coll[j][0]) - (coll[k][2] - coll[k][0]) * (coll[j][3] - coll[j][1]);
var u1 = num1/denom;
var u2 = num2/denom;
var check = u1 >= 0 && u1 <= 1 && u2 >= 0 && u2 <= 1;
if (denom != 0 && (num1 != 0 || num2 != 0) && check) {
var x = coll[j][0] + u1 * (coll[j][2]-coll[j][0]);
var y = coll[j][1] + u1 * (coll[j][3]-coll[j][1]);
fill('rgba(10, 255, 180, .5)');
stroke(10, 255, 180);
circle(x, y, 15);
}
}
}
}
boolDoRefresh = false;
}
function mousePressed() {
boolDoRefresh = true;
}