2025-02-13 00:09:11 +11:00
|
|
|
/*
|
|
|
|
* H E X A W O O D
|
|
|
|
*/
|
|
|
|
// =======================================================
|
|
|
|
|
2025-02-15 05:47:29 +11:00
|
|
|
#declare Hc_ep = 0.42; // epaisseur chassis
|
|
|
|
#declare Hc_rad = 0.70; // rayon du chassis
|
|
|
|
#declare Hc_elo = 1.85; // elongation sur x
|
|
|
|
|
2025-02-13 00:09:11 +11:00
|
|
|
// -------------------------------------------------------
|
|
|
|
|
|
|
|
#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)
|
2025-02-15 05:47:29 +11:00
|
|
|
#local E = Hc_rad * 0.85;
|
|
|
|
#local Tx = Hc_elo * E * sin(radians(foo));
|
|
|
|
#local Tz = E * cos(radians(foo));
|
2025-02-13 00:09:11 +11:00
|
|
|
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
|
2025-02-15 05:47:29 +11:00
|
|
|
translate <Tx, Hc_ep - 0.22, Tz>
|
2025-02-13 00:09:11 +11:00
|
|
|
}
|
|
|
|
#end // end for
|
|
|
|
}
|
|
|
|
#end
|
|
|
|
|
|
|
|
|
|
|
|
#macro HW_Chassis ()
|
|
|
|
difference {
|
2025-02-15 05:47:29 +11:00
|
|
|
#local El = Hc_elo;
|
2025-02-13 00:09:11 +11:00
|
|
|
merge {
|
2025-02-15 05:47:29 +11:00
|
|
|
torus { Hc_rad, 0.20 translate y*0.20 }
|
|
|
|
cylinder { 0, y*0.40, Hc_rad }
|
2025-02-13 00:09:11 +11:00
|
|
|
scale <El, 0.5, 1>
|
|
|
|
}
|
2025-02-15 05:47:29 +11:00
|
|
|
|
|
|
|
/* trou pour mettre une lampe */
|
2025-02-13 00:09:11 +11:00
|
|
|
cylinder { -1*y, 0.12*y, 0.08 }
|
|
|
|
|
2025-02-15 05:47:29 +11:00
|
|
|
torus { Hc_rad*0.30, 0.18 scale <1, 1.45, 1>
|
|
|
|
translate y*0.39 }
|
|
|
|
|
2025-02-13 00:09:11 +11:00
|
|
|
#for (foo, 0, 360, 60)
|
2025-02-15 05:47:29 +11:00
|
|
|
#local E = Hc_rad * 0.85;
|
2025-02-13 00:09:11 +11:00
|
|
|
#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)
|
2025-02-15 05:47:29 +11:00
|
|
|
#local E = Hc_rad * 1.14;
|
2025-02-13 00:09:11 +11:00
|
|
|
#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
|
2025-02-15 05:47:29 +11:00
|
|
|
texture { T_Wood17 scale 0.82 }
|
|
|
|
|
2025-02-13 00:09:11 +11:00
|
|
|
}
|
|
|
|
#end
|
|
|
|
|
|
|
|
#macro HW_une_patte ()
|
|
|
|
merge {
|
2025-02-15 05:47:29 +11:00
|
|
|
sphere { 0, 0.02 scale <1, 0.24, 1> translate 0.30*y }
|
2025-02-13 00:09:11 +11:00
|
|
|
cylinder { 0, 0.30*y, 0.02 }
|
2025-02-15 05:47:29 +11:00
|
|
|
sphere { 0, 0.07 scale <1, 0.29, 1> }
|
2025-02-13 00:09:11 +11:00
|
|
|
}
|
|
|
|
#if ( rand(Rng1) < 0.3 )
|
|
|
|
texture { Tinny_Brass }
|
|
|
|
#else
|
|
|
|
texture { New_Penny }
|
|
|
|
#end // if
|
|
|
|
#end // macro
|
|
|
|
|
|
|
|
#declare HW_les_pattes = object
|
|
|
|
{
|
|
|
|
union {
|
2025-02-15 05:47:29 +11:00
|
|
|
#local E = Hc_rad * 1.14;
|
|
|
|
#local El = Hc_elo;
|
2025-02-13 00:09:11 +11:00
|
|
|
#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 }
|
2025-02-15 05:47:29 +11:00
|
|
|
#if (mod(clock, 10) < 6)
|
|
|
|
light_source { 0.20*y rgb <0, 0.20, 0.95> }
|
|
|
|
#end
|
2025-02-13 00:09:11 +11:00
|
|
|
object { HW_Cones () translate y*0.15 }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// =======================================================
|