# Ken Silverman's Evaldraw

This topic is 2487 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I don't know how many people are aware of Ken Silverman's very cool Evaldraw program; it's a sort of cross between a C programming environment and a graphing package (with real-time compilation!) that can output in 1D (as sound, even), 2D or 3D (voxels), as well as "0D" for more classic programming techniques (2D pixel plotting, OpenGL, ...) I know we usually promote Python as a beginner's language (thanks to its interactive feedback); maybe this program is worth a look too? It comes with tons of samples, but I threw together a few of my own as a test. [smile] It looks like it'll come in handy for prototyping...
(x,y,t) {

t *= 0.3;

x *= 0.5;
y *= 0.5;

dx0 = x-sin(t*3);
dy0 = y-cos(t*2);

dx1 = x-sin(t*7);
dy1 = y-cos(t*5);

dx2 = x-sin(t*4);
dy2 = y-cos(t*5);

b0 = dx0*dx0+dy0*dy0;
b1 = dx1*dx1+dy1*dy1;
b2 = dx2*dx2+dy2*dy2;

return 1.3-(b0*b1*b2);

}

(x,y,t,&r,&g,&b) {

// Offset (x,y).
x += sin(t * 0.5);
y += cos(t * 0.7);

// Grab the picture dimensions.
pic_w = 0; pic_h = 0;
getpicsiz(pic_w, pic_h);

// Calculate the angle:
angle = atan2(x, y) * (pic_w / pi) * 3;

// Calculate the depth:
depth = 80 / (x * x + y * y);

// Look up pixel from tunnel wall:
pic(angle + t * 5, depth + t * 10, r, g, b);

// Darkness from depth:
depth = 10 * sqrt(depth) - 10;
r -= depth;
g -= depth;
b -= depth;

}

(x,y,t,&r,&g,&b){

a = t / 10;
z = 20 * (1.2 + cos(t));

dx = z * cos(a);
dy = z * sin(a);

ix = x - dy * y + dx * x;
iy = y + dx * y + dy * x;

pic(ix, -iy, r, g, b);
}

(x,y,z,t,&r,&g,&b){

t *= 0.4;

dx0 = (x - sin(t * 3));
dy0 = (y - cos(t * 2));
dz0 = (z - cos(t * 2));

dx1 = (x - cos(t * 2));
dy1 = (y - sin(t * 5));
dz1 = (z - cos(t * 3));

dx2 = (x - cos(t * 2));
dy2 = (y - cos(t * 3));
dz2 = (z - sin(t * 5));

b0 = dx0 * dx0 + dy0 * dy0 + dz0 * dz0;
b1 = dx1 * dx1 + dy1 * dy1 + dz1 * dz1;
b2 = dx2 * dx2 + dy2 * dy2 + dz2 * dz2;

r = 255 - b0 * 255;
g = 255 - b1 * 255;
b = 255 - b2 * 255;

return  1 - (b0 * b1 * b2);
}


##### Share on other sites
If you like that, you should also check out Context-Free Grammars, Processing, and NodeBox (MacOSX only). All very similar to the concepts you posted, all very unique, and all very, very cool.

##### Share on other sites
Cool, Ken Silverman is still making stuff!

##### Share on other sites
Here's what I've doing recently with Evaldraw, final will be using libs, but until then it'll be mostly all done in Evaldraw.