// Persistence of Vision Ray Tracer Scene Description File // File: toros034.pov // Vers: 3.6.1 // Desc: 3 RGB linked rings // Date: January 2006 // Auth: B Gimeno // e-mail: aplenosol@ya.com #include "colors.inc" #include "math.inc" global_settings { assumed_gamma 1.0 } camera {location <15,60,-80> look_at <0,0,0> direction z*1} light_source {<0,200,0> colour White} light_source {<0,-200,0> colour White} //----------------------the macro--------------------------------// /* toro_rings_038 ( major radius, minor radius, number of segments around major radius, number of segments around minor radius, wire thickness, choose a pattern, choose a pigment ) */ #macro toro_rings_638 (major_r,minor_r,n_c_mjr_radius,n_c_mnr_radius,b_thickness,mesh_model,color_toros) union { torus {major_r,minor_r-b_thickness pigment {White}} #local nmajor_r = n_c_mjr_radius ; #while (nmajor_r>0) #local nminor_r = n_c_mnr_radius ; #while (nminor_r>0) #local Rnd_1 = seed (nminor_r+nmajor_r); #macro px(X,Y) // px(0.5,0.5) #local Vertex = <(sind((360/n_c_mjr_radius)*(nmajor_r+X))*major_r)+((cosd((360/n_c_mnr_radius)*(nminor_r+Y))*minor_r)*(sind((360/n_c_mjr_radius)*(nmajor_r+X)))), (sind((360/n_c_mnr_radius)*(nminor_r+Y))*minor_r), (cosd((360/n_c_mjr_radius)*(nmajor_r+X))*major_r)+((cosd((360/n_c_mnr_radius)*(nminor_r+Y))*minor_r)*(cosd((360/n_c_mjr_radius)*(nmajor_r+X))))>; Vertex #end // end macro px(X,Z) union { #switch (mesh_model) #case (1) // squares cylinder {px(-.5, .5), px(-.5,-.5),b_thickness} cylinder {px(-.5,-.5), px( .5,-.5),b_thickness} sphere {px(-.5, .5),b_thickness} #break #case (2) // triangles 1 cylinder {px(-.5,-.5), px(0,-.5),b_thickness} cylinder {px(0,-.5), px(.5,-.5),b_thickness} cylinder {px(-.5,0), px(0,0),b_thickness} cylinder {px(0,0), px(.5,0),b_thickness} cylinder {px(-.5,0), px(0,.5),b_thickness} cylinder {px(0,.5), px(.5,0),b_thickness} cylinder {px(.5,0), px(0,-.5),b_thickness} cylinder {px(0,-.5), px(-.5,0),b_thickness} sphere {px(-.5,0),b_thickness} sphere {px(0,0),b_thickness} sphere {px(-.5,-.5),b_thickness} sphere {px(0,-.5),b_thickness} #break #case (3) // triangles 2 cylinder {px(-.5,.5), px(-.5,0),b_thickness} cylinder {px(-.5,0), px(-.5,-.5),b_thickness} cylinder {px(0,.5), px(0,0),b_thickness} cylinder {px(0,0), px(0,-.5),b_thickness} cylinder {px(-.5,0), px(0,.5),b_thickness} cylinder {px(0.0,.5), px(.5,0),b_thickness} cylinder {px(0.5,0), px(0,-.5),b_thickness} cylinder {px(0.0,-.5), px(-.5,0),b_thickness} sphere {px(-.5, 0),b_thickness} sphere {px(-.5,-.5),b_thickness} sphere {px(0, .5),b_thickness} sphere {px(0,0),b_thickness} #break #case (4) // diamonds cylinder {px(-.5,-.5), px(0,0),b_thickness} cylinder {px(-.5,.5), px(0,0),b_thickness} cylinder {px(0,0), px(.5,.5),b_thickness} cylinder {px(0,0), px(.5,-.5),b_thickness} sphere {px(.5,.5),b_thickness} sphere {px(-.5,-.5),b_thickness} sphere {px(0,0),b_thickness} #break #case (5) // hexagons 1 cylinder {px(0,-.5), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(.5,0),b_thickness} cylinder {px(.5,0), px(.5,.25),b_thickness} cylinder {px(.5,.25), px(0,.5),b_thickness} cylinder {px(0,.5), px(-.5,.25),b_thickness} cylinder {px(-.5,0), px(0,-.25),b_thickness} sphere {px(-.5,0),b_thickness} sphere {px(0,-.25),b_thickness} sphere {px(.5,.25),b_thickness} sphere {px(0,.5),b_thickness} #break #case (6) // hexagons 2 cylinder {px(-.5,0), px(-.25,0),b_thickness} cylinder {px(-.25,0), px(0,-.5),b_thickness} cylinder {px(0,-.5), px(.25,-.5),b_thickness} cylinder {px(.25,-.5), px(.5,0),b_thickness} cylinder {px(.5,0), px(.25,.5),b_thickness} cylinder {px(0,.5), px(-.25,0),b_thickness} sphere {px(-.5,0),b_thickness} sphere {px(-.25,0),b_thickness} sphere {px(0,-.5),b_thickness} sphere {px(.25,-.5),b_thickness} #break #case (7) // hexagons 3 cylinder {px(-.5,0), px(-.25,0),b_thickness} cylinder {px(-.25,0), px(0,-.5),b_thickness} cylinder {px(0,-.5), px(.25,-.5),b_thickness} cylinder {px(.25,-.5), px(.5,0),b_thickness} cylinder {px(0,.5), px(-.25,0),b_thickness} sphere {px(-.5,0),b_thickness} sphere {px(-.25,0),b_thickness} sphere {px(0,-.5),b_thickness} sphere {px(.25,-.5),b_thickness} #break #case (8) // brickwork 1 cylinder {px(.5,.5), px(0,.5),b_thickness} cylinder {px(0,.5), px(-.5,.5),b_thickness} cylinder {px(-.5,.5), px(-.5,0),b_thickness} cylinder {px(-.5,0), px(0,0),b_thickness} cylinder {px(0,0), px(.5,0),b_thickness} cylinder {px(0,0), px(0,-.5),b_thickness} sphere {px(.5,.5),b_thickness} sphere {px(0,.5),b_thickness} sphere {px(-.5,0)b_thickness} sphere {px(0,0),b_thickness} #break #case (9) // brickwork 2 cylinder {px(-.5,-.5), px(0,0),b_thickness} cylinder {px(0,0), px(.5,.5),b_thickness} cylinder {px(0,0), px(-.5,.5),b_thickness} sphere {px(0,0),b_thickness} sphere {px(-.5,-.5),b_thickness} sphere {px(-.5,.5),b_thickness} #break #case (10) // brickwork 3 cylinder {px(-.5,.5), px(0,.25),b_thickness} cylinder {px(0,.25), px(.5,.5),b_thickness} cylinder {px(-.5,0), px(0,.25),b_thickness} cylinder {px(-.5,0), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(.5,0),b_thickness} cylinder {px(0,-.25), px(.5,-.5),b_thickness} sphere {px(.5,.5),b_thickness} sphere {px(0,.25),b_thickness} sphere {px(-.5,0),b_thickness} sphere {px(0,-.25),b_thickness} #break #case (11) // arabesque 1 cylinder {px(-.5,.5), px(-.25,.25),b_thickness} cylinder {px(.5,.5), px(.25,.25),b_thickness} cylinder {px(-.5,-.5), px(-.25,-.25),b_thickness} cylinder {px(.5,-.5), px(.25,-.25),b_thickness} cylinder {px(-.25,.25), px(.25,.25),b_thickness} cylinder {px(.25,.25), px(.25,-.25),b_thickness} cylinder {px(.25,-.25), px(-.25,-.25),b_thickness} cylinder {px(-.25,-.25), px(-.25,.25),b_thickness} sphere {px(.5,.5),b_thickness} sphere {px(.25,.25),b_thickness} sphere {px(.25,-.25),b_thickness} sphere {px(-.25,.25),b_thickness} sphere {px(-.25,-.25),b_thickness} #break #case (12) // arabesque 2 cylinder {px(-.5,-.25), px(-.25,-.5),b_thickness} cylinder {px(-.25,-.5), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(-.25,0),b_thickness} cylinder {px(0,-.25), px(.25,0),b_thickness} cylinder {px(.25,0), px(0,.25),b_thickness} cylinder {px(.25,0), px(.5,-.25),b_thickness} cylinder {px(.5,-.25), px(.25,-.5),b_thickness} cylinder {px(-.25,0), px(-.5,.25),b_thickness} cylinder {px(-.5,.25), px(-.25,.5),b_thickness} cylinder {px(-.25,0), px(0,.25),b_thickness} cylinder {px(0,.25), px(.25,.5),b_thickness} cylinder {px(.25,.5), px(.5,.25),b_thickness} sphere {px(-.5,.25),b_thickness} sphere {px(-.5,-.25),b_thickness} sphere {px(-.25,0),b_thickness} sphere {px(-.25,-.5),b_thickness} sphere {px(0,.25),b_thickness} sphere {px(0,-.25),b_thickness} sphere {px(.25,0),b_thickness} sphere {px(.25,-.5),b_thickness} #break #case (13) // 4 arrows cylinder {px(-.5,.5), px(-.25,.25),b_thickness} cylinder {px(.25,.25), px(.5,.5),b_thickness} cylinder {px(.25,-.25), px(.5,-.5),b_thickness} cylinder {px(-.5,-.5), px(-.25,-.25),b_thickness} cylinder {px(-.375,-.25), px(-.375,.25),b_thickness} cylinder {px(.375,-.25), px(.375,.25),b_thickness} cylinder {px(-.25,.375), px(.25,.375),b_thickness} cylinder {px(-.25,-.375), px(.25,-.375),b_thickness} cylinder {px(-.375,.25), px(-.25,.25),b_thickness} cylinder {px(-.375,-.25), px(-.25,-.25),b_thickness} cylinder {px(.375,.25), px(.25,.25),b_thickness} cylinder {px(.375,-.25), px(.25,-.25),b_thickness} cylinder {px(-.25,.25), px(-.25,.375),b_thickness} cylinder {px(-.25,-.25), px(-.25,-.375),b_thickness} cylinder {px(.25,.25), px(.25,.375),b_thickness} cylinder {px(.25,-.25), px(.25,-.375),b_thickness} sphere {px(-.375,.25),b_thickness} sphere {px(-.375,-.25),b_thickness} sphere {px(-.25,.25),b_thickness} sphere {px(-.25,-.25),b_thickness} sphere {px(.375,.25),b_thickness} sphere {px(.375,-.25),b_thickness} sphere {px(.25,.25),b_thickness} sphere {px(.25,-.25),b_thickness} sphere {px(.5,.5),b_thickness} #break #case (14) // 8 star cylinder {px(-.5,.5), px(0,.25),b_thickness} cylinder {px(0,.25), px(.5,0),b_thickness} cylinder {px(.5,0), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(-.5,-.5),b_thickness} cylinder {px(-.5,-.5), px(-.25,0),b_thickness} cylinder {px(-.25,0), px(0,.5),b_thickness} cylinder {px(0,.5), px(.25,0),b_thickness} cylinder {px(.25,0), px(.5,-.5),b_thickness} cylinder {px(.5,-.5), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(-.5,0),b_thickness} cylinder {px(-.5,0), px(0,.25),b_thickness} cylinder {px(0,.25), px(.5,.5),b_thickness} cylinder {px(.5,.5), px(0.25,0),b_thickness} cylinder {px(.25,0), px(0,-.5),b_thickness} cylinder {px(0,-.5), px(-.25,0),b_thickness} cylinder {px(-.25,0), px(-.5,.5),b_thickness} sphere {px(.5,.5),b_thickness} sphere {px(-.25,0),b_thickness} sphere {px(.25,.5),b_thickness} sphere {px(0,.25),b_thickness} sphere {px(0,-.25),b_thickness} #break #case (15) // checkered cylinder {px(-.5,.5), px(-.5,.25),b_thickness} cylinder {px(-.5,.25), px(-.5,0),b_thickness} cylinder {px(-.5,0), px(-.25,0),b_thickness} cylinder {px(-.25,0), px(0,0),b_thickness} cylinder {px(0,0), px(.25,0),b_thickness} cylinder {px(.25,0), px(.5,0),b_thickness} cylinder {px(.5,0), px(.5,-.25),b_thickness} cylinder {px(.5,-.25), px(.5,-.5),b_thickness} cylinder {px(.5,-.5), px(.25,-.5),b_thickness} cylinder {px(.25,-.5), px(0,-.5),b_thickness} cylinder {px(0,-.5), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(0,0),b_thickness} cylinder {px(0,0), px(0,.25),b_thickness} cylinder {px(0,.25), px(0,.5),b_thickness} cylinder {px(0,.5), px(-.25,.5),b_thickness} cylinder {px(-.25,.5), px(-.5,.5),b_thickness} cylinder {px(.25,.5), px(.5,.25),b_thickness} cylinder {px(.5,.25), px(.25,0),b_thickness} cylinder {px(.25,0), px(0,.25),b_thickness} cylinder {px(0,.25), px(.25,.5),b_thickness} cylinder {px(-.25,-.5), px(-.5,-.25),b_thickness} cylinder {px(-.5,-.25), px(-.25,0),b_thickness} cylinder {px(-.25,0), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(-.25,-.5),b_thickness} sphere {px(-.5,.5),b_thickness} sphere {px(-.5,.25),b_thickness} sphere {px(-.5,0),b_thickness} sphere {px(-.5,-.25),b_thickness} sphere {px(-.25,.5),b_thickness} sphere {px(-.25,0),b_thickness} sphere {px(0,.5),b_thickness} sphere {px(0,.25),b_thickness} sphere {px(0,0),b_thickness} sphere {px(0,-.25),b_thickness} sphere {px(.25,.5),b_thickness} sphere {px(.25,0),b_thickness} #break #case (16) // octogon 1 cylinder {px(-.25,-.5), px(-.5,-.25),b_thickness} cylinder {px(-.5,-.25), px(-.5,.25),b_thickness} cylinder {px(-.5,.25), px(-.25,.5),b_thickness} cylinder {px(-.25,.5), px(.25,.5),b_thickness} cylinder {px(.25,.5), px(.5,.25),b_thickness} cylinder {px(.5,-.25), px(.25,-.5),b_thickness} sphere {px(-.25,-.5),b_thickness} sphere {px(-.5,-.25),b_thickness} sphere {px(-.5,.25),b_thickness} sphere {px(.25,.5),b_thickness} sphere {px(-.25,-.5),b_thickness} #break #case (17) // octogon 2 cylinder {px(-.25,.25), px(-.25,0),b_thickness} cylinder {px(-.25,0), px(0,-.25),b_thickness} cylinder {px(0,-.25), px(.25,-.25),b_thickness} cylinder {px(.25,-.25), px(.5,0),b_thickness} cylinder {px(.5,0), px(.5,.25),b_thickness} cylinder {px(.5,.25), px(.25,.5),b_thickness} cylinder {px(.25,.5), px(0,.5),b_thickness} cylinder {px(0,.5), px(-.25,.25),b_thickness} cylinder {px(-.5,.25), px(-.25,.25),b_thickness} cylinder {px(-.5,0), px(-.25,0),b_thickness} cylinder {px(0,-.25), px(0,-.5),b_thickness} cylinder {px(.25,-.25), px(.25,-.5),b_thickness} sphere {px(-.5,.25),b_thickness} sphere {px(-.5,0),b_thickness} sphere {px(-.25,.25),b_thickness} sphere {px(-.25,0),b_thickness} sphere {px(0,-.25),b_thickness} sphere {px(0,-.5),b_thickness} sphere {px(.25,-.25),b_thickness} sphere {px(.25,-.5),b_thickness} #break #case (18) // 6 star cylinder {px(-2/6,.5), px(-.5,0),b_thickness} cylinder {px(-.5,0), px(-2/6,-.5),b_thickness} cylinder {px(-2/6,-.5), px(0,-.5),b_thickness} cylinder {px(0,-.5), px(1/6,0),b_thickness} cylinder {px(1/6,0), px(0,.5),b_thickness} cylinder {px(0,.5), px(2/6,.5),b_thickness} cylinder {px(2/6,.5), px(.5,0),b_thickness} cylinder {px(.5,0), px(2/6,-.5),b_thickness} cylinder {px(1/6,0), px(.5,0),b_thickness} cylinder {px(-1/6,0), px(-.5,0),b_thickness} cylinder {px(0,-.5), px(-1/6,0),b_thickness} cylinder {px(0,.5), px(-1/6,0),b_thickness} #end } #local nminor_r = nminor_r - 1 ; #end #local nmajor_r = nmajor_r - 1 ; #end pigment {color_toros} finish {reflection .2 phong .25} } #end //---------------------the objects-------------------------------// object { toro_rings_038 (15,7,15,12,.15,18,Red)}