/* * H E X A C O N E - E S S A I * nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024 */ #version 3.7; #include "globals.inc" #debug "\n GLOBALS INCLUDED\n" #include "contexte.inc" #include "gadgets.inc" #include "hexacone.inc" #include "hexabenz.inc" #include "hexawood.inc" #include "trident.inc" // ======================================================= /* nouveau du 7 octobre 2025 */ #macro Une_Boule () sphere { 0, 0.18 #local R = rand(Rng1); #if (R < 0.333) pigment { color Red } #elseif (R < 0.666) pigment { color Green } #else pigment { color Blue } #end } #end // macro /* TODO * trouver une meilleure méthode de placement */ #declare Les_Boules = object { union { #for (A, 0, 24, 1) object { Une_Boule () #local TX = 2.6 * (A/10) * (0.5 - NormClock); #local TY = 2 * abs(sin(clock*0.07*A)); #local TZ = 3.0 * cos(NormClock*0.08*A); translate } #end // for } finish { ambient 0 phong 1 } //translate <-0.5, -0.5, -0.5> // recalage de l'objet fini scale 1.3333333 } // ======================================================= /* * nouveau du 12 octobre 2025 */ #macro Cahute_0 () #debug "Enter macro Cahute_0\n" difference { #local KX = 0.70; #local KH = 1.60 + rand(Rng1) + rand(Rng1); #local KZ = KX + (0.24*rand(Rng1)); box { <-KX, 0, -KZ>, } #local KX = KX * 0.99; #local KH = KH * 0.99; #local KZ = KZ * 0.99; box { <-KX, 0, -KZ>, } cylinder { <-10, KH/2, 0>, <10, KH/2, 0>, KX * 0.741 } #local R = rand(Rng1); #debug concat("Random = ", str(R, 6, 4), "\n") #if ( R < 0.33 ) texture { Flashy scale <17, 23, 5> } #elseif ( R < 0.66 ) texture { T_Beton_1 } #else texture { T_Beton_2 } #end // if rotate y * (77 * rand(Rng1)) } #end // macro #declare Les_Cahutes = object { union { #local K = 2.70; object { Cahute_0 () translate -x * K } object { Cahute_0 () translate x * K } object { Cahute_0 () translate -z * K } object { Cahute_0 () translate z * K } } rotate y * (clock*3.33) } // ======================================================= #debug "ACTION !!!\n" // ------------------------------------------------------ ## #declare Tridents = object { #local RX = -11 + (80*sin(NormClock*9.81) + 3*sin(NormClock*23)); #local RZ = 96 - (54*Cos_010(NormClock)); union { object { Trident_A () rotate translate < -1.5, 1.0, 0> } object { Trident_A () rotate <0, clock, 0> translate < 1.5, 1.8, 0> } } } // ------------------------------------------------------ ## #declare Gyros = object { union { #for (I, 0, 359, 30) #declare E = 11; #declare Dx = E * sin(radians(I)); #declare Dz = E * cos(radians(I)); object { GyroPhare () translate } // #debug " Gyro !!!\n" #end } } // ------------------------------------------------------ ## object { Gyros } #declare Selector = mod(int(clock/30), 6); #debug concat("Selector = ", str(Selector, 6, 0), "\n") #switch (Selector) #case (0) object { Tridents scale 1.12 rotate -y*(clock*0.666) } #break #case (1) object { Les_Cahutes scale 0.50 } #break #case (2) object { HexaWood rotate -y*(clock*0.38) translate y } #break #case (3) object { Chose rotate x*5 rotate y*clock } #break #case (4) object { HexaBenz () scale 2 translate 2.7*y rotate -y*clock } #break #case (5) object { Les_Boules translate y } #break #end // switch selector plane { y, 0 texture { T_Planete_B scale 0.666 } } object { Repere translate y*1.0 } // ======================================================= #local CamX = -2.7 + (1.8*Cos_010(NormClock)); #local CamY = 0.41 + (1.2*exp(NormClock)); #local CamZ = -5.777 + (1.2*Cos_01(NormClock)); #local K = 8.6; #local CamX = CamX * K; #local CamY = CamY * K * 0.61; #local CamZ = CamZ * K; camera { #if (clock < 225) orthographic #end location look_at <0, 1.4, 0> angle 12 - 3*Cos_01(NormClock) }