• Advertisement
Sign in to follow this  

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.

If you intended to correct an error in the post then please contact us.

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 this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement