// -------------------------------
//  The Clebsch diagonal surface:
//  a smooth cubic surface
//  admitting the symmetry
//  of the tetrahedron
// -------------------------------

//  set image size 

width =400;
height=400;

//  define some useful constants

double  w2=sqrt(2.0); 
double  Pi=2*arccos(0);

//  define tetrahedral coordinates

poly p=1-z-w2*x;
poly q=1-z+w2*x;
poly r=1+z+w2*y;
poly s=1+z-w2*y;

//  symmetric polynomials 

poly c1=p  +q  +r  -s;
poly c2=p^3+q^3+r^3-s^3;

//  fix rotation

first  = translate;
second = rotate;
third  = scale;

rot_x=-0.5;
rot_y= 4.35;
rot_z=-0.58+Pi;

//  fix scaling

double  sf = 0.6;

scale_x=sf;
scale_y=sf*0.5;
scale_z=sf;

//  visible area and perspective

depth_cueing=yes;
depth=-20;
radius=9;
spec_z=30;
perspective=central;
antialiasing=4;

// fix light

ambient   =20;
diffuse   =60;
reflected =70;
smoothness=30;

light1_x  =-100;
light1_y  = 100;
light1_z  = 100;
light1_vol=  80;

light3_x  = 100;
light3_y  =  20;
light3_z  =  50;
light3_vol=  60;

light8_x  =-100;
light8_y  = 100;
light8_z  = 100;
light8_vol=  20;

//   surface color

surface_red  =200;
surface_green= 56;
surface_blue = 88;
inside_red   =200;
inside_green = 56;
inside_blue  = 88;

//  define the diagonal surface

poly clebsch = c2 - c1^3;
surface=clebsch;

//  draw the surface

clear_screen;
draw_surface;
filename="clebsch.ras";
save_color_image;

//  print the surface

dither_surface;
dither_file_format=postscript;
filename="clebsch.ps";
save_dithered_image;

