View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Ken Silverman's Evaldraw

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

3 replies to this topic

### #1benryves  Members

Posted 28 September 2007 - 12:45 AM

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);
}


[Website] [+++ Divide By Cucumber Error. Please Reinstall Universe And Reboot +++]

### #2choffstein  Members

Posted 28 September 2007 - 01:29 AM

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.

### #3Ravuya  Members

Posted 28 September 2007 - 02:39 AM

Cool, Ken Silverman is still making stuff!

### #4Scott_AW  Members

Posted 03 April 2011 - 12:41 AM

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.