/* * 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" #include "contexte.inc" #include "elements.inc" #include "hexabenz.inc" // ======================================================= #macro GyroPhare_mat () cylinder { 0, y*H_gyro, R_gyro #if (rand(Rng1) < 0.5) texture { T_Stone25 scale 1+rand(Rng1) } #else texture { T_Stone6 } #end } #end // macro #macro GyroPhare_lampe () union { difference { cylinder { 0, y*0.20, R_gyro } cylinder { y*0.01, y*0.19, R_gyro*0.97 } #local WB = 0.015; box { <-1, 0.03, -WB>, <1, 0.18, WB> } box { <-WB, 0.03, -1>, } #undef WB pigment { color White } rotate y*(0.5-rand(Rng1))*clock } light_source { y*0.10 rgb <0.8, 0.9, 0.999999999> } } #end // macro #macro GyroPhare () union { object { GyroPhare_mat () } object { GyroPhare_lampe () // rotate y*rand(Rng1)*clock translate y*(H_gyro+0.02) } } #end // macro // ======================================================= #macro Bubble () sphere { 0, 0.06 #if ( rand(Rng1) < 0.333 ) texture { Ruby_Glass } #elseif ( rand(Rng1) < 0.666 ) texture { Orange_Glass } #else texture { Gold_Nugget } #end } #end #macro Un_Machin () union { #for (Y, 1, 8, 1) object { Bubble() translate y*Y*0.1 } #end } #end #declare Les_Machins = object { union { #local Rk = 4.95; #for (foo, 0, 360, 15) #local Xpos = Rk * sin(radians(foo)); #local Zpos = Rk * cos(radians(foo)); #if ( rand(Rng1) < 0.40 ) object { GyroPhare () translate } #else object { Un_Machin () translate } #end #end #undef Rk } } object { Les_Machins translate y*0.01} object { Le_Sol } // object { Repere } // ======================================================= // light_source { <-8, 7, -9>, rgb <0.81, 0.65, NormClock> } // light_source { < 11, 7, 4>, rgb <1-NormClock, 0.28, 0.80> } #local CamX = -12.7 + (4.8*NormClock); #local CamY = 8.81 + (14*sqrt(NormClock)); camera { location look_at <0, 0, 0> angle 42 + 8*Cos_01(NormClock) }