diff --git a/Makefile b/Makefile index 8b11e42..36b6449 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ DIMS = -W1600 -H1200 -# POVOPT = +q9 +a0.02 -d + POVOPT = +q9 +A Declare=NbFrames=450 -d POVDEP = contexte.inc hexacone.inc hexabenz.inc \ globals.inc hexawood.inc datas/hf.png \ dynamic.inc trident.inc groundbase.inc \ - gadgets.inc + gadgets.inc xperiment.inc # ! Define a default value for the POV clock # ! You can overide with this command line : diff --git a/carto.pov b/carto.pov index 834ebbb..42ede80 100644 --- a/carto.pov +++ b/carto.pov @@ -17,6 +17,17 @@ #include "dynamic.inc" +// XXX +#include "xperiment.inc" +// XXX + +object { Les_Arches rotate y*59 translate <-32, 0, 20> } + +object { Les_Arches rotate y*159 translate <-34, 0, -26> } + +object { Les_Cahutes () translate <32, 0, -9> } +object { Les_Cahutes () rotate y*7 translate <37, 0, -22> } + // --------------------------------------------------------- // dessiner une grille @@ -31,7 +42,7 @@ object { Repere scale 10 translate y*7 } object { Le_Decor } camera { - location <45, 159+(42*NormClock), 18-(42*NormClock)> + location <45, 179+(42*NormClock), 18-(21*NormClock)> look_at <0, 1.18, 0.17 + (2.9*NormClock)> angle 50 } diff --git a/essai.pov b/essai.pov index 3fa8552..937d42b 100644 --- a/essai.pov +++ b/essai.pov @@ -6,7 +6,6 @@ #version 3.7; #include "globals.inc" - #debug "\n GLOBALS INCLUDED\n" #include "contexte.inc" @@ -16,18 +15,70 @@ #include "hexawood.inc" #include "trident.inc" +// XXX +#include "xperiment.inc" +// XXX +// ======================================================= +/* nouveau du 20 octobre 2025 + * Un semblant de wagonnet qui va tourner sur le + * rail circulaire + */ + +#macro Wagonnet_0 (Longueur) +object { + /* le corps */ + merge { + #local L2 = Longueur / 2; + #local R = 0.50; + cylinder { , <-L2, 0, 0>, R } + sphere { <0, 0, 0>, R + scale <3, 1, 1> + translate x*L2 + } + + /* le kiosque (est-ce un sous-marin ?) */ + sphere { <-L2, 0, 0>, R } + merge { + cylinder { <0, 0, 0>, <0, L2, 0>, R/4 } + sphere { <0, 0, 0>, R/4 + scale <1, 0.4, 1> translate y*L2 + } + scale <2, 1, 1> translate x*L2*0.70 + } + #local R = rand(Rng1); + #if (R < 0.333) + texture { WIP_color } + #elseif (R < 0.666) + texture { GoldDark } + #else + texture { Flashy scale 17 } + #end + } +} +#end // macro + +#declare Un_Wagonnet = object +{ +#local R = 2; + +object { Wagonnet_0 (3) + rotate y*clock + } + +} + // ======================================================= /* nouveau du 7 octobre 2025 */ #macro Une_Boule () sphere { - 0, 0.18 + 0, 0.1111 + (rand(Rng1) * 0.20) #local R = rand(Rng1); #if (R < 0.333) - pigment { color Red } + texture { C_Texture } #elseif (R < 0.666) - pigment { color Green } + texture { M_Texture } #else - pigment { color Blue } + texture { Y_Texture } #end } #end // macro @@ -39,132 +90,112 @@ sphere { { union { #for (A, 0, 24, 1) + #local CK = (NormClock*60.00) + (A*0.07); 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); + #local TX = 1.6 * sin(CK); + #local TY = 1.4 * cos(sin(CK)); + #local TZ = 2.0 * cos(1-CK); translate } + object { Repere scale 2 } #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 + * nouveau du 25 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 +#declare Obj_BasicTexture = 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 } +#local R = 0.333; +merge { + cylinder { 0, y, R } + sphere { 0, R scale <1, 0.20, 1> translate y } + } +} + +#declare BasicTextures = object +{ +#local TR = 2.20; +union { + object { Obj_BasicTexture texture { R_Texture } + translate } + object { Obj_BasicTexture texture { G_Texture } + translate <0, 0, 0> } + object { Obj_BasicTexture texture { B_Texture } + translate <0, 0, TR> } + + object { Obj_BasicTexture texture { Y_Texture } + translate < TR, 0, TR> } + object { Obj_BasicTexture texture { M_Texture } + translate <-TR, 0, TR> } + object { Obj_BasicTexture texture { C_Texture } + translate <-TR, 0, -TR> } } -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 { +// #debug " Les gyros !!!\n" union { #for (I, 0, 359, 30) - #declare E = 11; + #declare E = 12; #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 " !!! ACTION !!!\n" + +// ------------------------------------------------------ ## + +#declare Selector = mod(int(clock/60)+19, 8); #debug concat("Selector = ", str(Selector, 6, 0), "\n") #switch (Selector) #case (0) - object { Tridents scale 1.12 rotate -y*(clock*0.666) } + object { OpenBox translate y*2.1 } #break #case (1) - object { Les_Cahutes scale 0.50 } - #break + object { Les_Arches rotate -y*(clock*0.666) } +#break #case (2) object { HexaWood rotate -y*(clock*0.38) translate y } #break #case (3) - object { Chose rotate x*5 rotate y*clock } + object { Chose () translate y*0.34 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 } + object { Les_Boules translate y*0.8 } #break -#end // switch selector + #case (6) + object { Un_Wagonnet translate y } + #break + #case (7) + #local Pos = <0, 0, 0>; + object { BasicTextures rotate -y*clock translate Pos } + #break + +#end // switch selector plane { y, 0 - texture { T_Planete_B scale 0.666 } + texture { Ground_Texture } } -object { Repere translate y*1.0 } +// object { Repere translate y*1.0 } // ======================================================= @@ -182,6 +213,6 @@ camera { orthographic #end location - look_at <0, 1.4, 0> - angle 12 - 3*Cos_01(NormClock) + look_at <0, 1.6, 0> + angle 17 - 3*Cos_01(NormClock) } diff --git a/xperiment.inc b/xperiment.inc new file mode 100644 index 0000000..5a2817b --- /dev/null +++ b/xperiment.inc @@ -0,0 +1,141 @@ +/* + * 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 } } + } +// 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 } + } +} + + +// ==============================================================