/*
 */

#include  "gadgets.inc"

// 
object { Les_Bibelots rotate  y*clock translate UnderHoles[2] }
object { Les_Machins rotate -y*clock translate UnderHoles[3] }

/*
 *	un hexabenz sur une base exterieure
 */
#declare BiBenz = object
{
#local K = 1.39;
union	{
	object { HexaBenz () rotate y*90	translate <-K, 1.75, 0> }
	object { HexaBenz ()			translate < K, 1.71, 0> }
	}
}
object { BiBenz rotate -y*(clock*0.19) translate Pos_RedB_0 }

#declare BiCone = object
{
#local K = 1.27;
union	{
	object { HexaCone () rotate y*90	translate <-K, 1.7, 0> }
	object { HexaCone ()			translate < K, 1.9, 0> }
	}
}
object { BiCone rotate -y*(Cos_010(NormClock)*777) translate Pos_RedB_1 }

/*
 *	on fait passer un hexatruc dans le ciel
 */
#declare A = <-SzSol,   22,  -10>;
#declare B = < SzSol+4, 18,  -11>;
#declare P = Interpolate(A, B, NormClock);
object { HexaCone () rotate y*((12*NormClock)+80) translate P }


/*
 *	le vaisseau "trident" passe a travers les
 *	trous de l'underground
 */
#fopen Trid "WS/tridents.log" write
#for (Foo, 0, 5)
  #declare Dy = rand(Rng1)-3+(11*NormClock);
  #declare Tr = UnderHoles[Foo] + <0, Dy, 0>;
  #declare Ry = ((rand(Rng1)-NormClock)*77);
  #write (Trid, Foo, "  ", NormClock, "  ", Dy, "  ",
		Ry, "  ", Tr, "\n")
  object { Trident_A () rotate y*Ry translate Tr }
#end
#fclose Trid

/*
 *	echange hexacone et hexabenz
 */ 
#declare HC_A = <0.03,  2.18,  0.17>;
#declare HC_B = <3.00, 11.07, 11.09>;
#declare HC_P = Interpolate(HC_A, HC_B, Cos_01(NormClock));
#declare RX   = -9+(NormClock*11);
#declare RY   = 122 * (exp(NormClock) - 1.0);
object { HexaCone ()
		rotate <RX, RY, -4>
		translate HC_P
	}
#declare HB_A = <-5.00, 10.0,  6.33>;
#declare HB_B = < 0.03, 2.32, -0.37>;
#declare HB_P = Interpolate(HB_A, HB_B, Cos_01(NormClock));
#declare RY   = -75 * (exp(NormClock*1.8) - 1.0);
#declare RZ   = -7+(7*NormClock);
object { HexaBenz ()
		rotate <6, RY, RZ> translate HB_P }

/*
 *	passage d'un hexawood près de la base
 */
#declare A = <-25, 0.4, (SzSol/2)+4>;
#declare B = < 29, 0.5, (SzSol/2)+1>;
#declare P = Interpolate(A, B, NormClock);
#local   K = NormClock*36;
#local   R = 16.64 * cos(K);
#local   H =  0.52 * pow(sin(K), 3);
#declare P_hexawood = P + <0, 0.26+H, 0>;
object { HexaWood rotate z*R translate P_hexawood }

/*
 *	survol par un trident
 */
#declare A = < 2, 49, -20>;
#declare B = <-3, 47,  22>;
#declare P = Interpolate(A, B, NormClock);
object { Trident_A () rotate y*(clock*2.7)
		rotate z*80
		rotate <2, 94, 0>
		translate P }