Advertisement
Djiit

code #4

Jun 17th, 2011
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Includes */
  2. #include "colors.inc"
  3. #include "textures.inc"
  4. #include "shapes.inc"
  5. #include "math.inc"
  6.  
  7.  
  8. /* Déclarations */
  9. #declare ORIGINE = <0,0,0>; // Coordonnées de l'origine
  10. #declare CAMERA = <-120,20,0>; // Position de la caméra
  11.  
  12. #declare RotationNext = 30; // Limite de rotation avant le prochain domino
  13. #declare RotationEnd = 70; // Limite de rotation avant de toucher le sol
  14.  
  15.   /* Rotations des dominos */ // à remplacer par une macro
  16. #declare Rotation1 = 0;       // d'init de 1 à i (i= nombre de domino
  17. #declare Rotation2 = 0;
  18. #declare Rotation3 = 0;
  19. #declare Rotation4 = 0;
  20.  
  21.  
  22.  
  23. /* Objets */
  24.   /* Objets de base */
  25. #declare BaseDomino = object { // Forme du domino
  26.   Round_Box(<0,0,0>,<1,0.5,2>, 0.125, 0)
  27.   scale 5
  28.   rotate<-90,0,0>
  29.   translate<0,0,0>
  30. }
  31.  
  32. #declare Table = object {
  33.   box { ORIGINE <100,10,100> texture { Chrome_Metal } }
  34. }
  35.  
  36.   /* Objets complexes */
  37. #declare Domino = union { // Assemblage du domino standard final
  38.   object { BaseDomino }
  39.   texture { pigment { Brown } finish { phong 0.5 ambient 0.3 specular 0.5} }
  40. }
  41.  
  42.  
  43. /* Animation 1/2*/
  44. /* #if (Rotation =< RotationNext)
  45.  
  46. */
  47.  
  48.   /* Lecture des données précédentes */
  49. // #if (frame_number > 1)
  50. //   #fopen F "animation.dat" read
  51. //     #read (F, Rotation1, Rotation2, Rotation3, Rotation4)
  52. //   #fclose F
  53. // #end
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. /* Description de la scène*/
  63.   /* Dominos */
  64. // object { Domino rotate <Rotation1,0,0>}
  65. // object { Domino rotate <Rotation2,0,0> translate <0,0,7>}
  66. // object { Domino rotate <Rotation3,0,0> translate <0,0,14>}
  67. // object { Domino rotate <Rotation4,0,0> translate <0,0,21>}
  68. // object { Domino rotate <45,0,0> translate <0,0,28>}
  69. // object { Domino rotate <45,0,0> translate <0,0,35> }
  70.  
  71. object { Table translate <-50,-10,-50> }
  72.  
  73.   /* Sources de lumières */
  74. light_source { // Lumière ambiante sur la caméra
  75.   CAMERA
  76.   1
  77. }
  78.  
  79. light_source { // Lumière en hauteur
  80.   <2,50,2>
  81.   2
  82. }
  83.  
  84.   /* Caméra */
  85. camera { // Caméra principale
  86.   location CAMERA
  87.   look_at ORIGINE
  88. }
  89.  
  90. /* Animation 1/2*/
  91. // --------------------------------
  92. #declare NbDominoTombe = ceil((frame_number*10)/RotationEnd)-1; // Initialisation du compteur de dominos tombés
  93. #declare TotalDomino = 0;  // et de celui des dominos totaux
  94.  
  95.   /* Boucle de description de la scène */
  96. #declare I = 0;
  97. #while (I < NbDominoTombe) //
  98.   #declare I = I + 1;
  99.   #declare CurrentTranslate = TotalDomino*7;
  100.   object { Domino rotate <RotationEnd,0,0> translate <0,0,CurrentTranslate>}
  101.   #declare TotalDomino = TotalDomino + 1;
  102. #end
  103.  
  104. #declare CurrentRotation = mod(frame_number*10, RotationEnd);
  105. #if (CurrentRotation = 0) // Si frame_number = 7, on prévient CurrentRotation de revenir à 0
  106.   #declare CurrentRotation = RotationEnd;
  107. #end
  108. #while (CurrentRotation > 0)
  109.   #declare CurrentTranslate = TotalDomino*7;
  110.   object { Domino rotate < CurrentRotation,0,0> translate <0,0,CurrentTranslate> }
  111.   #declare TotalDomino = TotalDomino + 1;
  112.   #declare CurrentRotation = CurrentRotation - RotationNext;
  113. #end
  114.  
  115. #declare J = 0;
  116. #while (J < 6) // Placement des dominos à l'avance (ici 6 dominos)
  117.   #declare J = J + 1;
  118.   #declare CurrentTranslate = TotalDomino*7;
  119.   object { Domino rotate <0,0,0> translate <0,0,CurrentTranslate>}
  120.   #declare TotalDomino = TotalDomino+1;
  121. #end
  122. // ------------------------------------
  123.  
  124.   /* Ecriture des données actuelles */
  125. // #fopen F "animation.dat" write
  126. //   #write (F, Rotation1)
  127. //   #write (F, ",")
  128. //   #write (F, Rotation2)
  129. //   #write (F, ",")
  130. //   #write (F, Rotation3)
  131. //   #write (F, ",")
  132. //   #write (F, Rotation4)
  133. // #fclose F
  134.  
  135. /* Axes de construction */
  136. cylinder { ORIGINE, <0,100,0>, 1 texture { pigment { Red } } } // Axe Y
  137. cylinder { ORIGINE, <100,0,0>, 1 texture { pigment { Green } } } // Axe X
  138. cylinder { ORIGINE, <0,0,100>, 1 texture { pigment { Blue } } } // Axe Z
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement