// MELT / An Ancient Ring '03.03 // By Tsutomu HIGO E-mail: nj2t-hg@asahi-net.or.jp #version 3.1; global_settings { assumed_gamma 2.2 max_trace_level 3 } light_source {<0, 0, 0> color <0.8, 0.8, 1>} camera { location <0, 0, -80> angle 90 look_at <-5, -14, 0> } #declare R1 = seed(12); #declare StrengthVal = 0.3; #declare Media = media { emission 0.02 intervals 100 samples 1, 15 confidence 0.9999 variance 1/10 density { spherical turbulence 0.2 color_map { [0.0 color rgb <0, 0, 0>] [0.7 color rgb <0.2, 0.3, 0.7>] [1 color rgb <0.5, 0.5, 0.5>] } scale <30, 30, 1200> } } #macro Dlaring (Nmax, Dia, Rot, Dsphe) #declare Amax = int(pi*Dia/2*3); #declare Ca = array[Amax] #declare Na = 0; #while (Na < Amax) #declare Ca[Na] = 0; #declare Na = Na+1; #end #declare Cp = array[Nmax][3] #declare Ap = 2*pi*rand(R1); #declare Cp[0][0] = Dia/2*cos(Ap); #declare Cp[0][1] = Dia/2*sin(Ap); #declare Cp[0][2] = 0; #declare Np = 1; #while (Np < Nmax) #declare Ap = 2*pi*rand(R1); #declare Pa = int(Ap*Dia/4*3); #declare Ho = max( max( max(Cp[Ca[mod(Pa-4+Amax, Amax)]][2], Cp[Ca[mod(Pa-3+Amax, Amax)]][2]), max(Cp[Ca[mod(Pa-2+Amax, Amax)]][2], Cp[Ca[mod(Pa-1+Amax, Amax)]][2]) ), max( max(max(Cp[Ca[mod(Pa, Amax)]][2], Cp[Ca[mod(Pa+1, Amax)]][2]), Cp[Ca[mod(Pa+2, Amax)]][2]), max(Cp[Ca[mod(Pa+3, Amax)]][2], Cp[Ca[mod(Pa+4, Amax)]][2]) ) )+2.1; #declare Ntmax = Ho*10; #declare Nt = Ntmax; #while (Nt > -1) #declare Cp[Np][0] = Dia/2*cos(Ap); #declare Cp[Np][1] = Dia/2*sin(Ap); #declare Cp[Np][2] = Ho*Nt/Ntmax; #declare Ns = -4; #while (Ns < 5) #declare Nns = Ca[mod(Pa+Ns+Amax, Amax)]; #if (pow(Cp[Np][0]-Cp[Nns][0], 2)+pow(Cp[Np][1]-Cp[Nns][1], 2)+pow(Cp[Np][2]-Cp[Nns][2], 2) < 4) #declare Nt = 0; #end #declare Ns = Ns+1; #end #declare Nt = Nt-1; #end #declare Rlength = 0.8+rand(R1)*0*pow(1/(Cp[Np][2]+1), 0.2); sphere { Dsphe StrengthVal rotate y*Np/6 translate <-1.5*Dia, -Cp[Np][2], 0> rotate z*(Cp[Np][2]+1)/2/Dia*180/pi rotate x*Rot } #declare Ca[mod(Pa, Amax)] = Np; #declare Np = Np+1; #end #end union { blob { threshold 0.1 Dlaring(1900, 30, 0, 2.5) Dlaring(2100, 30, 180, 2.5) pigment {color rgbt <0.7, 0.9, 1, 0.6>} finish { reflection 1.2 diffuse 1 phong 2 brilliance 1 ambient 0.1 } no_shadow } sphere {<0, 0, 0> 2000 pigment {color rgbf <1, 1, 1, 1>} finish {ambient 0 diffuse 0} interior {media {Media}} hollow } rotate z*270 rotate x*45 rotate z*-30 } background { color rgb <0, 0.15, 0> }