Ken Silverman's Evaldraw

Started by
2 comments, last by Scott_AW 13 years ago
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 +++]

Advertisement
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.
Cool, Ken Silverman is still making stuff!
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.

bse_newcave1.png

http://www.moddb.com...black-shadow-3d

http://blackshadowgame.blogspot.com

This topic is closed to new replies.

Advertisement