208 lines
4.4 KiB
POVRay
208 lines
4.4 KiB
POVRay
/*
|
|
* 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"
|
|
|
|
// XXX
|
|
#include "xperiment.inc"
|
|
// XXX
|
|
// =======================================================
|
|
/* nouveau du 20 octobre 2025
|
|
* Un semblant de wagonnet qui va tourner sur le
|
|
* rail circulaire
|
|
*/
|
|
|
|
|
|
#declare Un_Wagonnet = object
|
|
{
|
|
#local R = 3.2;
|
|
|
|
object { Wagonnet_0 (R)
|
|
rotate y*clock*2
|
|
}
|
|
|
|
}
|
|
|
|
// =======================================================
|
|
/* nouveau du 7 octobre 2025 */
|
|
#macro Une_Boule ()
|
|
sphere {
|
|
0, 0.15 + (rand(Rng1) * 0.07)
|
|
#local R = rand(Rng1);
|
|
#if (R < 0.333) texture { C_Texture }
|
|
#elseif (R < 0.666) texture { M_Texture }
|
|
#else texture { Y_Texture }
|
|
#end
|
|
finish { specular 0.6 }
|
|
}
|
|
#end // macro
|
|
|
|
/* TODO
|
|
* trouver une meilleure méthode de placement
|
|
*/
|
|
#declare Les_Boules = object
|
|
{
|
|
union {
|
|
#for (A, 0, 32, 1)
|
|
#local CK = (NormClock*55.00) + (A*0.08);
|
|
object { Une_Boule ()
|
|
#local TX = 1.6 * sin(CK);
|
|
#local TY = 1.4 * cos(sin(CK));
|
|
#local TZ = 2.0 * cos(1-CK);
|
|
translate <TX, TY, TZ>
|
|
}
|
|
object { Repere scale 2 }
|
|
#end // for
|
|
}
|
|
}
|
|
|
|
// =======================================================
|
|
/*
|
|
* nouveau du 25 octobre 2025
|
|
*/
|
|
#declare Obj_BasicTexture = object
|
|
{
|
|
#local R = 0.369;
|
|
#local H = 1.2;
|
|
merge {
|
|
cylinder { 0, y*H, R }
|
|
sphere { 0, R scale <1, 0.50, 1> translate y*H }
|
|
box { <-0.19, 0, -0.17>, <R+0.4, H*0.39, R+0.6> }
|
|
}
|
|
}
|
|
|
|
#declare BasicTextures = object
|
|
{
|
|
#local TR = 2.20;
|
|
union {
|
|
object { Obj_BasicTexture texture { R_Texture }
|
|
translate <TR*1.4, 0, 0> }
|
|
object { Obj_BasicTexture texture { G_Texture }
|
|
translate <0, 0, -1> }
|
|
object { Obj_BasicTexture texture { B_Texture }
|
|
translate <0, 0, TR/2> }
|
|
|
|
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> }
|
|
object { Repere scale 1.5 translate y*2.5 }
|
|
}
|
|
}
|
|
// =======================================================
|
|
|
|
#declare Des_Choses = object
|
|
{
|
|
union {
|
|
object { Chose () translate -<-1.7, 0, 0.8> }
|
|
object { Chose () translate -< 1.5, 0, 1.2> rotate -y*clock }
|
|
object { Chose () translate -< 1.1, 0, -1.2> rotate y*clock }
|
|
}
|
|
}
|
|
// =======================================================
|
|
|
|
#declare Gyros = object
|
|
{
|
|
// #debug " Les gyros !!!\n"
|
|
union {
|
|
#for (I, 0, 359, 30)
|
|
#declare E = 12;
|
|
#declare Dx = E * sin(radians(I));
|
|
#declare Dz = E * cos(radians(I));
|
|
object { GyroPhare () translate <Dx, 0, Dz> }
|
|
#end
|
|
}
|
|
}
|
|
|
|
object { Gyros }
|
|
|
|
// ------------------------------------------------------ ##
|
|
|
|
#debug " !!! ACTION !!!\n"
|
|
|
|
// ------------------------------------------------------ ##
|
|
|
|
#declare Selector = mod(int(clock/60)+19, 8);
|
|
#debug concat("Selector = ", str(Selector, 6, 0), "\n")
|
|
|
|
#declare AngleCam = 17 - 3*Cos_01(NormClock);
|
|
|
|
#switch (Selector)
|
|
#case (0)
|
|
union {
|
|
object { OpenBox(1, 0.03) }
|
|
object { OpenBox(0.55, 0.03)
|
|
translate <0.4*rand(Rnd2), NormClock*0.74,cos(NormClock)> }
|
|
translate y*2.1
|
|
}
|
|
#break
|
|
#case (1)
|
|
object { Les_Arches (1.57) rotate -y*(clock*0.666) }
|
|
#declare AngleCam = 22;
|
|
#break
|
|
#case (2)
|
|
object { HexaPole translate y }
|
|
#break
|
|
#case (3)
|
|
object { Des_Choses }
|
|
#break
|
|
#case (4)
|
|
object { HexaCone () scale 2 translate 2.7*y rotate -y*clock }
|
|
#break
|
|
#case (5)
|
|
object { Les_Boules translate y*0.8 }
|
|
#break
|
|
#case (6)
|
|
object { Un_Wagonnet translate < 1, 1, 0> }
|
|
object { Un_Wagonnet translate y+NormClock }
|
|
object { Un_Wagonnet translate <-1, 1, 0> }
|
|
#break
|
|
#case (7)
|
|
#local Pos = <0, 0, 0>;
|
|
object { BasicTextures rotate -y*clock translate Pos }
|
|
#break
|
|
|
|
#end // switch selector
|
|
|
|
|
|
plane {
|
|
y, 0
|
|
texture { Ground_Texture }
|
|
}
|
|
|
|
// 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 <CamX, CamY, CamZ>
|
|
look_at <0, 1.6, 0>
|
|
angle AngleCam
|
|
}
|