Location: PHPKode > projects > PHP Cad and Drawing Program > phpcad/povray/palms.inc
//an POV-Ray include file to create palm trees
//by Kurt Bangert
//http://www.travelnotes.de  

//this macro plants a palm tree at position
#macro palmtree(position)

#declare Palmcolor=color rgb <.5565,.533,.478>;

//a texture for the fronds
#declare ltex1=texture{
pigment {gradient z
	 turbulence <0.3,0.3,0.3>
          color_map {[0.0 color rgb<0,.5,0>]
                     [0.2 color rgb<0,.5,0>]
                     [0.2 color rgb<0,.3,0>]
                     [0.3 color rgb<0,.3,0>]
                     [0.3 color rgb<0,.5,0>]
                     [0.5 color rgb<0,.5,0>]
                     [0.5 color rgbt<1,1,1,1>]
                     [1   color rgbt<1,1,1,1>]}}}

//a texture for the dry fronds
#declare dtex1=texture{
pigment {gradient z
	 turbulence 0.3
          color_map {[0.0 color rgb<.6,.6,.6>]
                     [0.5 color rgb<.6,.6,.6>]
                     [0.5 color rgbt<1,1,1,1>]
                     [1   color rgbt<1,1,1,1>]}}}

//a texture for the trunk
#declare ttex1=texture{
pigment {gradient y
	 turbulence 0.3
          color_map {[0.0 Palmcolor]
                     [0.5 Palmcolor]
                     [0.5 Palmcolor*.8]
                     [1   Palmcolor*.8]}}}

#declare pyscale=3;

//declare a single palm frond with a coconut
#declare palmfrond=union{
 difference{
 union{
 difference{
 object{sphere {<0,1,0> 1}  scale <.5,pyscale,1.5>  }
 object{box{<-15,-15,-15><15,.5,15>} pigment{Clear}}
 }//end difference
 object{torus{.95,.05} rotate z*90 translate <0,1,0> scale <.5,pyscale,1.5> pigment {Green*.5}}
 }//end union
 object{box{<-15,-15,-15><15,15,0>} pigment{Clear}}
 object{cylinder{<-1,1,0><1,1,0> 1 }scale <1,pyscale,.7> pigment{Clear}}
 }//end difference
 object{sphere {<-.3,.2,0> .2} pigment{Palmcolor}}
}//end union
    
//declare a dry palm frond
#declare drypalmfrond=union{
 difference{  
  union{
  difference{
  object{sphere {<0,1,0> 1}  scale <.8,pyscale,.8> }  
  object{box{<-15,-15,-15><15,.5,15>} pigment{Clear}}
 }
 object{torus{.95,.05} rotate z*90 translate <0,1,0> scale <.8,pyscale,.8> pigment {Gray50}}
 }
 object{box{<-15,-15,-15><15,15,0>} pigment{Clear}}
 } 
 object{sphere {<-.3,.2,0> .2} pigment{Gray50}}
}   

 object{union{ 
      //one trunk
      object{difference{
       object{torus{20,.2} rotate z*90 translate z*20 texture{ttex1 scale 0.3}}
       object{box{<-250,250,-250><250,0,250>} pigment{Clear}}
       object{box{<-250,-250,15><250,250,250>} pigment{Clear}}
      }rotate y*360*rand(r1)
      }
      //fourteen palm fronds
      #declare j=0;
      #while (j<14) 
       object{palmfrond rotate -x*(rand(r1)*120+30) texture{ltex1 rotate x*((rand(r1)-.5)*10) scale 0.15} rotate y*rand(r1)*350 scale (rand(r1)*.4+.6)}
      #declare j=j+1;
      #end             
      //five old and dry palm fronds hanging down
      #declare j=0;
      #while (j<5) 
       object{drypalmfrond rotate -x*(rand(r1)*20+160) texture {dtex1 scale 0.1} rotate y*rand(r1)*360 scale (rand(r1)*.2+.2)}
      #declare j=j+1;
      #end  
     }
      //scale the palm tree and move it to position
      scale 1 translate position
     } //end of a single palmtree
     
#end //end of macro   



Return current item: PHP Cad and Drawing Program