/* * H E X A C O N E - X P E R I M E N T * * A cosy place for experimental things (2025/10/27) * */ // ======================================================= /* * nouveau du 25 octobre 2025 */ #macro Une_Arche (Val) object { #debug concat(" Arche, val = ", str(Val, 6, 4), "\n") merge { #local Ha = 2; // mettre une base de la colonne cylinder { <-1, 0, 0>, <-1, 0.20, 0> Val*1.29 } cylinder { < 1, 0, 0>, < 1, 0.20, 0> Val*1.27 } cylinder { <-1, 0, 0>, <-1, Ha, 0>, Val } cylinder { < 1, 0, 0>, < 1, Ha, 0>, Val } #if (rand(Rng1) < 0.50) torus { 0.008, Val*1.08 translate <-1, Ha, 0> } torus { 0.008, Val*1.08 translate < 1, Ha, 0> } #else cylinder { y*(Ha-0.07), y*(Ha+0.01), Val*1.12 translate -x } cylinder { y*(Ha-0.08), y*(Ha+0.01), Val*1.13 translate x } #end intersection { torus { 1, Val } box { <-20, -5, 0>, <20, 5, -20> } rotate <90, 0, 0> translate Ha*y } #local R = rand(Rng1); #if (R < 0.25) texture { T_Stone40 scale 5+rand(Rng1) } #elseif (R < 0.50) texture { T_Stone44 scale 4+rand(Rng1) } #elseif (R < 0.75) texture { T_Stone32 scale 5+rand(Rng1) } #else texture { T_Stone36 scale 6+rand(Rng1) } #end } } #end #declare Les_Arches = object { union { #local E = 1.333 + (rand(Rng1) * 0.50); object { Une_Arche (0.20) } object { Une_Arche (0.16) translate -z*E } object { Une_Arche (0.16) translate z*E } object { Une_Arche (0.12) translate -z*E*2 } object { Une_Arche (0.12) translate z*E*2 } object { Une_Arche (0.08) translate -z*E*3 } object { Une_Arche (0.08) translate z*E*3 } } } // ============================================================== /* * new Mon Oct 27 04:54:41 PM UTC 2025 */ #macro Un_Pylone (Type, Hauteur) #debug " Un pylone ?\n" #end // macro // ============================================================== /* * nouveau du 12 octobre 2025 */ #macro Cahute_0 () difference { #local KX = 0.60; #local KH = 1.80 + rand(Rng1) ; #debug concat(" Cahute_0, KH = ", str(KH, 6, 4), "\n") #local KZ = KX + (0.24*rand(Rng1)); box { <-KX, 0, -KZ>, } #local Mult = 0.97; #local KX = KX * Mult; #local KH = KH * Mult; #local KZ = KZ * Mult; box { <-KX, 0, -KZ>, } cylinder { <-10, KH*0.70, 0>, <10, KH*0.72, 0>, KX * 0.666 } #local R = rand(Rng1); // #debug concat("Random = ", str(R, 6, 4), "\n") #if ( R < 0.13 ) texture { T_Planete_A } #elseif ( R < 0.56 ) texture { T_Beton_1 } #else texture { T_Beton_2 } #end // if rotate y * (277 * rand(Rng1)) } #end // macro /* le support des cahutes XXX */ #macro Les_Cahutes () union { #local K = 2.75; union { object { Cahute_0 () translate -x * K } object { Cahute_0 () translate x * K } object { Cahute_0 () translate -z * K } object { Cahute_0 () translate z * K } translate y } #local K2 = K + 1.35; box { <-K2, 0, -K2>, pigment { Gray30 } } } scale 0.5 // rotate -y * (clock*0.33) #end // ======================================================= /* * new: 28 octobre 2025 */ #declare Ground_Texture = texture { pigment { rgb <0.51, 0.58, 0.23> } normal { dents 0.28 scale 1.5} finish { ambient 0 specular 0.5 metallic roughness 0.18 reflection { 0.5 metallic } } } // ==============================================================