/* penroseDeflation.pov A Penrose tiling demonstration which illustrates kite and dart deflation. October 2009 Samuel Benge */ #default{ finish{ambient 0 } } camera{ orthographic right x up y/2 location <0,15,-.001> look_at <0,0,0> angle 30 } #declare area_light_samples = 4; light_source{ <0,.5,1>*100000,5 area_light x*200000,z*200000,area_light_samples,area_light_samples adaptive 1 jitter area_illumination on } background{1} // appearance variables #declare number_of_iterations = 6; #declare show_borders = yes; #declare show_arcs = yes; #declare radius_border1 = .025; // highlights half-shape mirrored couplets (completes kites and darts) #declare radius_border2 = 0; // remaining borders, if = 0 then no extra border #declare radius_arc = .025; // thickness of internal arcs #declare arc_thickness = .25; // bas-relief depth of arcs (depth=radius_arc*arc_thickness) #declare color_kite = <0.3, 0.6, 1.0>; #declare color_kite_arc = color_kite*.75; #declare color_dart = <.05, 0.5, .05>; #declare color_dart_arc = color_dart*.75; #declare color_border = <.025, .175, .15>; // end appearance variables #declare golden_ratio=(1+sqrt(5))/2; #declare golden_divide=1/golden_ratio; #declare kp1=<0,0>; #declare kp2=; #declare kp3=<1,0>; #declare half_kite= prism{ -1,0,4 kp1,kp2,kp3,kp1 pigment{rgb color_kite} } #declare dp1=<0,0>; #declare dp2=*golden_divide; #declare dp3=; #declare half_dart= prism{ -1,0,4 dp1,dp2,dp3,dp1 pigment{rgb color_dart} } #if(show_arcs=true) #declare half_kite= difference{ object{half_kite} union{ torus{golden_divide,radius_arc scale<1,arc_thickness,1>} torus{1-golden_divide,radius_arc*golden_divide scale<1,arc_thickness,1> translate kp3 } pigment{rgb color_kite_arc} } } #declare half_dart= difference{ object{half_dart} union{ torus{golden_divide/(1/golden_divide),radius_arc scale<1,arc_thickness,1> translate dp3} torus{golden_divide-golden_divide/(1/golden_divide),radius_arc*golden_divide scale<1,arc_thickness,1> } pigment{rgb color_dart_arc} } } #end #if(show_borders=true) #declare half_kite= union{ object{half_kite} union{ #if(radius_border2>0) cylinder{,,radius_border2} #end cylinder{,,radius_border1} cylinder{,,radius_border1} sphere{,radius_border1} sphere{,radius_border1} sphere{,radius_border1} pigment{rgb color_border} } } #declare half_dart= union{ object{half_dart} union{ #if(radius_border2>0) cylinder{,,radius_border2} #end cylinder{,,radius_border1} cylinder{,,radius_border1} sphere{,radius_border1} sphere{,radius_border1} sphere{,radius_border1} pigment{rgb color_border} } } #end #declare new_half_kite=half_kite; #declare new_half_dart=half_dart; #declare V=0; #while(V<=number_of_iterations ) // display iterations //box{-1,1 scale<.0125,.0125,100> translate x*(V-3)} // display 'kite' object{new_half_kite translate<-3.8+V*1.1,0,1.2>} //display 'dart' object{new_half_dart translate<-3.5875+V*1.1,0,.45>} union{ #declare vv=0; #while(vv<5) // display 'kite' as rose union{ object{new_half_kite } object{new_half_kite scale<1,1,-1> } rotate y*vv*72 scale .5 translate<-3.3+V*1.1,0,-.2> } // display 'dart' as rose union{ object{new_half_dart translate -x*dp3.x} object{new_half_dart translate -x*dp3.x scale<1,1,-1> } rotate y*vv*72 scale .5 translate<-3.3+V*1.1,0,-1.3> } #declare vv=vv+1; #end } #declare old_half_kite=new_half_kite; #declare new_half_kite= union{ object{new_half_kite rotate y*36*3} object{new_half_kite scale<1,1,-1> rotate y*36*3} object{new_half_dart rotate y*36*4 translate<-kp2.x,0,-kp2.y>} scale golden_divide translate } #declare new_half_dart= union{ object{old_half_kite scale<-1,1,1>} object{new_half_dart rotate -y*36*4 translate<-kp2.x,0,kp2.y>} translate x scale golden_divide } #declare V=V+1; #end