#---------------------------------------------------------
# 
#            sample code
#			--------- a complex object
#
#---------------------------------------------------------

function list { 
		 f(x,y) = cos(x)*cos(y) 
		 g(x,y) = sin(x)*cos(y)
		 h(x,y) = sin(y)
		 cx(x,y) = x
		 cy(x,y) = sin(y)*0.4
		 cz(x,y) = cos(y)*0.4
	   };


material list {
	 red = material {
	 	 emission: 0.10 0.00 0.00
	 	 ambient: 0.20 0.20 0.20
	 	 diffuse: 0.50 0.00 0.00
	 	 specular: 1.00 1.00 1.00
	 	 shininess: 14.50
	 	 alpha: 0.80 
		  };
	 green = material {
	 	 emission: 0.00 0.10 0.00
	 	 ambient: 0.20 0.20 0.20
	 	 diffuse: 0.00 0.50 0.00
	 	 specular: 1.00 1.00 1.00
	 	 shininess: 14.00
	 	 alpha: 0.80 
		  };
	 blue = material {
	 	 emission: 0.00 0.00 0.10
	 	 ambient: 0.20 0.20 0.20
	 	 diffuse: 0.00 0.00 0.50
	 	 specular: 1.00 1.00 1.00
	 	 shininess: 14.50
	 	 alpha: 0.80 
		  };
	 yellow = material {
	 	 emission: 0.10 0.10 0.00
	 	 ambient: 0.20 0.20 0.20
	 	 diffuse: 0.40 0.40 0.00
	 	 specular: 1.00 1.00 1.00
	 	 shininess: 20.50
	 	 alpha: 0.80 
		  };
	 magenta = material {
	 	 emission: 0.10 0.00 0.10
	 	 ambient: 0.20 0.20 0.20
	 	 diffuse: 0.40 0.00 0.40
	 	 specular: 1.00 1.00 1.00
	 	 shininess: 9.50
	 	 alpha: 0.80 
		  };
	 cyan = material {
	 	 emission: 0.00 0.10 0.10
	 	 ambient: 0.20 0.20 0.20
	 	 diffuse: 0.40 0.40 0.40
	 	 specular: 1.00 1.00 1.00
	 	 shininess: 12.00
	 	 alpha: 0.80 
		  };
	 white = material {
	 	 emission: 0.050000 0.050000 0.050000
	 	 ambient: 0.20 0.20 0.20
	 	 diffuse: 0.30 0.30 0.30
	 	 specular: 1.00 1.00 1.00
	 	 shininess: 14.50
	 	 alpha: 0.80 
		  };
	};

  graph list {
 	 ball = surface{[f(x,y),g(x,y),h(x,y)]  [y=-0.5*pi:pi*0.5] 
		[x=0.0:2.0*pi] [samp: 12:12][orien = -1] }
 	 cylinder = surface{[cx(x,y) cy(x,y),cz(x,y)]  [x = -4:4] 
		 [y= -pi:pi] [samp=4: 7]}
       };

  tempobj1 =  object {
	  graph cylinder
	  graph ball   
	  push
               translate 4.0,0.0,0.0;   graph ball;
	       translate -8.0,0.0,0.0;  graph ball;
          pop;
          push 
               translate 0.0,4.0,0.0 ;
         	  graph cylinder;
	          graph ball;
        	  push 
                      translate 4.0,0.0,0.0;  graph ball 
         	      translate -8.0,0.0,0.0; graph ball
                  pop;
          pop;
          push 
               translate 0.0,-4.0,0.0 ;
        	  graph cylinder
           	  graph ball
        	  push 
                    translate 4.0,0.0,0.0; graph ball;
	            translate -8.0,0.0,0.0 graph ball;
                  pop;
          pop;
 	  push
              zrotate 900.0; graph cylinder;
          pop
          push
              translate 4.0,0.0,0.0;
              zrotate 900.0;
                graph cylinder;
          pop;
          push
              translate -4.0, 0.0,0.0; 
              zrotate 900.0;
               graph cylinder
          pop;
    };

  tempobj2 = object {
	 push yrotate 900.00, graph cylinder pop
         push translate 0.00,4.00, 0.00, yrotate 900.00, graph cylinder pop;
         push translate 0.00,-4.00, 0.00, yrotate 900.00, graph cylinder pop;
         push translate 4.00,0.00, 0.00, yrotate 900.00, graph cylinder pop;
         push translate -4.0,0.00, 0.00, yrotate 900.00, graph cylinder pop;
         push translate 4.0,4.00, 0.00, yrotate 900.00, graph cylinder pop;
         push translate -4.00,4.00, 0.00, yrotate 900.00, graph cylinder pop;
         push translate 4.00,-4.00, 0.00, yrotate 900.00, graph cylinder pop;
         push translate -4.00,-4.00, 0.00, yrotate 900.00, graph cylinder pop;
        };

 cobj = object {
	 material red; object tempobj1
         material green; push  translate 0.00,0.00, -4.0, object tempobj1 pop;
         material blue; push  translate 0.00,0.00, 4.0, object tempobj1 pop;
	 material yellow; object tempobj2;
       };
#---------------------------------------------------------------------------
plot cobj;
#---------------------------------------------------------------------------
