home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #7 / amigamamagazinepolishissue1998.iso / varia / povray3 / povray3_060 / povscn / level3 / chess.pov next >
Text File  |  1997-12-12  |  11KB  |  508 lines

  1. /*
  2.  * chess.pov
  3.  *
  4.  * POV-Ray 3.0 scene description for chess board
  5.  *
  6.  * Copyright (c) 1991, 1996 Ville Saari
  7.  *
  8.  * Created: 01-Feb-91
  9.  * Updated: 01-Jul-96
  10.  *
  11.  * Author:
  12.  *
  13.  *   Ville Saari
  14.  *   Tallbergin puistotie 7 B 21
  15.  *   00200 Helsinki
  16.  *   FINLAND
  17.  *
  18.  *   EMail: vs@iki.fi
  19.  */
  20.  
  21. include "shapes.inc"
  22.  
  23. global_settings { assumed_gamma 1.8 }
  24. default { finish { ambient .3 diffuse .7 } }
  25. declare r=seed(54321)
  26.  
  27. camera { location <59, 20, -48> look_at <0, 0, 1> }
  28.  
  29. light_source { <800, 600, -200> rgb 1 }
  30.  
  31. declare Pawn = union
  32.    {
  33.    sphere { 7*y, 1.5 }
  34.    sphere { 0, 1 scale <1.2, .3, 1.2> translate 5.5*y }
  35.  
  36.    intersection
  37.       {
  38.       plane { y, 5.5 }
  39.       object { Hyperboloid_Y translate 5*y scale <.5, 1, .5> }
  40.       plane { -y, -2.5 }
  41.  
  42.       bounded_by { sphere { 3.75*y, 1.86 } }
  43.       }
  44.  
  45.    sphere { 0, 1 scale <2, .5, 2> translate 2.3*y }
  46.  
  47.    intersection
  48.       {
  49.       sphere { 0, 2.5 }
  50.       plane { -y, 0 }
  51.       }
  52.    }
  53.  
  54. declare Rook = union
  55.    {
  56.    difference
  57.       {
  58.       cylinder { 8*y, 10*y, 2 }
  59.       object { Cylinder_Y scale <1.2, 1, 1.2> }
  60.       box { <-.5, 9, -2.5>, <.5, 10.5, 2.5> }
  61.       box { <-2.5, 9, -.5>, <2.5, 10.5, .5> }
  62.  
  63.       bounded_by { sphere { 9*y, sqrt(5) } }
  64.       }
  65.  
  66.    intersection
  67.       {
  68.       plane { y, 8 }
  69.       object { Hyperboloid_Y scale <1, 1.5, 1> translate 5.401924*y }
  70.       plane { -y, -3 }
  71.  
  72.       bounded_by { sphere { 5.5*y, 3.14 } }
  73.       }
  74.  
  75.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  76.  
  77.    intersection
  78.       {
  79.       sphere { 0, 3 }
  80.       plane { -y, 0 }
  81.       }
  82.    }
  83.  
  84. declare Knight = union
  85.    {
  86.    intersection
  87.       {
  88.       object { Cylinder_Z scale 17.875 translate <-18.625, 7, 0> inverse }
  89.       object { Cylinder_Z scale 17.875 translate <18.625, 7, 0> inverse }
  90.       object { Cylinder_X scale 5.1 translate <0, 11.2, -5> inverse }
  91.  
  92.       union
  93.          {
  94.          plane { y, 0 rotate 30*x translate 9.15*y }
  95.          plane { z, 0 rotate -20*x translate 10*y }
  96.          }
  97.  
  98.       union
  99.          {
  100.          plane { -y, 0 rotate 30*x translate 7.15*y }
  101.          plane { y, 0 rotate 60*x translate 7.3*y }
  102.          }
  103.  
  104.       union
  105.          {
  106.          plane { y, 0 rotate -45*z }
  107.          plane { y, 0 rotate 45*z }
  108.          translate 9*y
  109.          }
  110.  
  111.       object { Cylinder_Y scale 2 }
  112.       sphere { 7*y, 4 }
  113.  
  114.       bounded_by { sphere { 7*y, 4 } }
  115.       }
  116.  
  117.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  118.  
  119.    intersection
  120.       {
  121.       sphere { 0, 3 }
  122.       plane { -y, 0 }
  123.       }
  124.    }
  125.  
  126. declare Bishop = union
  127.    {
  128.    sphere { 10.8*y, .4 }
  129.  
  130.    intersection
  131.       {
  132.       sphere { 0, 1 scale <1.4, 2.1, 1.4> translate 8.4*y }
  133.       plane { -y, -7 }
  134.       box { <-2, 0, -.25>, <2, 4, .25> rotate 30*x translate 8.5*y inverse }
  135.  
  136.       bounded_by { sphere { 0, 1 scale <1.4, 2.1, 1.4> translate 8.4*y } }
  137.       }
  138.  
  139.    sphere { 0, 1 scale <1.5, .4, 1.5> translate 7*y }
  140.  
  141.    intersection
  142.       {
  143.       plane { y, 7 }
  144.       object { Hyperboloid_Y scale <.6, 1.4, .6> translate 7*y }
  145.       plane { -y, -3 }
  146.  
  147.       bounded_by { sphere { 4.64*y, 2.48 } }
  148.       }
  149.  
  150.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  151.  
  152.    intersection
  153.       {
  154.       sphere { 0, 3 }
  155.       plane { -y, 0 }
  156.       }
  157.    }
  158.  
  159. declare QueenAndKing = union
  160.    {
  161.    sphere { 10.5*y, 1.5 }
  162.  
  163.    difference
  164.       {
  165.       cone { 11.5*y, 13/6, 8*y, 1 }
  166.  
  167.       sphere { <1.75, 12, 0>, .9 rotate  150*y }
  168.       sphere { <1.75, 12, 0>, .9 rotate  120*y }
  169.       sphere { <1.75, 12, 0>, .9 rotate   90*y }
  170.       sphere { <1.75, 12, 0>, .9 rotate   60*y }
  171.       sphere { <1.75, 12, 0>, .9 rotate   30*y }
  172.       sphere { <1.75, 12, 0>, .9 }
  173.       sphere { <1.75, 12, 0>, .9 rotate  -30*y }
  174.       sphere { <1.75, 12, 0>, .9 rotate  -60*y }
  175.       sphere { <1.75, 12, 0>, .9 rotate  -90*y }
  176.       sphere { <1.75, 12, 0>, .9 rotate -120*y }
  177.       sphere { <1.75, 12, 0>, .9 rotate -150*y }
  178.       sphere { <1.75, 12, 0>, .9 rotate -180*y }
  179.  
  180.       bounded_by { box { <-13/6, 8, -13/6>, <13/6, 11.5, 13/6> } }
  181.       }
  182.  
  183.    sphere { 0, 1 scale <1.8, .4, 1.8> translate 8*y }
  184.  
  185.    intersection
  186.       {
  187.       plane { y, 8 }
  188.       object { Hyperboloid_Y scale <.7, 1.6, .7> translate <0, 7, 0> }
  189.       plane { -y, -3 }
  190.  
  191.       bounded_by { sphere { 5.22*y, 2.93 } }
  192.       }
  193.  
  194.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  195.  
  196.    intersection
  197.       {
  198.       sphere { 0, 3 }
  199.       plane { -y, 0 }
  200.       }
  201.    }
  202.  
  203. declare Queen = union
  204.    {
  205.    sphere { 12.3*y, .4 }
  206.    object { QueenAndKing }
  207.    }
  208.  
  209. declare King = union
  210.    {
  211.    box { <-.25, 11.5, -.25>, <.25, 13.5, .25> }
  212.    box { <-.75, 12.5, -.25>, <.75, 13, .25> }
  213.    object { QueenAndKing }
  214.    }
  215.  
  216. declare WWood = texture
  217.    {
  218.    pigment
  219.       {
  220.       wood
  221.  
  222.       colour_map
  223.          {
  224.          [ .2 colour rgb <.7, .4, .1>   ]
  225.          [ .5 colour rgb <.95, .62, .3> ]
  226.          }
  227.  
  228.       turbulence .07
  229.       quick_colour rgb <.95, .62, 0>
  230.       rotate 90*x
  231.       scale .4
  232.       translate <200, 0, 100>
  233.       }
  234.  
  235.    finish { specular 1 roughness .01 }
  236.    }
  237.  
  238. declare BWood = texture
  239.    {
  240.    pigment
  241.       {
  242.       wood
  243.  
  244.       colour_map
  245.          {
  246.          [ .4 colour rgb <.45, .25, 0> ]
  247.          [ .7 colour rgb <.3, .16, 0>  ]
  248.          }
  249.  
  250.       turbulence .07
  251.       quick_colour rgb <.4, .2, 0>
  252.       rotate 90*x
  253.       scale .4
  254.       translate <100.0, 0, -200.0>
  255.       }
  256.  
  257.    finish { specular 1 roughness .01 }
  258.    }
  259.  
  260. declare FWood = texture
  261.    {
  262.    pigment
  263.       {
  264.       wood
  265.  
  266.       colour_map
  267.          {
  268.          [ .4 colour rgb <.55, .35, 0> ]
  269.          [ .7 colour rgb <.35, .2, 0>  ]
  270.          }
  271.  
  272.       quick_colour rgb <.45, .3, 0>
  273.  
  274.       turbulence .07
  275.       scale <.6 .6 6>
  276.       }
  277.  
  278.    finish { specular 1 roughness .02 }
  279.    }
  280.  
  281. declare WPawn   = object { Pawn   texture { WWood } }
  282. declare BPawn   = object { Pawn   texture { BWood } }
  283. declare WRook   = object { Rook   texture { WWood } }
  284. declare BRook   = object { Rook   texture { BWood } }
  285. declare WKnight = object { Knight texture { WWood } }
  286. declare BKnight = object { Knight texture { BWood } }
  287. declare WBishop = object { Bishop texture { WWood } }
  288. declare BBishop = object { Bishop texture { BWood } }
  289. declare WQueen  = object { Queen  texture { WWood } }
  290. declare BQueen  = object { Queen  texture { BWood } }
  291. declare WKing   = object { King   texture { WWood } }
  292. declare BKing   = object { King   texture { BWood } }
  293.  
  294. declare Frame_side = intersection
  295.    {
  296.    box { <-35, -3, -35>, <35, 0, -32> }
  297.    plane { -x+z, 0 }
  298.    plane { x+z, 0 }
  299.    }
  300.  
  301. // The frame of the chessboard
  302.  
  303. union
  304.    {
  305.    object { Frame_side }
  306.    object { Frame_side rotate 180*y }
  307.  
  308.    texture { FWood rotate -88*y translate <200, 40, -20> }
  309.    }
  310.  
  311. union
  312.    {
  313.    object { Frame_side rotate -90*y }
  314.    object { Frame_side rotate 90*y  }
  315.  
  316.    texture { FWood rotate 1.2*x translate <100, 30, 0> }
  317.    }
  318.  
  319. // The board
  320.  
  321. box
  322.    {
  323.    <-32, -3, -32>, <32, 0, 32>
  324.  
  325.    texture
  326.       {
  327.       tiles
  328.          {
  329.          texture
  330.             {
  331.             pigment
  332.                {
  333.                marble
  334.  
  335.                colour_map
  336.                   {
  337.                   [ .7 colour rgb 1  ]
  338.                   [ .9 colour rgb .8 ]
  339.                   [ 1  colour rgb .5 ]
  340.                   }
  341.  
  342.                quick_colour rgb .8
  343.                turbulence 1
  344.                scale .6
  345.                rotate -30*y
  346.                }
  347.  
  348.             finish { specular 1 roughness .02 reflection .25 }
  349.             }
  350.          tile2 texture
  351.             {
  352.             pigment
  353.                {
  354.                granite
  355.  
  356.                colour_map
  357.                   {
  358.                   [0 colour rgb 0  ]
  359.                   [1 colour rgb .5 ]
  360.                   }
  361.  
  362.                quick_colour rgb .3
  363.                scale .3
  364.                }
  365.  
  366.             finish { specular 1 roughness .02 reflection .25 }
  367.             }
  368.          }
  369.  
  370.       scale 8
  371.       }
  372.    }
  373.  
  374. // White pieces
  375.  
  376. union
  377.    {
  378.    object { WPawn rotate 360*rand(r)*y translate -28*x }
  379.    object { WPawn rotate 360*rand(r)*y translate -20*x }
  380.    object { WPawn rotate 360*rand(r)*y translate -12*x }
  381.    object { WPawn rotate 360*rand(r)*y translate  -4*x }
  382.    object { WPawn rotate 360*rand(r)*y translate   4*x }
  383.    object { WPawn rotate 360*rand(r)*y translate  12*x }
  384.    object { WPawn rotate 360*rand(r)*y translate  20*x }
  385.    object { WPawn rotate 360*rand(r)*y translate  28*x }
  386.  
  387.    translate -20*z
  388.    }
  389.  
  390. union
  391.    {
  392.    object { WRook   rotate 360*rand(r)*y translate -28*x }
  393.    object { WKnight                      translate -20*x }
  394.    object { WBishop rotate 360*rand(r)*y translate -12*x }
  395.    object { WQueen  rotate 360*rand(r)*y translate  -4*x }
  396.    object { WKing   rotate 360*rand(r)*y translate   4*x }
  397.    object { WBishop rotate 360*rand(r)*y translate  12*x }
  398.    object { WKnight                      translate  20*x }
  399.    object { WRook   rotate 360*rand(r)*y translate  28*x }
  400.  
  401.    translate -28*z
  402.    }
  403.  
  404. // Black pieces
  405.  
  406. union
  407.    {
  408.    object { BPawn rotate 360*rand(r)*y translate -28*x }
  409.    object { BPawn rotate 360*rand(r)*y translate -20*x }
  410.    object { BPawn rotate 360*rand(r)*y translate -12*x }
  411.    object { BPawn rotate 360*rand(r)*y translate  -4*x }
  412.    object { BPawn rotate 360*rand(r)*y translate   4*x }
  413.    object { BPawn rotate 360*rand(r)*y translate  12*x }
  414.    object { BPawn rotate 360*rand(r)*y translate  20*x }
  415.    object { BPawn rotate 360*rand(r)*y translate  28*x }
  416.  
  417.    translate 20*z
  418.    }
  419.  
  420. union
  421.    {
  422.    object { BRook   rotate 360*rand(r)*y translate -28*x }
  423.    object { BKnight rotate 180*y         translate -20*x }
  424.    object { BBishop rotate 360*rand(r)*y translate -12*x }
  425.    object { BQueen  rotate 360*rand(r)*y translate  -4*x }
  426.    object { BKing   rotate 360*rand(r)*y translate   4*x }
  427.    object { BBishop rotate 360*rand(r)*y translate  12*x }
  428.    object { BKnight rotate 180*y         translate  20*x }
  429.    object { BRook   rotate 360*rand(r)*y translate  28*x }
  430.  
  431.    translate 28*z
  432.    }
  433.  
  434. // Table
  435.  
  436. union
  437.    {
  438.    intersection
  439.       {
  440.       plane {  y, -3 }
  441.       plane {  -y, 8 }
  442.       sphere { -5.5*y, 55 }
  443.       }
  444.    
  445.    intersection
  446.       {
  447.       plane { y, -8 }
  448.       plane { -y, 80 }
  449.  
  450.       object
  451.          {
  452.          Hyperboloid_Y
  453.  
  454.          scale <10, 20, 10>
  455.          translate -20*y
  456.          }
  457.  
  458.       bounded_by { sphere { -50*y, 44.2 } }
  459.       }
  460.    
  461.    pigment
  462.       {
  463.       granite
  464.       scale 6
  465.       quick_colour rgb .5
  466.       }
  467.  
  468.    finish { specular 1 roughness .02 reflection .3 }
  469.    }
  470.  
  471. // Sky
  472.  
  473. object
  474.    {
  475.    sphere { -39000*y, 40000 inverse }
  476.  
  477.    pigment
  478.       {
  479.       bozo
  480.  
  481.       colour_map
  482.          {
  483.          [.5, colour rgb <.4, .5, 1> ]
  484.          [.7, colour rgb 1           ]
  485.          [1   colour rgb .7          ]
  486.          }
  487.  
  488.       turbulence .6
  489.       quick_colour rgb <.4, .5, 1>
  490.  
  491.       scale 500
  492.       }
  493.  
  494.    finish { ambient 1 diffuse 0 }
  495.  
  496.    no_shadow
  497.    }
  498.  
  499. // Ground
  500.  
  501. object
  502.    {
  503.    plane { y, -80 }
  504.    pigment { rgb <.1, .6, .05> }
  505.    finish { crand .05 ambient .5 diffuse .5 }
  506.    no_shadow
  507.    }
  508.