// // a cylindric wall // #version 3.1; global_settings { assumed_gamma 1.0 } camera { location <-7, 4, -7.0> look_at <-1, 2.0, -1> } light_source { <-40,40,0> color rgb <1,1,1> } sky_sphere { pigment { gradient y color_map { [0.0 color blue 0.6] [1.0 color rgb 1] } } } plane {y,0 pigment {color rgb <.2,.6,.2>} } // // parameters : you can play with // but be careful of light and camera positions. // #declare Nb_p=24; // number of pieces #declare Rayon=12; // radius of the cylindric wall : be careful of light and camera position #declare Rapport=16; // rapport entre la largeur de la plaque et epaisseur du croisillon : // sorry no english #declare Haut_Tot=7; // the wall is 7 units high // // the maths // #declare Ang_b=360/Nb_p; #declare Largeur=2*Rayon*sin(radians(Ang_b/2)); #declare Distance=Rayon*cos(radians(Ang_b/2)); // a piece is a square // but the wall must be 7 units high !!! // so i resize it if necessary #declare Nb_Cop=int(Haut_Tot/Largeur); #if (Nb_Cop != Haut_Tot/Largeur) #if (Nb_Cop<1) #declare Nb_Cop=1; #end #declare Hauteur=Haut_Tot/Nb_Cop; #end // // The fun // #declare D0=3*Largeur/(Rapport*2); #declare D1=(D0*Hauteur)/Largeur; #declare D2=6*Largeur/(Rapport*2); #declare D3=(D2*Hauteur)/Largeur; #declare P1=<-Largeur/2+D0,D1,Largeur/Rapport>; #declare P2=<-Largeur/2+D0,Hauteur-D1,Largeur/Rapport>; #declare P3=; #declare P4=; #declare P5=<-Largeur/2+D2,D3,Largeur/Rapport>; #declare P6=<-Largeur/2+D2,Hauteur-D3,Largeur/Rapport>; #declare P7=; #declare P8=; #declare Paroi=union { difference { box{<-Largeur/2,0,0>,} box{<-Largeur/2+Largeur/(Rapport*2),Largeur/(Rapport*2),-.1>, } } cone { P1,0 P5,((2*Largeur)/Rapport)/3 } cone { P2,0 P6,((2*Largeur)/Rapport)/3 } cone { P3,0 P7,((2*Largeur)/Rapport)/3 } cone { P4,0 P8,((2*Largeur)/Rapport)/3 } cone { P5,((2*Largeur)/Rapport)/3 <0,Hauteur/2,Largeur/Rapport>,0 } cone { P6,((2*Largeur)/Rapport)/3 <0,Hauteur/2,Largeur/Rapport>,0 } cone { P7,((2*Largeur)/Rapport)/3 <0,Hauteur/2,Largeur/Rapport>,0 } cone { P8,((2*Largeur)/Rapport)/3 <0,Hauteur/2,Largeur/Rapport>,0 } sphere {<0,Hauteur/2,Largeur/Rapport>,((2*Largeur)/Rapport)/3} } #declare Mur=union { #declare Nb=1; #while (Nb} finish {specular .5 roughness 0.04} }