xxxxxxxxxx
196
let x = 0;
let y = 0;
let spacing = 100;
let hourSpacing = 200;
let refresh = true;
let hourRefresh = true;
let minuteRefresh = true;
var H = 0;
var M = 0;
var S = 0;
var mils;
var patternArr = []; //2s, and random between 1, 0
var patternHour = []; //random between 1, 0 (size 48)
var hourArr = []; //indexes between 1 and 12
var minuteArr = []; //indexes between 1 and 48
var numArg = 48;
var secondCount = 0;
var oneDay = 0;
var thickness = 4;
function setup() {
createCanvas(800, 600);
background(0);
numArg = 48;
minuteArr = refreshArr(M);
}
function draw() {
if (S != second()) {
S = second();
refresh = !refresh;
secondCount = (hour()*3600 + minute()*60 + second());
oneDay = secondCount/(60*60*24);
}
if (M != int(minute()/5)) {
M = int(minute()/5);
minuteArr = refreshArr(M, 48);
randomizeHour();
hourArr = refreshArr(H, 12);
}
if (H != hour()%12) {
H = hour()%12;
hourArr = refreshArr(H, 12);
}
background(0);
stroke(255);
thickness = 80 * (1 - abs(1-2*oneDay));
strokeWeight(5 + thickness);
drawPattern(patternArr, oneDay);
if (refresh) {
randomize();
}
stroke(255, 204, 0);
strokeWeight(5 + thickness);
drawHour(patternHour);
}
function randomize(){
patternArr = [];
var numArg = (width/spacing) * (height/ spacing);
for (var i = 0; i < numArg; i++) {
if (isIn(i,minuteArr,M)){
patternArr.push(2.0);
} else {
patternArr.push(random(1));
}
}
refresh = !refresh;
}
function randomizeHour(){
patternHour = [];
for (var i = 0; i < numArg; i++) {
patternHour.push(random(1));
}
}
function isIn(i, arr, lim) {
for (var j = 0; j < lim; j++) {
if (arr[j] == i) {
return true;
}
}
return false;
}
function drawDay(percent) {
var path = 2*PI*percent;
var cx = width/2;
var cy = height/2;
var rx = 500;
var ry = 400 + (cos(path + PI/2) +2) *310;
var x = cx + rx*cos(path);
var y = cy + ry*sin(path);
var d = (cos(path + PI/2) +1)**2 * 600 + 500;
circle(x, y, d);
}
function drawHour(arr) {
var i = 0;
for (var ys = 0; ys < height; ys = ys+hourSpacing) {
for (var xs = 0; xs < width; xs = xs+hourSpacing) {
if (isIn(i, hourArr, H)) { //if we want to draw there
if (patternHour[i] < 0.7) {
line(xs, ys + hourSpacing, xs, ys );
} else {
line (xs, ys + hourSpacing, xs + hourSpacing, ys);
}
}
i++;
}
}
}
function drawPattern(arr,thresh) {
var i = 0;
for (var ys = 0; ys < height; ys= ys + spacing) {
for (var xs = 0; xs < width; xs = xs + spacing) {
if (arr[i] == 2.0) {
drawIteration(xs, ys, spacing, arr, 2);
line(xs, ys, xs + spacing, ys + spacing);
} else if (arr[i] < thresh) {
line(xs, ys, xs + spacing, ys + spacing);
} else {
line (xs, ys + spacing, xs + spacing, ys);
}
i++;
}
}
}
function drawIteration(startx, starty, spacing, arr, n){
if (n == 0) {
return;
} else {
var i = 0;
var s= spacing/3;
var endy = starty + 3*s;
var endx = startx + 3*s;
for (var ys = starty; ys < endy; ys= ys+s) {
for (var xs = startx; xs < endx; xs = xs+s) {
if (arr[i] < 0.5) {
drawIteration(xs, ys, s, arr, n-1);
line(xs, ys, xs + s, ys + s);
} else {
line (xs, ys + s, xs + s, ys);
}
i++;
}
}
}
}
function refreshArr(range, num) {
var res = randomInRange(num);
return subset(res,0, range); //remove duplicates
}
function randomInRange(len) {
var res = [];
for (var i = 0; i < len; i++) {
res.push(i);
}
return shuffle(res);
}
/*
function keyPressed(){
M = M+1;
print("His" + H);
print(hourArr[0]);
print(hourArr[1]);
}
*/