//heli76 //I needed a small helicopter in the waterfall scene, and because //the thousands of bushes used up the memory of my computer, I //constructed a simple helicopter. I had a Sikorsky S76 in mind, but //simple CSG has its limits. #declare rottex= texture{ pigment{ radial frequency 4 color_map { [0.0 color rgbt <1,1,1,0.9>] [0.40 color rgbt <1,1,1,0.9>] [0.47 color rgbt <.7,.7,.7,.5>] [0.53 color rgbt <.7,.7,.7,.5>] [0.60 color rgbt <1,1,1,0.9>] [1.0 color rgbt <1,1,1,0.9>] }}finish {ambient 0.4 diffuse 0.6 }} #declare Hp=texture {pigment //{color rgb <1,0.1,0.4>} {color rgb <0,.5,.8>} finish {diffuse 0.5 reflection 0.5} } #declare XS=0.8 ; #declare nb= object{difference { sphere { <0,0,0> 1 texture{Hp} } box {<-15,0,-15> <15,10,15>} box {<-15,-10,-15> <15,10,0> } }scale } #declare nc=object {difference { sphere { <0,0,0> 1 texture{Hp}} box {<-15,0,-15> <15,-10,5>pigment{Clear} } box {<-15,-10,-15> <15,10,0> pigment{Clear}} }scale } #declare front=object{difference { sphere { <0,0,0> 1 scale texture {Hp} } box {<-15,-15,-15> <15,0,15>pigment {Clear} } box {<-15,-10,-15> <15,10,0>pigment {Clear} } box {<-15,.91,-15> <15,1.4,15> pigment {Clear} } }} #declare fc=object{difference { sphere { <0,0,0> 1 scale texture {Hp}} box {<-15,0.91,-15> <15,-15,15>pigment {Clear} } }scale <1,0.4,1.> translate <0,0.91-0.4*.91,0>} #declare center=object{difference { cylinder { <0,0,0> <0,0,-1> 1 scale texture {Hp}} box {<-15,0,-15> <15,-15,15> pigment {Clear} } box {<-15,0.91,-15> <15,1.4,15>pigment {Clear} } }} #declare cc=object{difference { cylinder { <0,0,0> <0,0,-1> 1 scale texture {Hp}} box {<-15,0.91,-15> <15,-15,15>pigment {Clear} } }scale <1,0.4,1> translate <0,0.91-0.4*.91,0>} #declare ccc=object{ sphere { <0,0,0> 1 scale texture {Hp} }scale <.55,0.55,1.> translate <0,0.91-0.4*.91,-.4>} #declare cb=object{difference { cylinder { <0,0,0> <0,0,-1> 1 scale texture {Hp}} box {<-15,0,-15> <15,15,15> pigment {Clear} } }} #declare e1=union { cylinder { <0,0,0> <0,1.95,0> .18 scale <1,1,1> rotate -x*15 translate -z*.4 texture {Hp}} box {<-.18,0,-.7> <.18,1.55,0> rotate x*5 translate -z*.87 texture {Hp} } box {<-.18,0,-.7> <.18,1.665,0> rotate -x*15 translate -z*.9 texture {Hp} } } #declare e2= difference{ object{e1 translate z*.2} box {<-1,10,-15> <1,1.55,15> rotate x*5 translate <0,0,-.2> texture {Hp} } } #declare e3=union { object{cone { <-.2,.7,-1> .1 <-.15,.57,-2.3> .08 scale <1,1.8,1> texture {Hp}}} object{cone { < .2,.7,-1> .1 < .15,.57,-2.3> .08 scale <1,1.8,1> texture {Hp}}} sphere {<0,0,0> .08 scale <1,1.8,2.5> translate <-.15,1.,-2.3> texture {Hp} } sphere {<0,0,0> .08 scale <1,1.8,2.5> translate < .15,1.,-2.3> texture {Hp} } } #declare rear=object{difference { sphere { <0,0,0> 1 scale texture {Hp} } box {<-15,-15,-15> <15,0,15>pigment {Clear} } box {<-15,-10,-15> <15,10,0>pigment {Clear} } box {<-15,.91,-15> <15,10,15>pigment {Clear} } }rotate y*180 translate -z*1} #declare bl=object{blob { threshold 1 sphere { <0, 0, 0>, 2, 2 } cylinder {<0,.3,0><0,.3,-2> 1,2} }pigment {Red} scale <.5,.6,.7> rotate x*10 translate <0,0.3,-2.5> } #declare rb=object{difference { sphere { <0,0,0> 1 scale texture {Hp} } box {<-15,15,-15> <15,0,15>pigment {Clear} } box {<-15,-10,-15> <15,10,0>pigment {Clear} } box {<-15,.91,-15> <15,10,15>pigment {Clear} } }rotate y*180 translate -z*1} #declare rc=object{difference { sphere { <0,0,0> 1 scale texture {Hp} } box {<-15,.91,-15> <15,-15,15>pigment {Clear} } }rotate y*180 scale <1,0.4,1> translate <0,0.91-0.4*.91,-1>} #declare rot1=object{union{ cylinder { <0,0,0> <0,1.9,0> .03 pigment {Gray30} translate -z*.7} cylinder { <0,1.7,0> <0,1.8,0> .1 pigment {Gray30} translate -z*.7} }} #declare t1=object{ union{ object{cone { <0,0,0.3> .5 <0,0,-4> .1 scale <.7,1.2,1> texture {Hp}}} object{sphere{<0,0,0> .1 scale <.7,1.2,1> translate -z*4 texture {Hp}}} rotate x*9 translate <0,0.4,-2.5>} } #declare t2=cone{<0,0,0> .3 <0,0,.8> .17 texture {Hp}} #declare t2u=cone{<0,0,0> .35 <0,0,1.2> .25 texture {Hp}} #declare t3= object{ union { object{t2 scale <1,0.3,1> rotate y*90 } object{t2 scale <1,0.3,1> rotate -y*90 } difference { object{t2u scale <1,0.3,1> rotate -y*110 rotate -z*90 translate z*.2} box{<-2,1,-2><2,4,2>} box{<-2,0,-2><2,-4,2>} } object{t2 scale <.6,0.3,.4> rotate y*90 translate <0,.85,-.1> } object{t2 scale <.6,0.3,.4> rotate -y*90 translate <0,.85,-.1>} }translate <0,1.,-6.2>} #declare helisum= union{ object{nb } object{nc } object{front } object{fc } object {center} object {cb } object {cc } object {ccc } object {e2 } object {e3 } object {t1} object {t3} object{rear} object{rb} object{rc} object{rot1} object{cylinder{<0,0,0>,<0,0.01,0>, .55 texture {rottex}} rotate z*90 rotate x*clock*57 translate <-.5,1.9,-6.35> } object{cylinder{<0,0,0>,<0,0.01,0>, 4.3 texture {rottex}} rotate y*clock*59 translate <0,1.75,-0.7> } }//end union #declare window1 = intersection{ sphere { <0,0,0> 1 scale } object{box{<-.45,0,0><.45,.8,2>}} } #declare window1r = intersection{ sphere { <0,0,0> 1 scale } object{box{<3,.3,.4><0,.8,.7>}rotate -y*26} } #declare window1l = intersection{ sphere { <0,0,0> 1 scale } object{box{<0,.3,.4><-3,.8,.7>}rotate y*26} } #declare window2 = intersection{ sphere { <0,0,0> 1 scale } object{box{<-3,.3,-.2><3,.8,.1>}} } #declare window2a = intersection{ cylinder { <0,0,0> <0,0,-1> 1 scale } object{box{<-3,.3,-.55><3,.8,-.3>}} } #declare window3 = intersection{ sphere { <0,0,0> 1 scale } object{box{<-3,.3,.3><3,.8,.5>}} } #declare window3r = intersection{ sphere { <0,0,0> 1 scale } object{box{<3,.3,.3><0,.8,.5>}rotate -y*10} } #declare window3l = intersection{ sphere { <0,0,0> 1 scale } object{box{<0,.3,.3><-3,.8,.5>}rotate y*10} } #declare heli=union{ object {helisum} object {window1 inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } object {window1r inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } object {window1l inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } object {window2 inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } object {window2a inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } object {window3 inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } object {window3r inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } object {window3l inverse texture{pigment {Gray40} finish {diffuse 0.4 reflection 0.2}} } }