// Triangle de Penrose

#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"
#include "metals.inc"
//#include "stones.inc"
//#include "woods.inc"                                                
#include "glass.inc"

// ***************************
// Installation de la caméra *
// ***************************
// On installe la caméra et on définit son orientation.
// L'axe des x est vers la droite, l'axe des y vers le haut, l'axe des z vers le fond.

#declare cc=130;  // = clock pour une animation où clock varie de 1 à 400

camera {orthographic
    location <2, 6, -8>               // oeil droit avec les trois lignes non commentées
    look_at  <0, 0, 0>
    rotate -y*3                        // ajoute 3 degré pour l'oeil gauche en mettant cette ligne en commentaire
  }

// On définit le fond (par défaut noir)

background { color Black}  

#declare Couleur_1=Yellow;
#declare TextureCube=Silver_Metal;
#declare Cote = 1;
#declare Delta = 1.5;
#declare N = 5;



// ********
// Objets *
// ********

union{

#declare Index = 0;
#while (Index <= N)
box {<0,0,0>,<1,1,1> texture{TextureCube}  pigment{color Couleur_1} translate <Delta*Index,0,0>}
#declare Index = Index + 1;
#end

#declare Index = 1;
#while (Index <= N)
box {<0,0,0>,<1,1,1> texture{TextureCube}  pigment{color Couleur_1} translate <0,0,Delta*Index>}
#declare Index = Index + 1;
#end

#declare Index = 1;
#while (Index <= N-2)
box {<0,0,0>,<1,1,1> texture{TextureCube}  pigment{color Couleur_1} translate <0,-Delta*Index,Delta*N>}
#declare Index = Index + 1;
#end

box {<0,0,0>,<1,1,0.53> texture{TextureCube}  pigment{color Couleur_1} translate <Delta*N,Delta,0>}
box {<0.47,0,0.47>,<1,1,1> texture{TextureCube}  pigment{color Couleur_1} translate <Delta*N,Delta,0>}

translate <-4,-1,-2>
rotate x*0.9
rotate y*31.5

#if (cc<70)
  rotate y*(15-cc/70*12)               // de 15° à 3°
#else
  #if (cc<130)
    rotate y*(3-(cc-70)/10)            // de 3° à -3°
  #else
    #if (cc<200)
      rotate y*(-3-(cc-130)/70*12)     // de -3° à -15°
    #else
      #if (cc<270)
        rotate y*(-15+(cc-200)/70*12)  // de -15° à -3°
      #else
        #if (cc<330)
          rotate y*(-3+(cc-270)/10)    // de -3° à 3°
        #else
          rotate y*(3+(cc-330)/70*12)   // de 3° à 15°
        #end
      #end
    #end
  #end
#end

}


// *********
// Lumière *
// *********

light_source { <0, 10, 0> color White shadowless}
light_source { <-10, 0, 0> color White shadowless}
light_source { <0, 0, -10> color White shadowless}
light_source { <-10, -10, -10> color White shadowless}
