//Laura Berry //Render settings: +KFI0, +KFF250, +KI0, +KF11 //Comments: Animation of the construction of a cube from square faces (idea from Flatland). Clear front of toy chest provides view of ball being dropped in. // Created with aid of "Icosahedron movie" and class notes on sine and cosine. //presets #include "colors.inc" #include "woods.inc" //camera camera { location <0,0,-3> look_at <0,0,0> } //lighting global_settings {ambient_light White max_trace_level 2} light_source {<0,0,-1.9> color White} light_source {<2,0,-1> color White} //background background {color White} //define square #macro square(s) #declare p1 = <-.5,-.5,0>; #declare p2 = <.5,-.5,0>; #declare p3 = <.5,-.4999+s,0>; #declare p4 = <-.5,-.4999+s,0>; #declare f1 = polygon {5, p1,p2,p3,p4,p1 texture {T_Wood7} }; object {f1} #end //front square #macro front(a) #declare p1 = <-.5,-.5,0>; #declare p2 = <.5,-.5,0>; #declare p3 = <.5,-.4999+1,0>; #declare p4 = <-.5,-.4999+1,0>; #declare f1 = polygon {5, p1,p2,p3,p4,p1 texture{pigment{color rgbf <1.1,1,1.2,1-f>}} translate <.5*cos(a),0,.5*sin(a)>}; object {f1} #end //back square #macro back(c) #declare p1 = <.5*cos(c)-.5,-.5,.5*sin(c)>; #declare p2 = <.5*cos(c)+.5,-.5,.5*sin(c)>; #declare p3 = <.5*cos(c)+.5,-.4999+1,.5*sin(c)>; #declare p4 = <.5*cos(c)-.5,-.4999+1,.5*sin(c)>; #declare f1 = polygon {5, p1,p2,p3,p4,p1 texture {T_Wood7}}; object {f1} #end //bottom square #macro bottom(c) #declare p1 = <.5*cos(c)-.5,-.5,.5*sin(c)>; #declare p2 = <.5*cos(c)+.5,-.5,.5*sin(c)>; #declare p3 = <.5*cos(a)+.5,-.5,.5*sin(a)>; #declare p4 = <.5*cos(a)-.5,-.5,.5*sin(a)>; #declare f1 = polygon {5, p1,p2,p3,p4,p1 texture {T_Wood7}}; object {f1} #end //set clock #switch(clock) //show line #range (0,1) #declare s=.02; object{square(s)} #break //line to square #range(1.0001,2) #declare s=clock-1; object{square(s)} #break //show square #range(2.0001,3) #declare s=1; object{square(s)} #break //rotate square #range(3.0001,4) #declare s=1; #declare r= clock-3; object{square(s) rotate <0,-230*r,0>} #break //separate 2 squares #range(4.0001,5) #declare s=1; #declare r= clock-4; object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} #break //add a back to cube #range(5.0001,6) #declare s=1; #declare r= 1; #declare a= radians(230); #declare c= radians(50); object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} object{back(c) translate <0, 6-clock, 0>} #break //add a bottom #range(6.0001,7) #declare s=1; #declare r= 1; #declare a= radians(230); #declare c= radians(50); object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} object{back(c)} object{bottom(c) translate <0,.5*(clock-7),0>} #break //add a front #range(7.0001,8) #declare s=1; #declare r= 1; #declare a= radians(230); #declare c= radians(50); #declare f= .5*(clock-7); object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} object{back(c)} object{bottom(c)} object{front(a)} #break //drop in a ball #range(8.0001,9) #declare s=1; #declare r= 1; #declare a= radians(230); #declare c= radians(50); #declare f= .5; object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} object{back(c)} object{bottom(c)} object{front(a)} sphere{ <0,-.217,0>, .2 texture{pigment{color Blue}} translate <0,1.4*(9-clock),0>} #break //bounce up #range(9.0001,9.3) #declare s=1; #declare r= 1; #declare a= radians(230); #declare c= radians(50); #declare f= .5; object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} object{back(c)} object{bottom(c)} object{front(a)} sphere{ <0,-.217,0>, .2 texture{pigment{color Blue}} translate <0,.4*(clock-9.0001),0>} #break //bounce down #range(9.3001,9.6) #declare s=1; #declare r= 1; #declare a= radians(230); #declare c= radians(50); #declare f= .5; object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} object{back(c)} object{bottom(c)} object{front(a)} sphere{ <0,-.217,0>, .2 texture{pigment{color Blue}} translate <0,.4*(9.6-clock),0>} #break //final #range(9.6001,11) #declare s=1; #declare r= 1; #declare a= radians(230); #declare c= radians(50); #declare f= .5; object{square(s) rotate <0,-230,0> translate <.5*r,0,0>} object{square(s) rotate <0,-230,0> translate <-.5*r,0,0>} object{back(c)} object{bottom(c)} object{front(a)} sphere{ <0,-.217,0>, .2 texture{pigment{color Blue}}} #break #end