//Definition of several types of bogie //One POV unit = 1m. //<0,0,0> in all #declared objects (where possible) is the logical center of that object *at rail level*. Rotations should work OK in the Y dimension only; no guarantees about other rotations. /* Incidental data which might be useful: VR C class locos have bogies similar in appearance to N-class as per below (Gunzel notes 28/11/02) CP vans fitted with Bradford Kendall Model BK2504 BT359 bogies with SKF roller bearings (NR 8/02 p258) Commonwealth bogies are used under interstate passenger cars, eg Aurora, Ghan, Ind-Pac, Overland, some S/Z cars (Conversation at Waverley Model Show 9/6/02) S cars initially used fabricated Argentine bogies with Timken roller bearings; replaced in mid-1980s with Commonwealth style cast steel bogies from scrapped Harris M cars, all 1937 S cars re-equipped 1986-89 Tait car bogies are also used under Y class locos (at least 1st 25) and similar ones under DERMs. Visually similar type under SAR Centennial cars (NR 7/02 p201) */ #ifndef (BogieIncluded) #declare BogieIncluded=1; #include "metals.inc" #declare axle=union { //Wheel diam is 1m #declare wheel=union //<0,0,0> is inner edge of rail (ie just outside flange) at rail level { cylinder {<0,.5,0>,<0,.5,.02>,.52} //Flange difference //Tyre { cylinder { <0,.5,0>,<0,.5,-.1>,.5 texture {T_Chrome_2A} } //cylinder {<0,.5,0>,<0,.5,-.1001>,.45} torus {.2,.1 rotate x*90 translate <0,.5,-.1>} torus {.35,.1 rotate x*90 translate <0,.5,-.1>} difference //Yes, subtracting a difference - this is a box in cross-section { cylinder {<0,.5,.05>,<0,.5,-.1>,.35} cylinder {<0,.5,.05>,<0,.5,-.1>,.2} } } } object {wheel rotate 180*y translate z*gauge/2} object {wheel translate -z*gauge/2} union //Axle, tapered somewhat { cone {<0,.5,-.6>,.1,<0,.5,-.25>,.07} cylinder {<0,.5,-.3>,<0,.5,+.3>,.07} cone {<0,.5,+.6>,.1,<0,.5,+.25>,.07} scale <1,1,gauge/1.2> } pigment {color rgb 0.1} } #declare BrakeCylinder=union { cylinder {<.15,.95,.3>,<.55,.95,.3>,.15} cone {<.151,.95,.3>,.12 <0,.95,.3>,.05} cylinder {<.001,.95,.3>,<-.05,.95,.3>,.02 pigment {color rgb 1}} cylinder {<.6,.95,.3>,<-.5,.95,.3>,.01 texture {T_Chrome_2A}} pigment {color rgb .5} } #declare Bogie_BClass=union //The Bradford-Kendall cast steel bogie, as used universally on B-class fleet from mid-1960s (ML2 Story) { object {axle translate <-2,0,0>} object {axle} object {axle translate <+2,0,0>} #declare BClass_Frame=union { #declare BClass_Axlebox=difference { union { cylinder {<0,.5,0>,<0,.5,-.2>,.15} sphere {<0,.5,-.2>,.125} } cylinder {<0,.5,0>,<0,.5,-.4>,.01} pigment {color rgb 1} } object {BClass_Axlebox translate -2*x} object {BClass_Axlebox} object {BClass_Axlebox translate +2*x} object {BrakeCylinder rotate 180*y translate -2*x} object {BrakeCylinder translate z*-.6 translate 2*x} } object {BClass_Frame rotate 180*y translate z*gauge/2} object {BClass_Frame translate -z*gauge/2} } #declare Bogie_NClass=union { object {axle translate <-2,0,0>} object {axle} object {axle translate <+2,0,0>} #declare NClass_Frame=union { #declare NClass_Axlebox=difference { union { cylinder {<0,.5,0>,<0,.5,-.2>,.15} sphere {<0,.5,-.2>,.125} } cylinder {<0,.5,0>,<0,.5,-.4>,.01} pigment {color rgb 1} } object {NClass_Axlebox translate -2*x} object {NClass_Axlebox} object {NClass_Axlebox translate +2*x} object {BrakeCylinder rotate 180*y translate -2*x} object {BrakeCylinder translate z*-.6} object {BrakeCylinder translate z*-.6 translate 2*x} } object {NClass_Frame rotate 180*y translate z*gauge/2} object {NClass_Frame translate -z*gauge/2} } #declare Bogie_XCS_I=union //This bogie is called 'XCS Type I' on the /Steam Era Models/ brochure. { object {axle translate <-1,0,0>} object {axle translate <+1,0,0>} #declare frame=union //Outside frame - <0,0,0> is *rail position* - the object is at slightly -z. <0,0,0> on the frame should match <0,0,0> on the wheels on the same side. { //Axle-boxes #declare axlebox=difference { union { cylinder {<0,.5,0>,<0,.5,-.2>,.1} sphere {<0,.5,-.2>,.1} } cylinder {<0,.5,0>,<0,.5,-.4>,.01} pigment {rgb 1} } object {axlebox translate -1*x} object {axlebox translate +1*x} //Top bar intersection { box {<-1.2,.6,-.2>,<1.2,.7,-.3>} plane {y,0 rotate 45*z translate <-1.3,0.5,-0.3>} plane {y,0 rotate -45*z translate <1.3,0.5,-0.3>} box {<-.8,.59,-.19>,<.8,.65,-.31> inverse} } //Outside bars - one on each wheel intersection { union { box {<-1.2,.6,-.2>,<-1.1,.4,-.3>} box {<+1.2,.6,-.2>,<+1.1,.4,-.3>} } plane {-x,0 rotate degrees(atan2(.05,.2))*z translate <-1.2,.6,-.2>} plane {+x,0 rotate degrees(atan2(.05,.2))*-z translate <+1.2,.6,-.2>} plane {-z,0 rotate degrees(atan2(.05,.2))*-x translate <-1.2,.6,-.3>} } //Inner bars - one on each wheel box {<+.9,.6,-.2>,<+.8,.5,-.3>} box {<+.9,.5,-.2>,<+.85,.4,-.25>} box {<-.9,.6,-.2>,<-.8,.5,-.3>} box {<-.9,.5,-.2>,<-.85,.4,-.25>} //Diagonal bars #declare diagbar=box {<-.05,-.05,-.05>,<.34*1.414,.05,.05> rotate -45*z translate <-.8,.5707,-.25> //.5707 = .5+û2/20 } object {diagbar} object {diagbar rotate 180*y translate -.5*z} //Bottom bar box {<-.5,.19,-.2>,<.5,.29,-.3>} //Middle bars box {<-.2,.65,-.2>,<-.25,.29,-.3>} box {<+.2,.65,-.2>,<+.25,.29,-.3>} #declare spring=union { //Need 5 rings, totalling .2 in height //Major rad .1 //Minor rad .04 #declare i=0; #while (i<5) torus {.05,.02 translate <0,.04*i+.29,-.25>} #declare i=i+1; #end } object {spring translate -.1*x} object {spring translate +.1*x} } object {frame rotate 180*y translate z*gauge/2} object {frame translate -z*gauge/2} //Central bar - joins frame halves difference { union { box {<-.2,.45,-gauge/2-.35>,<.2,.6,gauge/2+.35>} cylinder {<0,.45,0>,<0,.6,0>,.35} } cylinder {<0,.44,0>,<0,.61,0>,.1} } pigment {rgb .25} } #end