// SHADOW / Cup '01.10 // By Tsutomu HIGO E-mail: nj2t-hg@asahi-net.or.jp #version 3.1; global_settings { max_trace_level 6 assumed_gamma 2.2 } camera { location <-25, 20, 120> angle 67 look_at <0, -20, 0> } light_source { <0, 100, 500> color rgb <1.5, 1.5, 1.5> } light_source { <0, 20, 0> color rgb <1, 1, 0> } #declare R1 = seed(20); #declare Nxm = 30; #declare Ntm = 64; #declare Xp = array[Nxm] #declare Yp = array[Nxm] #declare Zp = array[Nxm] #declare Xr = array[Nxm] #declare Yr = array[Nxm] #declare X1 = array[Nxm] #declare Y1 = array[Nxm] #declare Z1 = array[Nxm] #declare X0 = array[Nxm] #declare Y0 = array[Nxm] #declare Z0 = array[Nxm] #macro Henkan(Xi,Yi,Zi,Xo,Yo,Zo) #declare Xo = 0.006*Yi*Yi; #declare Yo = Yi*cos(Zi/6/pi); #declare Zo = Yi*sin(Zi/6/pi); #end #declare R = 0.25; #declare Nc =-3; #while (Nc < 3) #declare Nx =0; #while (Nx < Nxm) #declare Xp[Nx] = 0; #declare Yp[Nx] = 0; #declare Zp[Nx] = 20*Nc; #declare Xr[Nx] = 0; #declare Yr[Nx] = 0; #declare X1[Nx] = 0; #declare Y1[Nx] = 1; #declare Z1[Nx] = 0; #declare X0[Nx] = 0; #declare Y0[Nx] = 0; #declare Z0[Nx] = 0; #declare Nx = Nx+1; #end #declare Nt = 0; #while (Nt < Ntm) #declare Nx = 0; #while (Nx < Nxm) #declare Xr[Nx] = Xr[Nx]+12*(rand(R1)-0.45); #if(Nt > 0) union { cylinder { , , R } sphere { R } pigment { color rgb <0.7, 1, 0.9> } finish { ambient 0.2 phong 0.8 reflection 1 } rotate z*90 rotate <10, 30, 0> no_shadow } #end Henkan(Xp[Nx], Yp[Nx], Zp[Nx], X0[Nx], Y0[Nx], Z0[Nx]) #declare Xp[Nx] = Xp[Nx]+sin(Xr[Nx]*pi/180)*sin(Yr[Nx]*pi/180); #declare Yp[Nx] = Yp[Nx]+cos(Xr[Nx]*pi/180); #declare Zp[Nx] = Zp[Nx]+sin(Xr[Nx]*pi/180)*cos(Yr[Nx]*pi/180); Henkan(Xp[Nx], Yp[Nx], Zp[Nx], X1[Nx], Y1[Nx], Z1[Nx]) #declare Nx = Nx+1; #end #declare Nt = Nt+1; #end #declare Nc = Nc+1; #end plane { y, 0 pigment { color rgbt <0, 0.5, 1, 0.6> } finish { ambient 0 phong 0.8 reflection 0.4 } rotate <10, 30, 0> no_shadow }