#include "shapes.inc" #include "woods.inc" #declare PawnBase = union { intersection { sphere { <0, 0, 0>, 2.5 } plane { -y, 0 } } cylinder { 0, y*0.35, 2.5 pigment { green 0.65 } } } #declare PieceBase = union { intersection { sphere { <0, 0, 0>, 3 } plane { -y, 0 } } cylinder { 0, y*0.35, 3.0 pigment { green 0.65 } } } #declare Pawn = union { sphere { <0, 7, 0>, 1.5 } sphere { <0, 0, 0>, 1 scale <1.2, 0.3, 1.2> translate 5.5*y } intersection { plane { y, 5.5 } object { Hyperboloid_Y translate 5*y scale <0.5, 1, 0.5> } plane { -y, -2.5 } } sphere { <0, 0, 0>, 1 scale <2, 0.5, 2> translate <0, 2.3, 0> } object { PawnBase } } #declare Rook = union { intersection { union { plane { +x, -0.5 } plane { -x, -0.5 } plane { y, 9 } } union { plane { +z, -0.5 } plane { -z, -0.5 } plane { y, 9 } } plane { y, 10 } object { Cylinder_Y scale <2, 1, 2> } object { Cylinder_Y scale <1.2, 1, 1.2> inverse } plane { -y, -8 } } intersection { plane { y, 8 } object { Hyperboloid_Y scale <1, 1.5, 1> translate 5.401924*y } plane { -y, -3 } } sphere { <0, 0, 0>, 1 scale <2.5, 0.5, 2.5> translate 2.8*y } object { PieceBase } } #declare Knight = union { intersection { object { Cylinder_Z scale <17.875, 17.875, 1> translate <-18.625, 7, 0> inverse } object { Cylinder_Z scale <17.875, 17.875, 1> translate <18.625, 7, 0> inverse } object { Cylinder_X scale <1, 5.1, 5.1> translate <0, 11.2, -5> inverse } union { plane { y, 0 rotate 30*x translate 9.15*y } plane { z, 0 rotate -20*x translate 10*y } } union { plane { -y, 0 rotate 30*x translate 7.15*y } plane { y, 0 rotate 60*x translate 7.3*y } } union { plane { y, 0 rotate -45*y } plane { y, 0 rotate 45*z } translate 9*y } object { Cylinder_Y scale <2, 1, 2> } sphere { <0, 7, 0>, 4 } } sphere { <0, 0, 0>, 1 scale <2.5, 0.5, 2.5> translate <0, 2.8, 0> } object { PieceBase } } #declare Bishop = union { sphere { <0, 10.8, 0>, 0.4 } intersection { union { plane { -z, -0.25 } plane { +z, -0.25 } plane { y, 0 } rotate 30*x translate 8.5*y } sphere { <0, 0, 0>, 1 scale <1.4, 2.1, 1.4> translate 8.4*y } plane { -y, -7 } } sphere { <0, 0, 0>, 1 scale <1.5, 0.4, 1.5> translate 7*y } intersection { plane { y, 7 } object { Hyperboloid_Y scale <0.6, 1.4, 0.6> translate 7*y } plane { -y, -3 } } sphere { <0, 0, 0>, 1 scale <2.5, 0.5, 2.5> translate 2.8*y } object { PieceBase } } #declare QueenAndKing = union { sphere { <0, 10.5, 0>, 1.5 } intersection { union { sphere { <1.75, 12, 0>, 0.9 rotate 150*y } sphere { <1.75, 12, 0>, 0.9 rotate 120*y } sphere { <1.75, 12, 0>, 0.9 rotate 90*y } sphere { <1.75, 12, 0>, 0.9 rotate 60*y } sphere { <1.75, 12, 0>, 0.9 rotate 30*y } sphere { <1.75, 12, 0>, 0.9 } sphere { <1.75, 12, 0>, 0.9 rotate -30*y } sphere { <1.75, 12, 0>, 0.9 rotate -60*y } sphere { <1.75, 12, 0>, 0.9 rotate -90*y } sphere { <1.75, 12, 0>, 0.9 rotate -120*y } sphere { <1.75, 12, 0>, 0.9 rotate -150*y } sphere { <1.75, 12, 0>, 0.9 rotate 180*y } inverse } plane { y, 11.5 } object { QCone_Y scale <1, 3, 1> translate 5*y } plane { -y, -8 } } sphere { <0, 0, 0>, 1 scale <1.8, 0.4, 1.8> translate 8*y } intersection { plane { y, 8 } object { Hyperboloid_Y scale <0.7, 1.6, 0.7> translate 7*y } plane { -y, -3 } } sphere { <0, 0, 0>, 1 scale <2.5, 0.5, 2.5> translate 2.8*y } object { PieceBase } } #declare Queen = union { sphere { <0, 12.3, 0>, 0.4 } object { QueenAndKing } } #declare King = union { intersection { union { intersection { plane { y, 13 } plane { -y, -12.5 } } intersection { plane { +x, 0.25 } plane { -x, 0.25 } } } plane { +z, 0.25 } plane { -z, 0.25 } plane { +x, 0.75 } plane { -x, 0.75 } plane { +y, 13.5 } plane { -y, -11.5 } } object { QueenAndKing } } #declare WWood = texture { pigment{color rgbf<1,1,1,1>} finish { ambient 0 diffuse 0 reflection 0.5 phong 0.3 phong_size 60 } } #declare BWood = texture { pigment{ color rgbft<0,0,0,1,.5>} finish{ambient 0 diffuse 0 reflection 0.5 phong 0.3 phong_size 60 } } #declare WPawn = object { Pawn texture { WWood pigment { quick_color red 0.95 green 0.62 } } } #declare BPawn = object { Pawn texture { BWood pigment { quick_color red 0.4 green 0.2 } } } #declare WRook = object { Rook texture { WWood pigment { quick_color red 0.95 green 0.62 } } } #declare BRook = object { Rook texture { BWood pigment { quick_color red 0.4 green 0.2 } } } #declare WKnight = object { Knight texture { WWood pigment { quick_color red 0.95 green 0.62 } } } #declare BKnight = object { Knight rotate 180*y texture { BWood pigment { quick_color red 0.4 green 0.2 } } } #declare WBishop = object { Bishop texture { WWood pigment { quick_color red 0.95 green 0.62 } } } #declare BBishop = object { Bishop rotate 180*y texture { BWood pigment { quick_color red 0.4 green 0.2 } } } #declare WQueen = object { Queen texture { WWood pigment { quick_color red 0.95 green 0.62 } } } #declare BQueen = object { Queen texture { BWood pigment { quick_color red 0.4 green 0.2 } } } #declare WKing = object { King texture { WWood pigment { quick_color red 0.95 green 0.62 } } } #declare BKing = object { King texture { BWood pigment { quick_color red 0.4 green 0.2 } } } #declare FramePiece = intersection { plane { +y, -0.15 } plane { -y, 3 } plane { -z, 35 } plane { <-1, 0, 1>, 0 } // 45 degree bevel plane { < 1, 0, 1>, 0 } // 45 degree bevel } #declare Frame = union { union { object { FramePiece } object { FramePiece rotate 180*y } texture { T_Wood20 scale 2 rotate y*87 translate x*1 finish { specular 1 roughness 0.02 ambient 0.35 reflection .25 } } } union { object { FramePiece rotate -90*y } object { FramePiece rotate 90*y } texture { T_Wood20 scale 2 rotate y*2 finish { specular 1 roughness 0.02 ambient 0.35 reflection .25 } } } } #declare Board = box { <-32, -1, -32> <32, 0, 32> texture { tiles { texture { pigment { //marble wrinkles turbulence 1.0 colour_map { [0.0 0.7 colour rgb 1 colour rgb 1] [0.7 0.9 colour rgb 1 colour red 0.8 green 0.8 blue 0.8] [0.9 1.0 colour red 0.8 green 0.8 blue 0.8 colour red 0.5 green 0.5 blue 0.5] } scale <0.6, 1, 0.6> rotate -30*y } finish { specular 1 roughness 0.02 reflection 0.5 } } // texture tile2 texture { pigment { granite scale <0.3, 1, 0.3> colour_map { [0 1 colour rgb 0 colour red 0.5 green 0.5 blue 0.5] } } finish { specular 1 roughness 0.02 reflection 0.5 } } } // texture scale <8, 1, 8> } //texture } // intersection