Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Includes */
- #include "colors.inc"
- #include "textures.inc"
- #include "shapes.inc"
- #include "math.inc"
- /* Déclarations */
- #declare ORIGINE = <0,0,0>; // Coordonnées de l'origine
- #declare CAMERA = <-120,20,0>; // Position de la caméra
- #declare RotationNext = 30; // Limite de rotation avant le prochain domino
- #declare RotationEnd = 70; // Limite de rotation avant de toucher le sol
- /* Rotations des dominos */ // à remplacer par une macro
- #declare Rotation1 = 0; // d'init de 1 à i (i= nombre de domino
- #declare Rotation2 = 0;
- #declare Rotation3 = 0;
- #declare Rotation4 = 0;
- /* Objets */
- /* Objets de base */
- #declare BaseDomino = object { // Forme du domino
- Round_Box(<0,0,0>,<1,0.5,2>, 0.125, 0)
- scale 5
- rotate<-90,0,0>
- translate<0,0,0>
- }
- #declare Table = object {
- box { ORIGINE <100,10,100> texture { Chrome_Metal } }
- }
- /* Objets complexes */
- #declare Domino = union { // Assemblage du domino standard final
- object { BaseDomino }
- texture { pigment { Brown } finish { phong 0.5 ambient 0.3 specular 0.5} }
- }
- /* Animation 1/2*/
- /* #if (Rotation =< RotationNext)
- */
- /* Lecture des données précédentes */
- // #if (frame_number > 1)
- // #fopen F "animation.dat" read
- // #read (F, Rotation1, Rotation2, Rotation3, Rotation4)
- // #fclose F
- // #end
- /* Description de la scène*/
- /* Dominos */
- // object { Domino rotate <Rotation1,0,0>}
- // object { Domino rotate <Rotation2,0,0> translate <0,0,7>}
- // object { Domino rotate <Rotation3,0,0> translate <0,0,14>}
- // object { Domino rotate <Rotation4,0,0> translate <0,0,21>}
- // object { Domino rotate <45,0,0> translate <0,0,28>}
- // object { Domino rotate <45,0,0> translate <0,0,35> }
- object { Table translate <-50,-10,-50> }
- /* Sources de lumières */
- light_source { // Lumière ambiante sur la caméra
- CAMERA
- 1
- }
- light_source { // Lumière en hauteur
- <2,50,2>
- 2
- }
- /* Caméra */
- camera { // Caméra principale
- location CAMERA
- look_at ORIGINE
- }
- /* Animation 1/2*/
- // --------------------------------
- #declare NbDominoTombe = ceil((frame_number*10)/RotationEnd)-1; // Initialisation du compteur de dominos tombés
- #declare TotalDomino = 0; // et de celui des dominos totaux
- /* Boucle de description de la scène */
- #declare I = 0;
- #while (I < NbDominoTombe) //
- #declare I = I + 1;
- #declare CurrentTranslate = TotalDomino*7;
- object { Domino rotate <RotationEnd,0,0> translate <0,0,CurrentTranslate>}
- #declare TotalDomino = TotalDomino + 1;
- #end
- #declare CurrentRotation = mod(frame_number*10, RotationEnd);
- #if (CurrentRotation = 0) // Si frame_number = 7, on prévient CurrentRotation de revenir à 0
- #declare CurrentRotation = RotationEnd;
- #end
- #while (CurrentRotation > 0)
- #declare CurrentTranslate = TotalDomino*7;
- object { Domino rotate < CurrentRotation,0,0> translate <0,0,CurrentTranslate> }
- #declare TotalDomino = TotalDomino + 1;
- #declare CurrentRotation = CurrentRotation - RotationNext;
- #end
- #declare J = 0;
- #while (J < 6) // Placement des dominos à l'avance (ici 6 dominos)
- #declare J = J + 1;
- #declare CurrentTranslate = TotalDomino*7;
- object { Domino rotate <0,0,0> translate <0,0,CurrentTranslate>}
- #declare TotalDomino = TotalDomino+1;
- #end
- // ------------------------------------
- /* Ecriture des données actuelles */
- // #fopen F "animation.dat" write
- // #write (F, Rotation1)
- // #write (F, ",")
- // #write (F, Rotation2)
- // #write (F, ",")
- // #write (F, Rotation3)
- // #write (F, ",")
- // #write (F, Rotation4)
- // #fclose F
- /* Axes de construction */
- cylinder { ORIGINE, <0,100,0>, 1 texture { pigment { Red } } } // Axe Y
- cylinder { ORIGINE, <100,0,0>, 1 texture { pigment { Green } } } // Axe X
- cylinder { ORIGINE, <0,0,100>, 1 texture { pigment { Blue } } } // Axe Z
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement