// TUBE / Klein Bottle (Fake) '99.02 // By Tsutomu HIGO E-mail: nj2t-hg@asahi-net.or.jp #version 3.1; global_settings { assumed_gamma 2.2 } #macro Texture_c ( Cred, Cgreen, Cblue, Ctr ) texture { pigment { color rgbt } finish { ambient 0.3 phong 3 reflection 0.8 specular 1.8 brilliance 3 } } #end #macro Klein_ring (Ro, Nt) #declare Pne = 4*Nt*Nt; #declare Rt = pi*2/(Nt-0.5); #declare Yt = 2*pi/Nt/4/Nt; #macro Ka(P) 2*pi*P/Pne+pi/3+0.5*pi*(1+sin(P/Pne*pi*2-pi/1.5) ) #end #macro Rs (P) Ro*(pow(0.8+0.2*sin(P/Pne*pi*2-pi/1.3),8)*0.5+0.1) #end #macro Rl (P) Ro*(0.5-P/Pne*180*(P/Pne*180-50)*(P/Pne*180-180)/500000) #end #macro Ptri (P) , #end #macro Triangle_units (P1,P2,P3) smooth_triangle { Ptri(P1), Ptri(P2), Ptri(P3) Texture_c ( 0,0.5+0.5*cos(P1/Pne*pi*2+pi/2),0.5-0.5*cos(P1/Pne*pi*2+pi/2),0.5 ) } #end union { #declare Pn =0; #while (Pn < Pne+Nt) Triangle_units (Pn,Pn-1,Pn-Nt) Triangle_units (Pn,Pn-Nt+1,Pn-Nt) #declare Pn =Pn +1; #end } #end light_source {<2000, 200, 1000> color rgb <1,1,1>} object { Klein_ring (3, 32) rotate z*-75 rotate y*200 } background { color rgb <0,0,0.2> } camera { location <0,35,-50> angle 9 look_at <-1.0, 0.9, 0> }