 // POV-Ray 3.6 / 3.7 Scene File "Round_Bottom_Flask_0_demo.pov"
// author: Friedrich A. Lohmueller, Sept-2013
// homepage: www.f-lohmueller.de
//--------------------------------------------------------------------------
#version 3.6; // 3.7;
global_settings{ assumed_gamma 1.0 }
#default{ finish{ ambient 0.1 diffuse 0.9 conserve_energy}}
//--------------------------------------------------------------------------
#include "colors.inc"
#include "textures.inc"
#include "glass.inc"
#include "metals.inc"
#include "golds.inc"
#include "stones.inc"
#include "woods.inc"
#include "shapes.inc"
#include "shapes2.inc"
#include "functions.inc"
#include "math.inc"
#include "transforms.inc"
//------------------------------------------------------------- Camera_Position, Camera_look_at, Camera_Angle
#declare Camera_Number = 1 ;
//-------------------------------------------------------------------------------------------------------<<<<<
#switch ( Camera_Number )
#case (0)
  #declare Camera_Position = < 0.00, 0.20, -1.00> ;  // front view
  #declare Camera_Look_At  = < 0.00, 0.20,  0.00> ;
  #declare Camera_Angle    =  45 ;
#break
#case (1)
  #declare Camera_Position = < 0.50, 0.30, -0.30>  ;  // diagonal view
  #declare Camera_Look_At  = < 0.00, 0.18,  0.00>  ;
  #declare Camera_Angle    =  30 ;
#break
#else
  #declare Camera_Position = < 0.00, 0.20, -1.00> ;  // front view
  #declare Camera_Look_At  = < 0.00, 0.20,  0.00> ;
  #declare Camera_Angle    =  45 ;
#break
#end // of "#switch ( Camera_Number )" -----------------------------
//------------------------------------------------------------------------------------------------------<<<<<
camera{ location Camera_Position
        right    x*image_width/image_height
        angle    Camera_Angle
        look_at  Camera_Look_At
      }
//------------------------------------------------------------------------------------------------------<<<<<
//------------------------------------------------------------------------
// sun -------------------------------------------------------------------
light_source{<-500,1500,-1500> color White*0.9}
light_source{ Camera_Position  color rgb<0.9,0.9,1>*0.1} 
// sky -------------------------------------------------------------------
sky_sphere{ pigment{ gradient <0,1,0>
                     color_map{ [0   color rgb<1,1,1>*0.6         ]//White
                                [0.1 color rgb<0.24,0.34,0.56>*0.8]//~Navy
                                [0.9 color rgb<0.24,0.34,0.56>*0.8]//~Navy
                                [1.0 color rgb<1,1,1>*0.6         ]//White
                              }
                     scale 2 }
           } // end of sky_sphere
//------------------------------------------------------------------------
 
fog { fog_type   2
      distance   2
      color     White*0.6 // rgb<1,0.89,0.7>*0.9  
      fog_offset 0.0
      fog_alt    0.1
      turbulence 1.8
    }
 
//------------------------------ the Axes --------------------------------
//------------------------------------------------------------------------
#macro Axis_( AxisLen, Dark_Texture,Light_Texture)
 union{
    cylinder { <0,-AxisLen,0>,<0,AxisLen,0>,0.05
               texture{checker texture{Dark_Texture }
                               texture{Light_Texture}
                       translate<0.1,0,0.1>}
             }
    cone{<0,AxisLen,0>,0.2,<0,AxisLen+0.7,0>,0
          texture{Dark_Texture}
         }
     } // end of union
#end // of macro "Axis()"
//------------------------------------------------------------------------
#macro AxisXYZ( AxisLenX, AxisLenY, AxisLenZ, Tex_Dark, Tex_Light)
//--------------------- drawing of 3 Axes --------------------------------
#declare Text_Rotate = <10,-45,0>;
union{
#if (AxisLenX != 0)
 object { Axis_(AxisLenX, Tex_Dark, Tex_Light)   rotate< 0,0,-90>}// x-Axis
 text   { ttf "arial.ttf",  "x",  0.15,  0  texture{Tex_Dark}
          rotate Text_Rotate scale 0.5 translate <AxisLenX+0.25,0.3,-0.05> no_shadow }
#end // of #if
#if (AxisLenY != 0)
 object { Axis_(AxisLenY, Tex_Dark, Tex_Light)   rotate< 0,0,  0>}// y-Axis
 text   { ttf "arial.ttf",  "y",  0.15,  0  texture{Tex_Dark}
          rotate Text_Rotate scale 0.5 translate <-0.85,AxisLenY+0.20,-0.05> no_shadow }
#end // of #if
#if (AxisLenZ != 0)
 object { Axis_(AxisLenZ, Tex_Dark, Tex_Light)   rotate<90,0,  0>}// z-Axis
 text   { ttf "arial.ttf",  "z",  0.15,  0  texture{Tex_Dark}
          rotate Text_Rotate scale 0.65 translate <-0.75,0.2,AxisLenZ+0.10> no_shadow }
#end // of #if
} // end of union
#end// of macro "AxisXYZ( ... )"
//------------------------------------------------------------------------

#declare Texture_A_Dark  = texture {
                               pigment{ color rgb<1,0.45,0>}
                               finish { phong 1}
                             }
#declare Texture_A_Light = texture {
                               pigment{ color rgb<1,1,1>}
                               finish { phong 1}
                             }

object{ AxisXYZ( 2.5, 13.8 , 8.5 , Texture_A_Dark, Texture_A_Light) scale 0.025}
//-------------------------------------------------- end of coordinate axes


// ground -----------------------------------------------------------------
//---------------------------------<<< settings of squared plane dimensions
#declare RasterScale = 0.05;
#declare RasterHalfLine  = 0.025;
#declare RasterHalfLineZ = 0.025;
//-------------------------------------------------------------------------
#macro Raster(RScale, HLine)
       pigment{ gradient x scale RScale
                color_map{[0.000   color rgbt<1,1,1,0>*0.6]
                          [0+HLine color rgbt<1,1,1,0>*0.6]
                          [0+HLine color rgbt<1,1,1,1>]
                          [1-HLine color rgbt<1,1,1,1>]
                          [1-HLine color rgbt<1,1,1,0>*0.6]
                          [1.000   color rgbt<1,1,1,0>*0.6]} }
 #end// of Raster(RScale, HLine)-macro
//-------------------------------------------------------------------------


plane { <0,1,0>, 0    // plane with layered textures
        texture { pigment{color White*1.1}
                  finish {ambient 0.25 diffuse 0.85}}
        texture { Raster(RasterScale,RasterHalfLine ) rotate<0,0,0> }
        texture { Raster(RasterScale,RasterHalfLineZ) rotate<0,90,0>}
        rotate< 0,0,0>
      }
//------------------------------------------------ end of squared plane XZ

//--------------------------------------------------------------------------
//---------------------------- objects in scene ----------------------------
//--------------------------------------------------------------------------
//-------------------------------------------------------
//---------------------------------------------------------------------materials / textures
#declare Glass_Material = 
material{ //---------------------------------------------------------------------  
          texture{ pigment{ rgbf <0.98, 0.98, 0.98, 0.95> }
                   finish { diffuse 0.1 reflection 0.1  
                            specular 0.8 roughness 0.0003 phong 1 phong_size 400}
                 } // end of texture -------------------------------------------- 
         interior{ ior 1.45   caustics 0.85
                 } // end of interior ------------------------------------------- 
      } // end of material ------------------------------------------------------ 
#declare Fill_Texture = 
          texture{ pigment{ rgbf <0.75, 0.98,  0.18, 0.7> } // end of texture 
                   finish { diffuse 0.5 reflection 0.2  
                            specular 0.8 roughness 0.0003 phong 1 phong_size 400}  
                          } // end texture
#declare Fill_Interior = 
         interior{ ior 1.45 caustics 0.5 
                 } // end of interior
//-------------------------------------------------------------------------------------//
#declare D = 0.000001;
#declare Glass_D = 0.004*1;
#declare Neck_Fillet_Radius=  0.050*1;
#declare Bowl_Radius = 0.100*1;
#declare Neck_Radius = 0.030*1;  
#declare Neck_Length = 0.100*1; 
//-------------------------------------------------------------------------------------//
#include "Round_Bottom_Flask_0.inc" 
//-------------------------------------------------------------------------------------// 

union{ 
object{ Round_Bottom_Flask_0 ( // A round-bottom flask  
                // declares: "Total_Height_of_Flask"
                Glass_D, //  0.050, // Glass_D, //
                Neck_Fillet_Radius, //0.050, // Neck_Fillet_R, // > 0 //radius neck base fillet // Hohlkehle 
                Bowl_Radius, // 0.100, // Bowl_Radius, // base bowl radius
                Neck_Radius, //0.030, // Neck_Radius, // neck radius
                Neck_Length, //0.100, // Neck_Length, //  0=non; neck linear length 
                1, // Merge_On, //  1 for transparent materials, else: 0 
              ) //---------------------------------------------------------------------//
        material{ Glass_Material }
      } // end flask
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
// filling -----------------------------------------------------------------------------
intersection{ 
 sphere{ <0,Bowl_Radius-Glass_D,0>, Bowl_Radius-Glass_D-D
         material{ texture { Fill_Texture } interior{Fill_Interior} }  
       } // end sphere
 box{ <-1.01,0,-1.01>,<1.01,0.65,1.01> scale Bowl_Radius
         material{ texture { Fill_Texture  
                             normal { ripples 1.5 scale 0.035 turbulence 0.2}}
                    interior{Fill_Interior} 
                 } // end of material -------------------
 } // end box 
 rotate<0,0,0> 
}//  end intersection of filling 

scale <1,0.5,1>*1
rotate<0,0,0> 
translate<0.00,0.00, 0.00>
} // end union
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------

        
 