/* * H E X A C O N E - A R C H I T E C T U R E * nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024 * * file created on Sat Jan 31 07:07:28 AM UTC 2026 */ // =========================================================== #declare SzC = 0.3; #macro Base_Col_A () merge { box { <-SzC, 0, -SzC>, } #local B = SzC * 0.7; box { <-B, 0, -B>, } #local R = rand(Rng1); #if (R < 0.33) texture { T_Stone25 } #else texture { T_Stone26 } #end } #end // ----------------------------------------------------------- #macro Haut_Col_A () difference { #local S = SzC * 0.87; box { <-S, 0, -S>, } #local E = SzC + 1; #local R = S * 0.42; cylinder { <-E, 0, S>, , R } cylinder { <-E, 0, -S>, , R } #local R = rand(Rng1); #if (R < 0.33) texture { T_Stone27 } #else texture { T_Stone28 } #end } #end // ----------------------------------------------------------- #macro Fut_Col_A (H) object { cylinder { 0, H*y, 0.15 } #local R = rand(Rng1); #if (R < 0.43) texture { T_Stone29 } #else texture { T_Stone34 scale 3 } #end } #end // ----------------------------------------------------------- #macro Colonne_A (H) union { object { Haut_Col_A () translate y*H } object { Fut_Col_A (H) } object { Base_Col_A () } } #end // =========================================================== // bon, on a un pilier/colonne donc de quoi poser // dessus un linteau pour avoir un genre de portique // pour remplacer les arches de l'approche. #macro Linteau_A (Lg, Epp) merge { #local L = Lg + 0.42; #local K = 0.28; box { <-L, 0, -K>, } cylinder { <0, Epp, -K*0.9>, <0, Epp, K*0.9>, K } #local R = rand(Rng1); #if (R < 0.63) texture { T_Grnt6 scale 4 } #else texture { T_Stone34 scale 3 } #end } #end // macro // ----------------------------------------------------------- #macro Linteau_B (Lg, Epp) merge { #local L = Lg + 0.20; #local K = 0.36; box { <-L, 0, -K>, } cylinder { <0, Epp, -K*0.9>, <0, Epp, K*0.9>, K } texture { T_WIP_rasta } } #end // macro // =========================================================== #macro Portique_A () union { #local Larg = 2.8; #local Haut = 3.4; object { Colonne_A (Haut) translate -x*Larg } object { Colonne_A (Haut) translate x*Larg } #local R = rand(Rng1); #if (R < 0.80) object { Linteau_A (Larg,0.26) translate y*(Haut+0.20) } #else object { Linteau_B (Larg,0.28) translate y*(Haut+0.20) } #end } #end // macro // ===========================================================