// STRATA / Division '01.09 // By Tsutomu HIGO E-mail: nj2t-hg@asahi-net.or.jp #version 3.1; global_settings { max_trace_level 3 assumed_gamma 2.2 } camera { location <0, 1000, 0> angle 22 look_at <0, 0, 0> } light_source {<0, 50, 0> color rgb <1,1,1>} #declare R1 = seed(24); #declare Ctm = 30; #declare Turn = array[Ctm][3] #declare Xp = array[3] #declare Yp = array[3] #declare Zp = array[3] #declare Cnm = 6; #declare Bubble = array[2] #declare Ct = 0; #while (Ct < Ctm) #declare Tn = 0; #while (Tn < 3) #if(Ct = 0) #declare Turn[Ct][Tn] = 120*Tn; #else #declare Turn[Ct][Tn] = Turn[Ct-1][Tn]+60*rand(R1)-30; #end #declare Tn = Tn+1; #end #declare Ct = Ct+1; #end #declare R = 10; #declare Cn = 0; #while (Cn < Cnm) #declare N = 0; #while (N < 2) #declare R = R+6*rand(R1); #declare L = 7; #declare Tn = 0; #while (Tn < 3) #declare Xp[Tn] = 0; #declare Yp[Tn] = 0; #declare Zp[Tn] = 0; #declare Tn = Tn+1; #end #declare Bubble[N] = union { #declare Ct = 0; #while (Ct < Ctm) #declare Tn = 0; #while (Tn < 3) #declare Yr = Turn[Ct][Tn]; sphere { R } #declare Xp[Tn] = Xp[Tn]+L*sin(mod(Yr+360,360)*pi/180); #declare Yp[Tn] = 0; #declare Zp[Tn] = Zp[Tn]+L*cos(mod(Yr+360,360)*pi/180); #declare Tn = Tn+1; #end #declare Ct = Ct+1; #end } #declare N = N+1; #end intersection { object { Bubble[1] } object { Bubble[0] inverse } plane { y, 0 } pigment {color rgb <1-0.3*Ct/Ctm*rand(R1), 1-0.2*Ct/Ctm*rand(R1), 1-0.5*Ct/Ctm*rand(R1)>} finish { ambient 0.2 phong 0 reflection 0.5 diffuse 0.7 } translate <4,0,24> rotate y*-20 no_shadow } #declare Cn = Cn+1; #end