//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
#declare Tex1=texture {
   pigment {
      marble
      turbulence <0.1,0,0>
      translate <-0.5,0,0>
      scale <0.025,1,1>
      rotate <0,0,90>
      warp {repeat 0.5*x flip x}
      warp {repeat 0.5*y flip y}
      colour_map {
         [0, rgbf 0]
         [1, rgbf <1,1,1,0.6>]
      }
   }
   finish {
      specular 0.4
      roughness 0.05
      irid {
         0.3
         thickness 0.2
         turbulence 0.1
      }      
   }
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
#declare a=0.3; #declare b=1; 
#declare c=0.2; #declare n=3;
#declare F1= function(u,v){(a*(1-v/(2*pi))*cos(n*v)*(1+cos(u))+c*cos(n*v))} 
#declare F2= function(u,v){(a*(1-v/(2*pi))*sin(n*v)*(1+cos(u))+c*sin(n*v))} 
#declare F3= function(u,v){(b*v/(2*pi)+a*(1-v/(2*pi))*sin(u))}
//-------------------------------------------------------------------------------------------------
#include "meshmaker.inc"
//-------------------------------------------------------------------------------------------------
object{ // Parametric(Fx,Fy, Fz, <UVmin>, <UVmax>, Iter_U, Iter_V, FileName)
   Parametric( // Builds a parametric surface out of three given functions. 
               // The uv_coordinates for texturing the surface come from the square <0,0> - <1,1>. 
      F1, F2, F3, //three functions
     <0, 0>, <2*pi, ToV(2*pi)>,// range within to calculate surface: <u min, v min>,<u max, v max>. 
      50,100, // resolution of the mesh in the u range and v range.
       "" // FileName: ""= non, "NAME.obj'= Wavefront objectfile, "NAME.pcm" compressed mesh file 
          // "NAME.arr" = include file with arrays to build a mesh2 from, 
          //  others: includefile with a mesh2 object 
   ) //---------------------------------------------------------------------------------------------
 //  no_shadow
   texture {  // inside texture
     uv_mapping
       pigment{ color rgb <1,0.8,0.8> }  
//     pigment{ checker color rgb <0.5,0.0,0.1> rgb <1,1,1> scale <0.025,0.0035,0.01>}
     finish { specular 0.25}
   } // 
   interior_texture{            //  outside texture
     uv_mapping  
     Tex1
//   pigment{ checker color rgb <0.0,0,0.0> rgb <1,0.9,0.9>  scale <0.05,0.0065,1>}
//   finish { phong 0.5 }
   } // 
   
   rotate<-90,0,0>
   scale< 1,1,-1>*1.9
   translate< 0, 0, 0 >
} // end of object 
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
