HexaCone/hexabenz.inc
2025-01-06 16:05:57 +01:00

100 lines
1.8 KiB
PHP

/*
* H E X A C O N E
*/
// =======================================================
#declare Benz_Cone_Base = object
{
#local RA = 0.120;
#local RB = 0.001;
union {
cone { 0, RA, y, RB }
sphere { 0, RA*1.098 scale <1, 0.62, 3.2> translate -0.02*y }
}
}
#macro Benz_Cones () // = object
// {
union {
#for (foo, 0, 360, 60)
#local E = 0.40;
#local Tx = E * sin(radians(foo));
#local Ty = E * cos(radians(foo));
object { Benz_Cone_Base
#if ( rand(Rng1) < 0.5 )
texture { Soft_Silver scale 16.50 }
#else
texture { T_Brass_2C scale 13.50 }
#end
rotate -z*foo
translate <Tx, Ty, 0>
}
#end
}
// }
#end
// ------------------------------------------------------
#local RT = 0.24;
#local LT = 0.61;
#declare Benz_Tubules = object
{
union {
#local E = 0.17;
#local R = 0.010;
#for (foo, 0, 360, 20)
#local Tx = E * sin(radians(foo));
#local Ty = E * cos(radians(foo));
#local Dz = z * 1.09;
cylinder { -Dz, Dz, R translate <Tx, Ty, 0> }
sphere { -Dz, R translate <Tx, Ty, 0> }
sphere { Dz, R translate <Tx, Ty, 0> }
#end
}
#if ( rand(Rng1) < 0.333)
texture { Orange_Glass }
#else
texture { Yellow_Glass }
#end
}
#declare Benz_Fuseau = object
{
sphere { 0, RT*0.39 scale <1, 1, 9> }
texture { Gold_Nugget scale 0.56 }
}
#declare Benz_Cylindre = object
{
difference {
union {
cylinder { z*LT*1.6, -z*LT, RT }
sphere { z*LT*1.5, RT*0.72 translate y*RT*0.87}
}
cylinder { z*4, -z*4, RT*0.95 }
}
texture { Soft_Silver scale 6.0 }
}
#declare Benz_Tube = object
{
union {
object { Benz_Tubules }
object { Benz_Fuseau }
object { Benz_Cylindre }
}
}
// ------------------------------------------------------
#declare HexaBenz = object
{
union {
#local Rk = rand(Rng1) * 666.666;
object { Benz_Cones () rotate z*NormClock*Rk}
object { Benz_Tube }
}
}