//import processing.opengl.*;
//import javax.media.opengl.GL;
float meridian;
float equator;
int TOTAL_BOXES = 50;
float PERIOD = 5000;
float periodX;
float periodY;
float periodZ;
float RANGE = 100;
float rangeX;
float rangeY;
float rangeZ;
float xpos;
float ypos;
float zpos;
float prevXpos;
float prevYpos;
float prevZpos;
float radX;
float radY;
float radZ;
int H;
int S;
int B;
int digital1;
int digital2;
int digital3;
int digital4;
float analog1;
float analog2;
float analog3;
float analog4;
float analog5;
void setup() {
noCursor();
size(1024, 768, P3D);
frameRate(60);
// enableVSync();
// setupArduino();
meridian = width*.5;
equator = height*.5;
}
void draw() {
noCursor();
analog1 =sineWave(1000000.0);
analog2= sineWave(2000000.0);
analog3= sineWave(3000000.0);
analog4= sineWave(4000000.0);
analog5= sineWave(5000000.0);
digital1 = round(random(1));
digital2 =round(random(1));
digital3 =round(random(1));
digital4 =round(random(1));
background(0);
lights();
lightFalloff(1, .001, .001);
lightSpecular(255, 200, 200);
translate(sineWave(analog2*3333)*meridian+meridian,sineWave(analog2*7777)*equator+equator, -300);
ambientLight(100, 0,100, 0, 0, 0);
colorMode(HSB, 100);
H = round(sineWave(analog1*20000)*25);
S = round(sineWave(analog2*20000)*50);
B = round((sineWave(analog3*200000)*10)+90);
noStroke();
fill(H, S, B, 50);
ambientLight(100-H, S,B, xpos, ypos, zpos);
ambientLight(100-H, S,B, width-xpos, height-ypos, zpos);
drawBoxes();
}
void drawBoxes() {
prevXpos = xpos;
prevYpos = ypos;
if(digital4==1) {
periodX = analog2*PERIOD+100000;
rangeX = analog3*RANGE;
periodY = analog5*PERIOD+100000;
rangeY = analog4*RANGE;
periodZ = analog1*PERIOD+100000;
rangeZ = analog1*RANGE;
}
xpos = sineWave(periodX)*rangeX;
ypos = sineWave(periodY)*rangeY;
zpos = sineWave(periodZ)*rangeZ;
for(int k=0;k<=TOTAL_BOXES;++k) {
xpos += k*sineWave(111111)*.5;
ypos += k*sineWave(222222)*.7;
zpos += k*sineWave(555555);
radX = sineWave(1111111*analog5+200000)*TWO_PI;
radY = sineWave(1111111*analog4+200000)*TWO_PI;
radZ = sineWave(1111111*analog3+200000)*TWO_PI;
radX += k*TWO_PI*sineWave(1111111*analog4+100000);
radY += k*TWO_PI*sineWave(1111111*analog4+100000);
radZ += k*PI*sineWave(1111111*analog3+100000);
pushMatrix();
rotateX(radX);
rotateY(radY);
rotateZ(radZ);
// rect(xpos,ypos, prevXpos,prevYpos);
translate(xpos, ypos, zpos);
beginShape();
vertex(k*sineWave(2000), k*sineWave(3000));
vertex(k*sineWave(3000), k*sineWave(4000));
vertex(k*sineWave(5000), k*sineWave(6000));
vertex(k*sineWave(7000), k*sineWave(7000));
vertex(k*sineWave(8000)+random(7), k*sineWave(8000)+random(3));
vertex(k*sineWave(9000)+random(7), k*sineWave(9000)+random(3));
vertex(k*sineWave(10000)+random(7), k*sineWave(10000)+random(3));
vertex(k*sineWave(11000)+random(7), k*sineWave(11000)+random(3));
endShape();
popMatrix();
}
}
/*
PGraphicsOpenGL pgl;
GL gl;
void enableVSync()
{
pgl = (PGraphicsOpenGL) g; //processing graphics object
gl = pgl.beginGL(); //begin opengl
gl.setSwapInterval(1); //set vertical sync on
pgl.endGL(); //end opengl
}*/