File talk:Helicobacter pylori diagram.png
Jump to navigation
Jump to search
POV-Ray source file
[edit]//H_pylori.pov for POV-Ray3.6 //by Y tambe //You can use this source file under either GFDL or CC-by-sa (dual license) //You can use the images you render as free. camera { angle 15 location <0.0, 0.0, 180> look_at <0.0, 0.0, 0.0> rotate 20*x } light_source { <0, 0, 1000> rgb <1, 1, 1> shadowless } #declare h_pylori= difference{ blob{ threshold 0.1 #declare counter = 0; #declare posA = <0,0,0.5>; #while(counter < 130) #declare posA = vaxis_rotate(posA,y,5) + <0,0.1,0>; sphere{posA,0.8,1} #declare counter = counter+1; #end texture{ pigment{color rgb <1, 1, 1>} finish{ambient 0.3 diffuse 0.7} normal{bozo 5 scale 0.2} } } blob{ threshold 0.1 #declare counter = 0; #declare posA = <0,0,0.5>; #while(counter < 130) #declare posA = vaxis_rotate(posA,y,5) + <0,0.1,0>; sphere{posA,0.7,1} #declare counter = counter+1; #end texture{ pigment{color rgb <1, 1, 1>} finish{ambient 0.3 diffuse 0.7} } } translate -0.5*z } //flagile #macro flagile(AA) union{ #declare counter = 0; #declare pos1 = <0.1, 0,0>; #while(counter < 100) #declare pos2 = vaxis_rotate(pos1, y, AA)+<0,-0.15,0>; cylinder{pos1, pos2, 0.05} #declare pos1 = pos2; #declare counter = counter+1; #end sphere{pos2, 0.15} translate -0.1*x texture{ pigment{color rgb 0.5} finish{ambient 0.3 diffuse 0.7} } } #end //flagile2 #macro flagile2(AA,BB) union{ #declare counter = 0; #declare pos1 = <0,-0.5,0>; #declare vect = vnormalize(<AA, BB,0>)*0.15; #while(counter < 100) cylinder{pos1, pos1+vect, 0.05} #declare pos1 = pos1+vect; #declare vect = 0.15*vnormalize(vaxis_rotate(vaxis_rotate(vect,y,5),z,2)); #declare counter = counter+1; #end sphere{pos1,0.15} texture{ pigment{color rgb 0.5} finish{ambient 0.3 diffuse 0.7} } } #end union{ object{h_pylori} union{ object{flagile(10) rotate 20*z rotate 10*y} object{flagile(12) rotate 20*z rotate 95*y} object{flagile(10) rotate 20*z rotate 160*y} object{flagile(15) rotate 20*z rotate 299*y} rotate -26*z } object{flagile2(0.3,0.2) rotate 180*z translate posA+<0,0,0.5>} object{flagile2(0.2,0.2) rotate 180*z translate posA rotate 50*y} object{flagile2(0.2,0.1) rotate 180*z translate posA+<0,0,1> rotate 220*y} object{flagile2(0.1,-0.3) rotate 180*z translate posA rotate 20*y} translate -6*y rotate 120*z }