/*
 *		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 <Tx, Hc_ep - 0.22, Tz>
		}
	#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 <El, 0.5, 1>
		}

	/* 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 <Tx, 0.20, Tz> }
	#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 <Tx, 0, Tz> }
	#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 <Tx, 0, Tz> }
	#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 }
	}
}

// =======================================================