//-------------------------------------------------------------// // File created by Michael Andrews (M.C.Andrews@reading.ac.uk) // // 13/8/99 Release version 1.0 // //-------------------------------------------------------------// #include "splnblob.inc" global_settings { assumed_gamma 1.0 max_trace_level 5 } background { color rgb 0.6 } #declare camPos = <0.0, 0.0, -175.0>*2; #declare camLookAt = <0,0,0>; #declare camAngle = 18; #declare lightDir = vrotate(vnormalize(<-1,2,-4>), 0); #declare lightLen = 1000000; #declare lightRad = lightLen*2*sin(radians(0.25)); camera { up <0, 1, 0> right <4/3, 0, 0> location camPos direction <0.0, 0.0, 1> angle camAngle look_at camLookAt } light_source { 0*x colour rgb 1.0 translate lightDir*lightLen media_attenuation on } light_source { 0*x colour rgb 0.5 translate camPos shadowless media_interaction off } #declare S10 = array[2] {1, 0} #declare S01 = array[2] {0, 1} #declare S1 = array[1] {1} #declare S011 = array[3] {0,1,1} #declare S100 = array[3] {1,0,0} #declare S010 = array[3] {0,1,0} #declare S101 = array[3] {1,0,1} #declare cP = array[5] #declare cP[2] = array[2] {<-10,-10,0>, <10,10,0>} #declare cP[3] = array[3] {<-10,-10,0>, <-5,5,0>, <10,-10,0>} #declare cP[4] = array[4] {<-10,-10,0>, <-5,5,0>, <10,-5,0>, <10,10,0>} #declare cR = array[5] #declare cR[1] = array[1] {0.5} #declare cR[2] = array[2] {0.5,2} #declare cR[3] = array[3] {0.5,2,0.5} #declare cR[4] = array[4] {0.5,2,0.5,1} #declare Num = 2; #while (Num < dimension_size(cP, 1)) union { blob { threshold 0.01 M_BSphStack ( cP[Num], INTERP, cR[Num], INTERP, S1, INTERP, 0.25 ) pigment { rgb <1,0.4,0.2> } translate 5*z } blob { threshold 0.01 M_BSphStack ( cP[Num], BEZIER, cR[Num], BEZIER, S1, BEZIER, 0.25 ) pigment { rgb <0.2,0.4,1> } } union { #declare Count = 0; #while (Count < dimension_size(cP[Num], 1)) cylinder { cP[Num][Count], cP[Num][Count]+5*z, 2 } #declare Count = Count + 1; #end pigment { rgb <0.2,0.6,0.3> } } translate 25*y*(3-Num) } #declare Num = Num + 1; #end #declare aP = array[4] {<-10,-10,0>,<-5,10,0>,<10,-5,0>,<-10,-10,0>} #declare aR = array[2] {<3,1,0.5>,<0.5,1,3>} union { blob { threshold 0.01 M_BSphAlign ( aP, INTERP, aR, INTERP, S1, INTERP, 0.25 ) pigment { rgb <1,0.4,0.2> } translate 5*z } blob { threshold 0.01 M_BSphAlign ( aP, BEZIER, aR, BEZIER, S1, BEZIER, 0.25 ) pigment { rgb <0.2,0.4,1> } } union { #declare Count = 0; #while (Count < dimension_size(aP, 1)) cylinder { aP[Count], aP[Count]+5*z, 1 } #declare Count = Count + 1; #end pigment { rgb <0.2,0.6,0.3> } } translate <-25,-20,0> } #declare vPa = array[4] {<-10,0,0>,<0,10,10>,<10,20,0>,<0,30,-10>} #declare vPb = array[4] {<0,0,10>,<10,10,0>,<0,20,-10>,<-10,30,0>} #declare vR = array[3] {1,3,1} union { blob { threshold 0.01 M_BCylStack ( vPa, vPb, INTERP, vR, INTERP, S1, INTERP, 0.1 ) pigment { rgb <1,0.4,0.2> } } union { #declare Count = 0; #while (Count < dimension_size(vPa, 1)) sphere { vPa[Count], M_interp (vR, Count/(dimension_size(vPa, 1)-1), INTERP) + 0.5 } sphere { vPb[Count], M_interp (vR, Count/(dimension_size(vPa, 1)-1), INTERP) + 0.5 } #declare Count = Count + 1; #end pigment { rgb <0.2,0.6,0.3> } } translate <25,5,0> } union { blob { threshold 0.01 M_BCylStack ( vPa, vPb, BEZIER, vR, BEZIER, S1, BEZIER, 0.1 ) pigment { rgb <0.2,0.4,1> } } union { #declare Count = 0; #while (Count < dimension_size(vPa, 1)) #local fT = Count/(dimension_size(vPa, 1)-1); sphere { M_interp (vPb, fT, BEZIER), M_interp (vR, fT, BEZIER) + 0.5 } sphere { M_interp (vPa, fT, BEZIER), M_interp (vR, fT, BEZIER) + 0.5 } #declare Count = Count + 1; #end pigment { rgb <0.2,0.6,0.3> } } translate <25,5,0> scale <1,-1,1> } #declare bPa = array[3] {<-5,0,0>,<-10,10,-5>,<-5,20,0>} #declare bPb = array[3] {<5,0,0>,<10,10,5>,<5,20,0>} #declare bR = array[1] {2} blob { threshold 0.01 M_BCylStack ( bPa, bPb, INTERP, bR, INTERP, S100, BEZIER, 0.25 ) M_BSphStack ( bPa, INTERP, bR, INTERP, S011, BEZIER, 0.25 ) M_BSphStack ( bPb, INTERP, bR, INTERP, S011, BEZIER, 0.25 ) pigment { rgb <1,0.2,0.4> } translate <-25,5,0> }