// Persistence Of Vision raytracer version 3.1 sample file. // Demo showing several torii ... Dieter Bayer, June 1994 // #include "colors.inc" #include "textures.inc" #macro SphToRec (rho, theta, phi) rho* #end #macro PlrToRec (rho, theta, zed) #end camera { location <0, 0, -1300> look_at <0, 0, 0> } light_source { <0, 00, -999> 2*<1,1,1> } light_source { <0, 0, 700> <1,1,1> } //light_source { <999, 999, 999> <1.3,1.3,1.3> } plane { z, 0 texture { pigment { Red } } translate <0,0,1000> } #declare Ring=600; #while (Ring>5) difference { cylinder { <0,0,0>, <0,0,1>, Ring } cylinder { <0,0,-1>, <0,0,2>, Ring-19.9999 } texture { pigment { Silver*(.75+abs(sin((5/3)*Ring/300))/8) } finish { metallic } //reflection .5} } } #declare Ring=Ring-20; #end //while #declare RomanI = union { // box { // <-10, 50, 0> // one corner position // < 10, -50, -20> // other corner position // } cylinder { <0,50,0> <0,-50,0> 15 } // box { // < 30, 40, 0> // <-30, 60, -20> // } cylinder { < 20, 50, 0> <-20, 50, 0> 15 } sphere { <20,50,0> 15 } sphere { <-20,50,0> 15 } // box { // < 30, -40, 0> // <-30, -60, -20> // } cylinder { < 20, -50, 0> <-20, -50, 0> 15 } sphere { < 20, -50, 0> 15 } sphere { <-20, -50, 0> 15 } } //union of RomanI #declare RomanV = union { object { // box { // < 10, 50, 0> // <-10, -50, -20> // } cylinder { < 0, 50, 0> <-0, -50, 0> 15 } rotate <0,0,15> translate <-17.5,0,0> } object { // box { // < 10, 50, 0> // <-10, -50, -20> // } cylinder { < 0, 50, 0> <-0, -50, 0> 15 } rotate <0,0,-15> translate <17.5,0,0> } sphere { <0,-50, 0> 15 } // box { // < 60, 60, 0> // <-60, 40, -20> // } cylinder { < 45, 50, 0> <-45, 50, 0> 15 } sphere { < 45, 50, 0> 15 } sphere { <-45, 50, 0> 15 } // box { // < 60, -60, 0> // <-60, -40, -20> // } cylinder { < 45, -50, 0> <-45, -50, 0> 15 } sphere { < 45, -50, 0> 15 } sphere { <-45, -50, 0> 15 } } //union of RomanV #declare RomanX = union { object { // box { // < 9, 60, 0> // <-9, -60, -20> // } cylinder { <0, 60, 0> <0,-60, 0> 15 } rotate <0,0,40> } object { // box { // < 9, 60, 0> // <-9, -60, -20> // } cylinder { <0, 60, 0> <0,-60, 0> 15 } rotate <0,0,-40> } // box { // < 60, 60, 0> // <-60, 40, -20> // } sphere { <0,0,0> 15 } cylinder { < 50, 50, 0> <-50, 50, 0> 15 } sphere { < 50, 50, 0> 15 } sphere { <-50, 50, 0> 15 } // box { // < 60, -60, 0> // <-60, -40, -20> // } cylinder { < 50, -50, 0> <-50, -50, 0> 15 } sphere { < 50, -50, 0> 15 } sphere { <-50, -50, 0> 15 } } //union of RomanX #declare LetterTexture = texture { pigment { Gold } finish { metallic //reflection 1 //phong 1 specular 1 } //finish } // textire #declare LetterRadius = 450; object { //one RomanI texture { LetterTexture } rotate <0,0,360/12*1> translate <0,LetterRadius,0> rotate <0,0,-360/12*1> } //one object { //two union { object { RomanI translate <-20,0,0> } object { RomanI translate < 20,0,0> } } //union texture { LetterTexture } rotate <0,0,360/12*2> translate <0,LetterRadius,0> rotate <0,0,-360/12*2> } //two object { //three union { object { RomanI translate <-40,0,0> } object { RomanI translate < 0,0,0> } object { RomanI translate < 40,0,0> } } //union texture { LetterTexture } rotate <0,0,360/12*3> translate <0,LetterRadius,0> rotate <0,0,-360/12*3> }//three object { //four union { object { RomanV translate <50,0,0> } object { RomanI translate <-10,0,0> } } //union texture { LetterTexture } translate <-32.5,0,0> rotate <0,0,360/12*4> translate <0,LetterRadius,0> rotate <0,0,-360/12*4> }//four object { //five RomanV texture { LetterTexture } rotate <0,0,360/12*5> translate <0,LetterRadius,0> rotate <0,0,-360/12*5> } //five object { //six union { object { RomanV translate <-50,0,0> } object { RomanI translate < 10,0,0> } } //union texture { LetterTexture } translate <32.5,0,0> rotate <0,0,360/12*6> translate <0,LetterRadius,0> rotate <0,0,-360/12*6> }//six object { //seven union { object { RomanV translate < -60,0,0> } object { RomanI translate < 0,0,0> } object { RomanI translate <40,0,0> } } //union texture { LetterTexture } translate <17.5,0,0> rotate <0,0,360/12*7> translate <0,LetterRadius,0> rotate <0,0,-360/12*7> }//seven object { //eight union { object { RomanV translate <-70,0,0> } object { RomanI translate <-10,0,0> } object { RomanI translate < 30,0,0> } object { RomanI translate < 70,0,0> } } //union texture { LetterTexture } translate <12.5,0,0> rotate <0,0,360/12*8> translate <0,LetterRadius,0> rotate <0,0,-360/12*8> }//eight object { //nine union { object { RomanX translate <50,0,0> } object { RomanI translate < -10,0,0> } } //union texture { LetterTexture } translate <-35,0,0> rotate <0,0,360/12*9> translate <0,LetterRadius,0> rotate <0,0,-360/12*9> }//nine object { //ten RomanX texture { LetterTexture } rotate <0,0,360/12*10> translate <0,LetterRadius,0> rotate <0,0,-360/12*10> } //ten object { //eleven union { object { RomanX translate <-50,0,0> } object { RomanI translate < 10,0,0> } } //union texture { LetterTexture } translate <35,0,0> rotate <0,0,360/12*11> translate <0,LetterRadius,0> rotate <0,0,-360/12*11> }//eleven object { //twelve union { object { RomanX translate < -60,0,0> } object { RomanI translate < 0,0,0> } object { RomanI translate <40,0,0> } } //union texture { LetterTexture } translate <25,0,0> rotate <0,0,360/12*12> translate <0,LetterRadius,0> rotate <0,0,-360/12*12> }//twelve object { //hour hand union { sphere { < 0, 0, -25 > 20 } cylinder { < 0, 0,-25> <100/3,25,-25> 7.5 } cylinder { < 0, 0,-25> <-100/3,25,-25> 7.5 } cylinder { <-100/3,25,-25> < 100/3,25,-25> 7.5 } sphere { < 100/3,25,-25> 7.5 } sphere { <-100/3,25,-25> 7.5 } cylinder { <25, 25, -25> <25, 250, -25> 7.5 } cylinder { <-25, 25, -25> <-25, 250, -25> 7.5 } cylinder { <0, 25, -25> <0, 250, -25> 7.5 } cylinder { <-100/3,250,-25> < 100/3,250,-25> 7.5 } sphere { <-100/3,250,-25> 7.5 } sphere { < 100/3,250,-25> 7.5 } difference { box { <-100/3, 250, -18> < 100/3, 350, -32> } object { cylinder { <0, 0, 0> <0, 0, -35> 1 } scale <45,100,1> translate <50,350,0> } //object object { cylinder { <0, 0, 0> <0, 0, -35> 1 } scale <45,100,1> translate <-50,350,0> } //object } // difference } //union texture { // pigment { Gray20 } // pigment { DarkSlateGray } pigment { DarkSlateBlue/1.25 } finish { metallic //reflection 1 //phong 1 specular 1/3 } //finish } // textire rotate <0,0,-clock*pi*pi> } //object hour hand object { //minute hand union { sphere { < 0, 0, -25 > 20 } cylinder { < 0, 0,-25> <100/3,25,-25> 7.5 } cylinder { < 0, 0,-25> <-100/3,25,-25> 7.5 } cylinder { <-100/3,25,-25> < 100/3,25,-25> 7.5 } sphere { < 100/3,25,-25> 7.5 } sphere { <-100/3,25,-25> 7.5 } cylinder { <25, 25, -25> <25, 350, -25> 7.5 } cylinder { <-25, 25, -25> <-25, 350, -25> 7.5 } cylinder { <0, 25, -25> <0, 350, -25> 7.5 } cylinder { <-100/3,350,-25> < 100/3,350,-25> 7.5 } sphere { <-100/3,350,-25> 7.5 } sphere { < 100/3,350,-25> 7.5 } difference { box { <-100/3, 350, -18> < 100/3, 450, -32> } object { cylinder { <0, 0, 0> <0, 0, -35> 1 } scale <45,100,1> translate <50,450,0> } //object object { cylinder { <0, 0, 0> <0, 0, -35> 1 } scale <45,100,1> translate <-50,450,0> } //object } // difference } //union texture { // pigment { Gray20 } // pigment { DarkSlateGray } pigment { DarkSlateBlue/1.25 } finish { metallic //reflection 1 //phong 1 specular 1/3 } //finish } // textire rotate <0,0,-clock*13> } //object minute hand union { //union second hand sphere { < 0, 0, -25 > 20 } cylinder { <0,0,-50> <0,450,-50> 7.5 } texture { // pigment { Gray20 } // pigment { DarkSlateGray } pigment { DarkSlateBlue/1.25 } finish { metallic //reflection 1 //phong 1 specular 1/3 } //finish } // textire rotate <0,0,-clock*sqrt(1000)> } //union second hand torus { 600 15 texture { // pigment { Gray20 } // pigment { DarkSlateGray } pigment { DarkSlateBlue/1.25 } finish { metallic //reflection 1 //phong 1 specular 1/3 } //finish } // textire rotate < 90, 0, 0> } //center //union { // cylinder { // <0,0,0> // <0,0,-100> // 15 // } // cylinder { // <50,0,0> // <50,0,-100> // 15 // } // cylinder { // <-50,0,0> // <-50,0,-100> // 15 // } // // texture { pigment { Red } } //} // texture pigment/normal attribute // Takes a float or vector, see also octaves, omega, lambda, frequency //turbulence <0, 1, 0.5> // how much to Òstir upÓ the texture (0...1 or more)