Sunday, September 27, 2009
Knots v1
float theta = radians(30);
float frame = 0;
int rcolor,gcolor,bcolor;
float[] zbuffer = new float[480000];
int r = 80;
float ratio;
int i;
float y = -2000;
void setup() {
size(800,600);
background(0);
theta = radians(30);
noStroke();
rcolor = 50;
gcolor = 50;
bcolor = 200;
}
void draw() {
/*
if (height/2 - y < 50){
r = int(random (20,100));
ratio = int(random (1,3));
frame = -ratio*(height/2-50);
rcolor=int(random(50,100));
gcolor=int(random(50,100));
bcolor=int(random(50,100));
}
*/
theta += 0.005;
translate(width/2-r,height/2);
frame +=1;
noStroke();
float x = 2 * r * (cos(theta) + sin(theta/7)) + r +1;
y = 200.0 * cos(frame/400 + theta + 2) * sin(2 * theta + 1 + frame/800 );
float z = 2 * r * (sin(theta)+ cos(4*theta + 2))/2 + r +1;
float displacementPerc = 1+(1/(-z-1))/100;
x -= displacementPerc;
y -= displacementPerc;
int rectangleSize = int(1+((2*r+1)-z/2)/10);
for (int j=0; j < rectangleSize; j++ ) {
for (int k=0; k < rectangleSize; k++ ) {
i = int( x+k ) + 400 - r + 800 * ( 300 + int( j-y ) );
if ( zbuffer[i] == 0.0 ) {
zbuffer[i] = 1000.0;
}
if ( zbuffer[i] > z ) {
// if this is a border pixel quite distant from
if ( (zbuffer[i] - z > 5) && ( j == 0 || k == 0 || j == rectangleSize-1 || k == rectangleSize-1 )) {
fill( -z/3 + rcolor + r , -z/3 + gcolor +r , -z/3 + bcolor + r,95 );
rect(int(x+k),int(j-y),1,1);
zbuffer[i] = 1000.0;
}
else {
fill( -z/3 + rcolor + r, -z/3 + gcolor +r, -z/3 + bcolor + r);
rect(int(x+k),int(j-y),1,1);
zbuffer[i] = z;
}
}
}
}
}
float frame = 0;
int rcolor,gcolor,bcolor;
float[] zbuffer = new float[480000];
int r = 80;
float ratio;
int i;
float y = -2000;
void setup() {
size(800,600);
background(0);
theta = radians(30);
noStroke();
rcolor = 50;
gcolor = 50;
bcolor = 200;
}
void draw() {
/*
if (height/2 - y < 50){
r = int(random (20,100));
ratio = int(random (1,3));
frame = -ratio*(height/2-50);
rcolor=int(random(50,100));
gcolor=int(random(50,100));
bcolor=int(random(50,100));
}
*/
theta += 0.005;
translate(width/2-r,height/2);
frame +=1;
noStroke();
float x = 2 * r * (cos(theta) + sin(theta/7)) + r +1;
y = 200.0 * cos(frame/400 + theta + 2) * sin(2 * theta + 1 + frame/800 );
float z = 2 * r * (sin(theta)+ cos(4*theta + 2))/2 + r +1;
float displacementPerc = 1+(1/(-z-1))/100;
x -= displacementPerc;
y -= displacementPerc;
int rectangleSize = int(1+((2*r+1)-z/2)/10);
for (int j=0; j < rectangleSize; j++ ) {
for (int k=0; k < rectangleSize; k++ ) {
i = int( x+k ) + 400 - r + 800 * ( 300 + int( j-y ) );
if ( zbuffer[i] == 0.0 ) {
zbuffer[i] = 1000.0;
}
if ( zbuffer[i] > z ) {
// if this is a border pixel quite distant from
if ( (zbuffer[i] - z > 5) && ( j == 0 || k == 0 || j == rectangleSize-1 || k == rectangleSize-1 )) {
fill( -z/3 + rcolor + r , -z/3 + gcolor +r , -z/3 + bcolor + r,95 );
rect(int(x+k),int(j-y),1,1);
zbuffer[i] = 1000.0;
}
else {
fill( -z/3 + rcolor + r, -z/3 + gcolor +r, -z/3 + bcolor + r);
rect(int(x+k),int(j-y),1,1);
zbuffer[i] = z;
}
}
}
}
}
comments

Add a comment: