//include file for a Boeing B317 seaplane //freeware for non-commercial use. Contact //author for any commercial use //by Kurt Bangert http://www.travelnotes.de #declare rottex= texture{ pigment{ radial frequency 3 color_map { [0.0 color rgbt <1,1,1,0.8>] [0.35 color rgbt <1,1,1,0.8>] [0.45 color rgbt <.7,.7,.7,.7>] [0.55 color rgbt <.7,.7,.7,.7>] [0.65 color rgbt <1,1,1,0.8>] [1.0 color rgbt <1,1,1,0.8>] }}finish {ambient 0.4 diffuse 0.6 }} #declare Pt=texture {pigment {Gray70} finish {F_MetalA} } #declare Pb=texture {pigment {Blue} } #declare Pg50=texture {pigment {Gray50} finish {F_MetalA}} #declare Pg40=texture {pigment {Gray40} } #declare Pr=texture {pigment {Red} } #declare Pg=texture {pigment {Green} } #declare Py=texture {pigment {Yellow} } #declare pane=texture{pigment{color rgbt<.4,.4,.4,.4>} finish {ambient 0.3 diffuse 0.1 reflection 0.6}} #declare max_broad=1.55/2 #declare l_nose=3.5 #declare h_upper_front=0.75 #declare end_wing=3.65 #declare tot_length=6 #declare singlewindow= object{ box{<-10,0,0><10,.14,.1>} pigment{Clear}} #declare doublewindow= object{ union{ box{<-10,0,0><10,.14,.1>} box{<-10,0,.14><10,.14,.24>} } pigment{Clear}} #declare triplewindow= object{ union{ box{<-10,0,0><10,.15,.1>} //middle window is hole for left door box{<-10,0,.13><10,.4,.29>} box{<-10,0,.32><10,.15,.42>} } pigment{Clear}} #declare leftdoor=object{ difference{ box{<-max_broad,0,.13><-max_broad+.001,.4,.29> texture {Pg50}} box{<-10,0,.16><10,.15,.26> pigment {Clear}}}} //********FRONT #declare upper_front=union{ difference { sphere { <0,0,0> 1 scale } box {<-15,-15,-25> <15,0,25>pigment {Clear} } box {<-15,-15,-25> <15,15,0>pigment {Clear} }} difference { sphere { <0,0,0> 1 scale texture {Pg50} } box {<-15,-15,-25> <15,0,25>pigment {Clear} } box {<-15,-15,-25> <15,15,0>pigment {Clear} } box {<-15,-15, 25> <15,15,l_nose-.2>pigment {Clear} }} } #declare h_cabc=.65; #declare upper_front_cabin1=object{ difference { cone { <0,0,-1> .5 <0,0,1.4> .3 open scale <1,4,1> } box {<-15,15,-25> <15,h_cabc,25>pigment {Clear} } box {<-15,-15,-25> <15,0,25>pigment {Clear} } //windows box {<-15,.4,1.4> <15,h_cabc,1.1>pigment {Clear} } box {<-15,.4,0.46> <15,h_cabc,.26>pigment {Clear} } box {<-15,.4,.20> <15,h_cabc,.0>pigment {Clear} } }} #declare window1 = intersection{ cone { <0,0,-1> .5 <0,0,1.4> .3 open scale <1,4,1>} box {<-15,.4,1.4> <15,h_cabc,1.1>pigment {Clear} } } #declare window1a = intersection{ cone { <0,0,1.4> .3 <0,0,3.8> .1 open scale <1,4,1>} box {<-15,0,0> <15,-h_cabc,-.3>rotate -x*40 translate <0,h_cabc,1.4>pigment {Clear} } } #declare window2= intersection{ cone { <0,0,-1> .5 <0,0,1.4> .3 open scale <1,4,1>} box {<-15,.4,0.46> <15,h_cabc,.26>pigment {Clear} } } #declare window3= intersection{ cone { <0,0,-1> .5 <0,0,1.4> .3 open scale <1,4,1>} box {<-15,.4,.20> <15,h_cabc,.0>pigment {Clear} } } #declare upper_front_cabin2=object{ object{difference { cone { <0,0,-.55> .47 <0,0,1.4> .3 open scale <1,4,1> } box {<-15,-15,-25> <15,h_cabc,25>pigment {Clear} } }} translate -y*h_cabc scale <1,.1,1> translate y*h_cabc } #declare upper_front_cabin3=object{ object{difference { object{sphere { <0,0,1.4> .3} hollow scale <1,4,1> } box {<-15,-15,-25> <15,h_cabc,25>pigment {Clear} } }} translate -y*h_cabc scale <1,.1,1> translate y*h_cabc } #declare upper_front_cabin4=object{ union{ // instruments object{cone{<0,0,0>.02<0,.3,0>.01} rotate x*40 translate <0,h_cabc,1.3> texture {Pg50}} object{sphere{<0,.1,0>.03} scale z*3 translate <0,h_cabc,.9> texture {Pg50}} object{cylinder{<0,0,0><0,.1,0>.02} translate <0,h_cabc,.9> texture {Pg50}} //side object{box {<0,0,0> < .04,-h_cabc,-.04>} rotate -x*40 translate <-.3,h_cabc,1.4> } object{box {<0,0,0> <-.04,-h_cabc,-.04>} rotate -x*40 translate < .3,h_cabc,1.4> } //front object{box {<0,0,0> <-.04,-h_cabc,-.04>} rotate -x*40 translate <.3*.5,h_cabc,1.4+.3*.866025> } object{box {<0,0,0> < .04,-h_cabc,-.04>} rotate -x*40 translate <-.3*.5,h_cabc,1.4+.3*.866025> } //front window object{box {<-.2999*.5,0,-.01> < .2999*.5,-h_cabc,-.03>} rotate -x*40 translate <0,h_cabc,1.4+.3*.866025-.02> texture {pane}} }} //inner #declare pu1 = <.3*.5,h_cabc,1.4+.3*.866025> #declare po1 = <-.04,-h_cabc,-.04+h_cabc*tan(radians(40))> #declare po1= po1+ <.3*.5,h_cabc,1.4+.3*.866025> //outer #declare pu2= <.3,h_cabc,1.4> #declare po2= <-.04,-h_cabc,-.04+h_cabc*tan(radians(40))> #declare po2= po2+ < .3,h_cabc,1.4> #declare window6= object{ polygon {4,pu1,po1,po2,pu2 texture {pane} }} #declare window7= object{window6 scale -x} //center parts #declare lower_front=object{ difference { union{ cylinder { <0,-1.7,0><0,0,0> 1 scale } box {<-max_broad,-1.7,0> <0,0,-end_wing> } box { <0,0,-end_wing> } } object{difference{torus { 7.8,1.2 } box{<-11,-11,-11><11,11,0>}} pigment {Gray70} rotate z*90 scale x*2 rotate y*0 translate <-1.6,5.4,-.2>} object{difference{torus { 7.8,1.2 } box{<-11,-11,-11><11,11,0>}} pigment {Gray70} rotate z*90 scale x*2 rotate y*0 translate < 1.6,5.4,-.2>} object{cylinder { <0,-2.4,3><0,-2.4,-(end_wing+.1)> 1.2 scale x*2 translate <-1.5,0,0> } pigment {Gray70}} object{cylinder { <0,-2.4,3><0,-2.4,-(end_wing+.1)> 1.2 scale x*2 translate <1.5,0,0> } pigment {Gray70}} object{doublewindow translate <0,-.7,1.1>} object{doublewindow translate <0,-.7,-.16>} object{singlewindow translate <0,-.4,.4>} object{triplewindow translate <0,-.7,-1.2>} object{doublewindow translate <0,-.7,-2.4>} object{doublewindow translate <0,-.6,-3.5>} }} #declare window4=difference{ union{ difference{ cylinder { <0,-1.,0><0,0,0> 1 scale texture {pane} } box {<-5,-5,10> <5,0,1.45> pigment{Clear} } } box {<-max_broad+.0001,-1.1,0> <-max_broad+.001,0,-end_wing> texture {pane} } box { texture {pane} } } } #declare cyl=difference{ object{cylinder { <0,-1.7,0><0,0,0> 1} scale } object{box{<0,-5,-10><15,5,10> }pigment{Clear}}} #declare paa=union{ object{cyl pigment{ image_map { gif "flag.gif" map_type 0 once interpolate 2 filter 16,1 filter 17,.7 }rotate y*90 scale <.3,1.1,1.7> translate <0,-1.05,3.1> } } object{ box {< max_broad+.001,-1.,5> pigment{image_map { gif "paas.gif" map_type 0 once interpolate 2 filter 15,1 } scale <3,4.6,5.5> rotate y*270 translate <1,-4.55,-3.2> }} } object{ box {<-max_broad-.001,-1.,5> <-max_broad-.0015,0,-end_wing> pigment{image_map { gif "paas.gif" map_type 0 once interpolate 2 filter 15,1 } scale <3,4.6,5.5> rotate y*90 translate <1.5,-4.55,-.4> }} } } //end union //**********MIDDLE #declare upper_middle1=object{ cylinder{ <0,0,0><0,0,-2> 1} scale } #declare upper_middle2=union{ object{cylinder{ <0,0,-2><0,0,-end_wing> 1} scale } object{sphere{<0,0,0> 1} scale translate -z*2 } } //rear cylinder of middle part #declare lower_middle=object{ difference { object{cylinder{<0,-1.7,0> <0,0,0> max_broad } scale z*2 translate -z*end_wing } object{doublewindow translate <0,-.6,-end_wing-.6>} object{doublewindow translate <0,-.7,-2.4>} object{doublewindow translate <0,-.6,-3.5>} object{cylinder { <0,-2.4,1><0,-2.4,-10> 1.2 scale x*2 translate <-1.5,0,0> } pigment {Gray70}} object{cylinder { <0,-2.4,1><0,-2.4,-10> 1.2 scale x*2 translate <1.5,0,0> } pigment {Gray70}} }} //*****************TAIL #declare cl=4; #declare clfrac=2; #declare tl=6; #declare upper_rear1=object{ difference { sphere { <0,0,0> 1 scale } box {<-15,-15,35> <15,15,0> pigment {Clear} } box {<-15,-15,-25> <15,0,25>pigment {Clear} } }translate z*(-end_wing)} #declare upper_rear2=object{ difference { object{cone { <0,0,0> 1.068 <0,0,-tl> .5} scale } box {<-15,-15,-25> <15,0,25> pigment {Clear} } box {<-15,-15,25> <15,-15,0> pigment {Clear} } box {<-15,-15,25> <15, 15,-1.4> pigment {Clear} } }translate z*(-end_wing)} #declare h_lower_front=2; #declare lower_rear0=object{ difference { cylinder { <0,-.55,0> <0,0,0> 1 scale } box {<-15,-15,35> <15,15,0> pigment {Clear} } box {<-15, 15,-25> <15,0,25> pigment {Clear} } }translate z*(-end_wing)} #declare lower_rear1=difference{ object{lower_rear0 } object{doublewindow translate <0,-.5,-end_wing-1.5>}} #declare window5= object{lower_rear0 scale x*.999 texture {pane}} #declare lower_rear3=object{ difference{ object{cone { <0,0,-tl-end_wing> .5 <0,-.843245/.75,-end_wing> 1} scale } }} #declare lower_rear5=object{ difference { sphere { <0,0,0> 1 scale } box {<-15,-15,35> <15,15,0> pigment {Clear} } box {<-15, 15,-25> <15,0,25>pigment {Clear} } }translate <0,-.55,-end_wing>} #declare lower_rear7=object{ difference{ union{ object{sphere { <0,0,0> 1 scale translate <0.,-.7,-end_wing> }} object{sphere { <0,0,0> 1 scale translate <0.,-.65,-end_wing> }} object{sphere { <0,0,0> 1 scale translate <0.,-.6,-end_wing> }}} }} #declare xtri1=(((1.068-0.5)/tl)*(tl-1.4)+.5)*max_broad; #declare xtri2=(((1.0-0.5)/tl)*(tl-1.4)+.5)*max_broad; #declare tri1=object{ triangle{ < .5*max_broad,0,-end_wing-tl> } } #declare tri2=object{ triangle{ < -.5*max_broad,0,-end_wing-tl> <-xtri1,0,-end_wing-1.4> <-max_broad,-.843245,-end_wing>} } #declare tail1=object{ union{ object{sphere {<0,0,0> .5} scale translate z*(-tl-end_wing) } object{upper_rear1} object{upper_rear2} object{tri1} object{tri2} object{lower_rear5} object{lower_rear7} difference{ object{lower_rear1} object{cylinder { <0,-2.4,15><0,-2.4,-15> 1.2 scale x*2 translate <-1.5,0,0> } pigment {Gray70}} object{cylinder { <0,-2.4,15><0,-2.4,-15> 1.2 scale x*2 translate <1.5,0,0> } pigment {Gray70}} } difference{ object{lower_rear3} object{cylinder { <0,-2.4,15><0,-2.4,-15> 1.2 scale x*2 translate <-1.5,0,0> } pigment {Gray70}} object{cylinder { <0,-2.4,15><0,-2.4,-15> 1.2 scale x*2 translate <1.5,0,0> } pigment {Gray70}} } }} #declare tail=difference{ object{tail1} object{doublewindow translate <0,-.4,-end_wing-2.5>} object{doublewindow translate <0,-.5,-end_wing-1.5>} object{doublewindow translate <0,-.6,-end_wing-.6>} object{doublewindow translate <0,-.6,-3.5>} } //************ENGINE #declare engine_rear=difference{ object{sphere{<0,0,0> .36 } scale z*4 } object{box{<-3,-3,10><3,3,.72>} pigment {Clear}} } #declare engine_middle=union{ object{cylinder{<0,0,0> <0,0,.72> .36*.866025*1.05} } object{cone{<0,0,.72> .36*.866025 <0,0,1> .2} texture {Pb}} } #declare engine_front= object{difference{ object{sphere{<0,0,0> .311769 } scale z*2 } object{box{<-3,-3,10><3,3,.4>} pigment {Clear}} object{box{<-3,-3,-10><3,3,0>} pigment {Clear}} } translate z*.82 } #declare engine_ring= object{torus{.24756-.04,.04} rotate x*90 translate z*(1.22-.04) } #declare engine_shaft= object{union{ object{cylinder{<0,0,0><0,0,1.35> .04} } object{cylinder{<0,0,0><0,0,1.22> .1} } object{cylinder{<0,0,1.28><0,0,1.32> .05} } object{sphere{<0,0,0> .04 scale z*1.5 translate z* 1.35} } }} #declare engine_exhaust= union{ #declare i=0 #while (i<10) #declare win=i*36 object{difference{ object{sphere{<0,0,0> .311769 } scale z*2 texture {Pg50}} object{box{<-3,-3,10><3,3,0>} pigment {Clear}} object{box{<-3,-3,-10><3,3,-.15>} pigment {Clear}} object{box{<-1,-3,-10><-.1,3,2>} pigment {Clear}} object{box{<1,-3,-10><.1,3,2>} pigment {Clear}} } translate y*.311769 rotate -x*20 translate <0,-.311769,.82> rotate z*win } #declare i=i+1; #end } #declare prop_element= union{ object{difference{ object{sphere{<0,0,0> .1} scale <1.5,15,0.4> texture{Pt}} object{box{<-10,-10,-10><0,10,10>} pigment {Clear} } }} object{difference{ object{sphere{<0,0,0> .1} scale <3,15,0.4> texture{Pt}} object{box{<10,-10,-10><0,10,10>} pigment {Clear} } }}} #declare engine=union{ object {engine_rear} object {engine_middle} object {engine_front} object {engine_exhaust} object {engine_ring} object {engine_shaft} //propeller is moving in these two lines //object{cylinder{<0,0,0>,<0,0.01,0>, .55 //texture {rottex}} rotate x*90 translate <0,0,1.3> } //propeller stands still in these three lines object {prop_element rotate y*20 scale .25 translate <0,.3,1.30>} object {prop_element rotate y*20 scale .25 translate <0,.3,1.30> rotate z*120} object {prop_element rotate y*20 scale .25 translate <0,.3,1.30> rotate z*240} object{cylinder{<0,-.25,1.05><0,.25,1.15> .03 pigment {Gray70}}} object{cylinder{<0,-.25,1.05><0,.25,1.15> .03 rotate z*120 pigment {Gray70}}} object{cylinder{<0,-.25,1.05><0,.25,1.15> .03 rotate z*240 pigment {Gray70}}} } //*************WING #declare lfrontwing= difference{ union{ object{cone{<0,0,0> .625 <8.7,0,0> 0.2667} scale <1,.5,1>} object{sphere{<0,0,0> .2667} scale <1.5,.5,1> translate <8.7,0,0>} } object {box{<0,-1,0><10,1,-10>}}} #declare lbackwing= difference{ union{ object{cone{<0,0,0> .625 <8.7,0,0> 0.2667} scale <1,.5,3>} object{sphere{<0,0,0> .2667 }scale <1,.5,3> translate <8.7,0,0>} } object {box{<0,-1,10><10,1,0>}}} #declare lwing=object{ union{ object{lfrontwing rotate y*8 translate z*1.5} object{lbackwing translate z*.4} polygon {4, <0,.5*.625 ,.4> <8.7,.5*.26667 ,.4> <8.7,.5*.26667 ,.41> <0,.5*.625 ,1.5>} polygon {4, <0,-.5*.625 ,.4> <9,-.5*.26667 ,.4> <9,-.5*.26667 ,.41> <0,-.5*.625 ,1.5>} object{sphere{<0,0,0> .2667 scale <1.5,.45,1.7>} translate <8.7,0,.08> } object{engine rotate z*36 translate <1.8,0,1.5>} object{engine translate <3.6,0,1.15>} } rotate z*4 translate <0,h_upper_front-.3,-2.1> } #declare rwing=object{lwing scale -x} #declare starta=-end_wing-4 #declare ha=0.45 //basic element for rudder #declare bx1=union{ object{difference{ object {sphere{<0,0,0> 1} scale <0.1,1,.85> } object {box{<-10,-15,-10><10,0,10>} pigment {Clear}} } } object{difference{ object {sphere{<0,0,0> 1} scale <0.1,.7,.85> } object {box{<-10,15,-10><10,0,10>} pigment {Clear}} }} } #declare bx= union{ object{bx1 scale 1.0001 pigment{image_map { gif "n16.gif" map_type 0 once interpolate 2 filter 255,1 }rotate y*90 scale <.3,.6,.6> translate <0,.1,.55>}}//end object difference{ object{bx1 } //vert object{box{<-.5,-.5,-.11><.5,.8,-.08>} pigment{Clear} } //upper object{box{<-.5,.8,-.08><.5,.82,.11>} pigment{Clear} } object{box{<-.5,.82,.11><.5,1,.15>} pigment{Clear} } //lower object{box{<2,-.5,-.08><-2,-.53,.11>} pigment{Clear} } object{box{<2,-.5,.11><-2,-1,.15>} pigment{Clear} } }} //************AILERON //left rudder, mirrored for right rudder #declare la=union{ object{triangle{<0,ha,starta><2.5,ha,starta-.9><0,ha,starta-.9>} texture{Pt}} object{triangle{<0,ha-.1,starta><2.5,ha-.1,starta-.9><0,ha-.1,starta-.9>} texture{Pt}} object{cylinder{<0,ha-.05,starta><2.5,ha-.05,starta-.9>.05} texture{Pt}} box{<0,ha,starta-.9> <2.5,ha-.1,starta-.9-.5> texture{Pt}} box{<.3,ha,starta-.9-.52> <2.5,ha-.1,starta-.9-1> texture{Pt}} difference{ object{sphere{<0,0,0>1} scale<.25,.05,.6> translate <2.5,ha,starta-.9-.5> } object{box{<-5,-5,-5> <0,5,5> }translate <2.5,ha,starta-.9-.5> pigment{Clear}} } difference{ object{cylinder{<.3,ha,0> <.3,ha-.1,0> 2.2} scale z*.1 translate z*(starta-.9-1) texture{Pt}} box{<.3,5,0> <-5,-5,-20> pigment{Clear}}} object{bx translate <2.5,ha,starta-1.3>} } #declare sqr2=0.707106 declare am=union{ object{cylinder{<0,ha,starta><0,ha+1.3,starta-1.3>.05} texture{Pt}} object{triangle{<-.05,ha,starta><-.05,ha+1.3,starta-1.3><-.05,ha,starta-1.3>} texture{Pt}} object{triangle{<.05,ha,starta><.05,ha+1.3,starta-1.3><.05,ha,starta-1.3>} texture{Pt}} object{torus{.4,.05} rotate z*90 translate <0,ha+1.3-.4*sqr2,starta-1.3-.4*sqr2> } object{difference{ union{ object{cylinder{<-.05,0,0><.05,0,0> (1.7-.4*sqr2)} texture{Pt}} object{torus{(1.7-.4*sqr2),.05} rotate z*90 } } object{box{<-5,-5,-10><5,-.5,10>} pigment{Clear}} }scale <1,1,0.5> translate < 0,ha,starta-1.3-.4*sqr2> } } #declare ail=union{ object{la} object{am} object{la scale -x*1} } //*********STABILIZER #declare stab1= union{ object{cone{<0,0,0> 1.4 <2.5,0,0> .75} scale <1,.15,1> rotate -x*6 translate <0,-.97,-1.3> } object{sphere{<0,0,0> .75} scale <.2,.2,1.> rotate -x*6 translate <2.5,-.97,-1.3> texture {Pg50}} } //**********PLANE #declare planesum= union{ object{upper_front } object{upper_front_cabin1 } object{upper_front_cabin2 } object{upper_front_cabin3 } object{upper_front_cabin4 } object {window1 inverse texture{pane} scale x*1.00 } object {window1a inverse texture{pane} scale x*1.00 } object {window2 inverse texture{pane} scale x*1.00 } object {window3 inverse texture{pane} scale x*1.00 } object {window4 } object {window5 } object {window6 } object {window7 } object{lower_front} object {leftdoor translate <-.01,-.7,-1.2>} object{paa} object{upper_middle1} object{upper_middle2} object{lower_middle} object{tail } object{ail} object{lwing } object{rwing } object{stab1} object{stab1 scale -x} }//end union #declare seaplane=union{ object {planesum texture {Pt}normal {bumps 0.03 scale <.05,.05,0.2>}} }