# The bowl from Foley... # Materials: DEFINE gold PLASTIC { PHONG 1 COLOUR 0 1 1 0.25 0 0.75 } DEFINE green PLASTIC { PHONG 1 COLOUR 0 1 0 0.00 0 1.00 } DEFINE blue PLASTIC { PHONG 1 COLOUR 1 0 0 0.00 0 1.00 } DEFINE cyan PLASTIC { PHONG 1 COLOUR 1 1 0 0.00 0 1.00 } DEFINE orange PLASTIC { PHONG 1 COLOUR 0 0.75 1 0 0 1 } SCHEME (define bowl_orig '(0 0 3)) DEFINE outer_edge SPHERE { ORIENT ORIG bowl_orig RADIUS 1.5 gold } DEFINE inner_edge SPHERE { ORIENT ORIG bowl_orig RADIUS 1.4 cyan } DEFINE cutting_cylinder OBJECT { ORIENT { ORIG bowl_orig VCT_Z 0 1 0 VCT_Y 0 0 1 } PLANE { ORIENT { ORIG 0 0 -1.6 VCT_Z 0 0 -1 VCT_Y 0 -1 0 } CIRCLE RADIUS 1.6 blue } PLANE { ORIENT ORIG 0 0 1 CIRCLE RADIUS 1.6 blue } EXTRUSION { START -1.6 END 1 CIRCLE RADIUS 1.6 blue } } DEFINE hollow_sphere OBJ_BOOL { TYPE DIFF outer_edge inner_edge } DEFINE hollow_bowl OBJ_BOOL { TYPE AND hollow_sphere cutting_cylinder } # Star definition: SCHEME (define star_in_rad 0.1) SCHEME (define star_out_rad 0.3) DEFINE star_poly POLYGON 10 (*s (list (sin (* PI2 0)) (cos (* PI2 0)) 1) star_out_rad) (*s (list (sin (* PI2 0.9)) (cos (* PI2 0.9)) 1) star_in_rad) (*s (list (sin (* PI2 0.8)) (cos (* PI2 0.8)) 1) star_out_rad) (*s (list (sin (* PI2 0.7)) (cos (* PI2 0.7)) 1) star_in_rad) (*s (list (sin (* PI2 0.6)) (cos (* PI2 0.6)) 1) star_out_rad) (*s (list (sin (* PI2 0.5)) (cos (* PI2 0.5)) 1) star_in_rad) (*s (list (sin (* PI2 0.4)) (cos (* PI2 0.4)) 1) star_out_rad) (*s (list (sin (* PI2 0.3)) (cos (* PI2 0.3)) 1) star_in_rad) (*s (list (sin (* PI2 0.2)) (cos (* PI2 0.2)) 1) star_out_rad) (*s (list (sin (* PI2 0.1)) (cos (* PI2 0.1)) 1) star_in_rad) DEFINE star OBJECT { PLANE { ORIENT { ORIG 0 0 -.5 VCT_Z 0 0 -1 VCT_Y 0 1 0 } FLIPX TRUE star_poly cyan } PLANE { ORIENT ORIG 0 0 .5 star_poly cyan } EXTRUSION { START -.5 END .5 star_poly cyan } } # Moon definition DEFINE moon OBJ_BOOL { TYPE DIFF OBJECT { PLANE { ORIENT { ORIG 0 0 -.5 VCT_Z 0 0 -1 VCT_Y 0 1 0 } CIRCLE RADIUS 0.2 orange } PLANE { ORIENT ORIG 0 0 .5 CIRCLE RADIUS 0.2 orange } EXTRUSION { START -.5 END .5 CIRCLE RADIUS 0.2 orange } } OBJECT { ORIENT ORIG 0.2 0 0 PLANE { ORIENT { ORIG 0 0 -.6 VCT_Z 0 0 -1 VCT_Y 0 1 0 } FLIPX TRUE CIRCLE RADIUS 0.2 green } PLANE { ORIENT ORIG 0 0 .6 CIRCLE RADIUS 0.2 green } EXTRUSION { START -.6 END .6 CIRCLE RADIUS 0.2 green } } } # Bowl with shapes removed... DEFINE bowl_wo_shapes OBJ_BOOL { TYPE DIFF hollow_bowl OBJ_COPY { # first, we remove 20 moons: NUM_COPY 20 COPY_CTR_NAME curmoon COPY_OBJECT OBJECT { ORIENT { ORIG (+v bowl_orig (list (* 1.3 (cos (* PI2 (/ (- curmoon (int (/ curmoon 5))) 16)))) (* 1.2 (- (/ (% curmoon 5) 4) 0.5)) (* 1.3 (sin (* PI2 (/ (- curmoon (int (/ curmoon 5))) 16)))) )) VCT_Z (list (cos (* PI2 (/ (- curmoon (int (/ curmoon 5))) 16))) 0 (sin (* PI2 (/ (- curmoon (int (/ curmoon 5))) 16))) ) VCT_Y 0 1 0 } moon } } OBJ_COPY { # next, we remove 20 stars: NUM_COPY 20 COPY_CTR_NAME curstar COPY_OBJECT OBJECT { ORIENT { ORIG (+v bowl_orig (list (* 1.3 (cos (* PI2 (+ 0.125 (/ (- curstar (int (/ curstar 5))) 16))))) (* 1.2 (- (/ (% curstar 5) 4) 0.5)) (* 1.3 (sin (* PI2 (+ 0.125 (/ (- curstar (int (/ curstar 5))) 16))))) )) VCT_Z (list (cos (* PI2 (+ 0.125 (/ (- curstar (int (/ curstar 5))) 16)))) 0 (sin (* PI2 (+ 0.125 (/ (- curstar (int (/ curstar 5))) 16)))) ) VCT_Y 0 1 0 } star } } } DEFINE floor PLANE { ORIENT { ORIG 0 -1.5 0 VCT_Z 0 1 0 } CHECKERBOARD { PLASTIC PHONG 1 COLOUR1 0 1 0 0.25 0 0.75 COLOUR2 1 0 0 0.25 0 0.75 DENSITY 2 2 2 } } DEFINE camera CAMERA { SCHEME (define camera_orig '(7 5 -7)) ORIG camera_orig LOOKDIR (-v bowl_orig camera_orig) VCTUP 0 1 0 ORTHOGONALIZE TRUE FOCAL 2.5 PRINTSTATUS TRUE } SCENE { bowl_wo_shapes floor camera LIGHT { COLOUR .5 .5 .5 0 0 0 ORIG (-v bowl_orig '(1 -2 1)) } LIGHT { COLOUR 0.5 0.5 0.5 0 0 0 ORIG 2 2 0 } AMBIENT 0.3 }