xxxxxxxxxx
var s;
var gap;
var CW;
var x = 0;
var CDegrees = 0;
var Choosen = 0;
var counter = 250;
var RotatingCube = [-1,-1,-1,-1,-1,-1];
var RDegrees = [0,0,0,0,0,0];
var RCounter = [100,250,150,200,50,75];
var Time = [300,300,300,300,300,300];
var sqlength = 0;
var gaplength = 0;
var MXpos;
var MYpos;
var Xshadow;
var Yshadow;
var same = false;
var spin;
function setup() {
var CanvasSize = windowHeight;
if(windowWidth < windowHeight){
CanvasSize = windowWidth;
}
createCanvas(CanvasSize, CanvasSize);
background(196, 205, 193);
s = int(random(5,8));
gap = int(random(3,6));
CW = CanvasSize;
Choosen = s*s;
rectMode(CENTER);
for(p = 0; p < Time.length; p++){
Time[p] = int(random(200,300));
}
}
function grid(s, gap){
var gridlength = CW/s;
sqlength = gridlength*((gap-1)/gap);
gaplength = gridlength - sqlength;
var cent = CW/2;
MXpos = mouseX - cent;
MYpos = mouseY - cent;
//Xshadow = MXpos / (cent/gaplength);
//Yshadow = MYpos / (cent/gaplength);
for(x = 0; x < s; x++){
for(y = 0; y < s; y++){
sqbuild(x, y);
}
}
}
function sqbuild(x, y){
var CenterX = (x * (sqlength + gaplength) + sqlength/2 + gaplength/2);
var CenterY = (y * (sqlength + gaplength) + sqlength/2 + gaplength/2);
Xshadow = -(MXpos / ((CW/2)/gaplength))/2;
Yshadow = -(MYpos / ((CW/2)/gaplength))/2;
spin = 0;
for (sets = 0; sets < RotatingCube.length; sets++){
if((y*s + x) === RotatingCube[sets]){
spin = RDegrees[sets];
RDegrees[sets] +=4;
if(RDegrees[sets] === 180){
RDegrees[sets] = 0;
RotatingCube[sets] = -1;
}
}
}
noStroke();
push();
translate(CenterX, CenterY);
scale((abs(spin-90)/90)/2 + 0.5);
fill(101, 139, 111, 50);
push();
translate(Xshadow, Yshadow);
rotate(radians(spin));
square(0, 0, sqlength-5);
pop();
rotate(radians(spin));
fill(101, 139, 111);
square(0,0, sqlength-5);
pop();
}
function draw() {
background(196, 205, 193);
grid(s, gap);
same = false;
for(g = 0; g < RCounter.length; g++){
if(RCounter[g] === 0){
while(same === false){
RotatingCube[g] = int(random(0, s*s - 1));
same = true;
for(b = 0; b < RCounter.length; b++){
if(b === g){
}
else if(RotatingCube[b] === -1){
}
else if(RotatingCube[b] === RotatingCube[g]){
same = false;
}
}
}
}
RCounter[g] += 1;
RCounter[g] = RCounter[g]%Time[g];
}
}