//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
//klein-ish
#declare F1= function(u,v){cos(u)*(cos(u/2)*(sqrt(2)+cos(v))+(sin(u/2)*sin(v)*cos(v)))}
#declare F2= function(u,v){sin(u)*(cos(u/2)*(sqrt(2)+cos(v))+(sin(u/2)*sin(v)*cos(v)))}
#declare F3= function(u,v){-1*sin(u/2)*(sqrt(2)+cos(v))+cos(u/2)*sin(v)*cos(v)}
//-------------------------------------------------------------------------------------------------
#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
     <-2*pi,-2*pi>, < 2*pi, 2*pi>,// range within to calculate surface: <u min, v min>,<u max, v max>.
      100,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 
   ) //---------------------------------------------------------------------------------------------
  
   texture {  // inside texture
   //  uv_mapping
   //  pigment{ color rgb <1,1,1> }
    // pigment{ checker color rgb <0.5,0.0,0.1> rgb <1,1,1> scale <0.02,0.025,0.01>}
     finish { specular 0.25}
   pigment {
      marble
      scale <.1 ,.1 ,.1 >
      rotate <45,0,0>
      colour_map {
         [0.0, rgbf <1,1,1,0> ]
         [0.2, rgbf <1,1,1,0> ]
         [0.4, rgbf <1,1,1,0.98>]
         [1.0, rgbf <1,1,1,0.98>]
      }
   }
   finish {
      specular 0.4
      roughness 0.05
      irid {
         0.3
         thickness 0.2
         turbulence 0.1
      }      
   }
   } // 
   /*
   interior_texture{            //  outside (interior_texture)
     uv_mapping
     pigment{ checker color rgb <0.0,0,0.0> rgb <1,0.9,0.9>  scale <0.02 ,0.025,1>}
     finish { phong 0.5 }
   } // 
   */
   scale< 1,1,1>*0.6
   rotate< 0, 0,0>
   translate< 0, 0, 0 >
} // end of object 
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
