/* * H E X A W O O D */ // ======================================================= #declare Hc_ep = 0.42; // epaisseur chassis #declare Hc_rad = 0.70; // rayon du chassis #declare Hc_elo = 1.85; // elongation sur x // ------------------------------------------------------- #macro HW_Un_Cone () merge { #local RA = R_basecone * 0.92; cone { 0, RA, y*0.91, 0.000001 } sphere { 0, RA } #undef RA } #end #macro HW_Cones () union { #for (foo, 0, 360, 60) #local E = Hc_rad * 0.85; #local Tx = Hc_elo * E * sin(radians(foo)); #local Tz = E * cos(radians(foo)); object { HW_Un_Cone () #if ( rand(Rng1) < 0.5 ) texture { T_Wood32 rotate 37 scale 1.30 } // texture { WIP_color } #else texture { T_Wood23 rotate x*87 scale 1.23 } // texture { T_WIP_alert } #end // rotate -z*foo translate } #end // end for } #end #macro HW_Chassis () difference { #local El = Hc_elo; merge { torus { Hc_rad, 0.20 translate y*0.20 } cylinder { 0, y*0.40, Hc_rad } scale } /* trou pour mettre une lampe */ cylinder { -1*y, 0.12*y, 0.08 } torus { Hc_rad*0.30, 0.18 scale <1, 1.45, 1> translate y*0.39 } #for (foo, 0, 360, 60) #local E = Hc_rad * 0.85; #local Tx = El * E * sin(radians(foo)); #local Tz = E * cos(radians(foo)); sphere { 0, 0.17 translate } #end #for (foo, 0, 360, 60) #local E = Hc_rad * 1.14; #local Tx = El * E * sin(radians(foo+30)); #local Tz = E * cos(radians(foo+30)); cylinder { -y, y, 0.05 translate } #end translate y*0.10 texture { T_Wood17 scale 0.82 } } #end #macro HW_une_patte () merge { sphere { 0, 0.02 scale <1, 0.24, 1> translate 0.30*y } cylinder { 0, 0.30*y, 0.02 } sphere { 0, 0.07 scale <1, 0.29, 1> } } #if ( rand(Rng1) < 0.3 ) texture { Tinny_Brass } #else texture { New_Penny } #end // if #end // macro #declare HW_les_pattes = object { union { #local E = Hc_rad * 1.14; #local El = Hc_elo; #for (foo, 0, 360, 60) #local Tx = El * E * sin(radians(foo+30)); #local Tz = E * cos(radians(foo+30)); object { HW_une_patte () translate } #end } } #declare HexaWood = object { union { object { HW_Chassis () } object { HW_les_pattes } #if (mod(clock, 10) < 6) light_source { 0.20*y rgb <0, 0.20, 0.95> } #end object { HW_Cones () translate y*0.15 } } } // =======================================================