|  |  | I have double spaced each line, if any of the lines have wrapped around, 
unwrap them before running.
//**********************************************************
//
//  FILE : diamond.pov
//  SCENE: A diamond in it's best display of colors
//  DATE : Sept 2002  
//  EMAIL: marcch.AT.videotron.DOT.ca
//  Copyright 2002, Marc Champagne, Please ask!
//
//**********************************************************
 
#include "colors.inc"
/*******************/
/* SCENE QUALITIES */
/*******************/
#declare   PhotonCount = 9000;
#declare       Photons = yes;
#declare   Dispersions = yes;
#declare   Reflections = yes;
#declare          Iors = yes;
#declare     AreaLight = no;
#declare     FullScene = yes;
#declare  FilterAmount = .98;
#declare DiamondColor  = .98;
#declare    Dispersion = 1.02;
#declare           Ior = 2.417;
/*******************/
/* DEBUGGING STUFF */
/*******************/
#declare     DebugAxis = no;
#declare   DebugColors = no;
#declare  CrossSection = no;
#declare     DebugCuts = no;
/****************/
/* DIAMOND MATH */
/****************/
#declare                      Diameter = 1;
#declare                        Radius = Diameter    / 2;
#declare                   CrownHeight = Diameter    * ( 16.2 / 100 );
#declare                   GirdleDepth = Diameter    * ( 01.0 / 100 );
#declare                 PavillonDepth = Diameter    * ( 43.1 / 100 );
#declare                  OverallDepth = CrownHeight + GirdleDepth + 
PavillonDepth;
#declare                    TableWidth = Diameter    * ( 53.0 / 100 );
#declare                   TableRadius = TableWidth  / 2;
#declare          CrownBazelFacetAngle = 34.50;
#declare           CrownStarFacetAngle = 20.00;  // Ideal = 15.00, unable 
to find exact specs for placing these facets
#declare    CrownUpperGirdleFacetAngle = 39.22;  // Ideal = 42.00, unable 
to find exact specs for placing these facets
#declare                   GirdleAngle = 90.00;
#declare PavillonLowerGirdleFacetAngle = 42.75;
#declare            PavillonFacetAngle = 40.75;
/*******************/
/* GLOBAL SETTINGS */
/*******************/
global_settings {
  
  #if ( Photons )
    photons { count PhotonCount
              //save_file "diamond.ph"
              //load_file "diamond.ph"
            }
  #end
  
  max_trace_level 60
}
  
  
/*******************/
/* DEBUG STUFF     */
/*******************/
#declare Size = .002;
#if ( DebugAxis )
  object { cylinder { < -300,    0,    0 >, < 300,    0,   0 >, Size } 
pigment { color <1,0,0> } no_shadow }
  object { cylinder { <    0, -300,    0 >, <   0,  300,   0 >, Size } 
pigment { color <0,1,0> } no_shadow }
  object { cylinder { <    0,    0, -300 >, <   0,    0, 300 >, Size } 
pigment { color <0,0,1> } no_shadow }
  
  object { cylinder { < -300, OverallDepth,    0 >, < 300, OverallDepth,   
0 >, Size } pigment { color <1,0,0> } no_shadow }
  object { cylinder { < -300, PavillonDepth,   0 >, < 300, PavillonDepth,  
0 >, Size } pigment { color <1,0,0> } no_shadow }
  object { cylinder { < -300, PavillonDepth+GirdleDepth,    0 >, < 300, 
PavillonDepth+GirdleDepth,   0 >, Size } pigment { color <1,0,0> } 
no_shadow }  
                                                                    
  object { cylinder { <   .5, -300,    0 >, <  .5,  300,   0 >, Size } 
pigment { color <0,1,0> } no_shadow }
  object { cylinder { <  -.5, -300,    0 >, < -.5,  300,   0 >, Size } 
pigment { color <0,1,0> } no_shadow }
  
  object { cylinder { <  -.265, -300,    0 >, < -.265,  300,   0 >, Size } 
pigment { color <0,1,0> } no_shadow }
  object { cylinder { <   .265, -300,    0 >, <  .265,  300,   0 >, Size } 
pigment { color <0,1,0> } no_shadow }
#end
/************************/
/* DIAMOND CONSTRUCTION */
/************************/
#if ( DebugCuts )
  #declare Cut   = union        { sphere { 0, .02 } sphere { -y*.02, .01 } 
pigment { rgb <1,0,0> } no_shadow }  
  #declare Stone = union        {
#else
  #declare Cut   = object       { plane  { y, 0.00 } }
  #declare Stone = intersection {
#end
/*******************/
/* TABLE           */
/*******************/
  object {  Cut                               
    translate y * OverallDepth                #if ( DebugColors ) pigment { 
rgb <0,1,1> } #end
  }
/***********************/
/* CROWN - STAR FACET  */
/***********************/
  #declare Faces = 8;  
  #declare  Turn = 0;
  #while ( Turn < Faces )
    object { Cut
      rotate    -z * CrownStarFacetAngle
      translate  x * TableRadius
      translate  y * ( OverallDepth - .0075 )     // Unable to find exact 
data for these facets
      rotate     y * 360 / Faces / 2
      rotate     y * 360 / Faces * Turn       #if ( DebugColors ) pigment { 
rgb <0,1,0> } #end
    }
    #declare Turn=Turn+1;
  #end
  
  
/************************/
/* CROWN - BAZEL FACET  */
/************************/
  #declare Faces = 8;  
  #declare  Turn = 0;
  #while ( Turn < Faces )
    object { Cut
      rotate    -z * CrownBazelFacetAngle
      translate  x * Radius
      translate  y * ( PavillonDepth + GirdleDepth )
      rotate     y * 360 / Faces * Turn       #if ( DebugColors ) pigment { 
rgb <1,0,0> } #end
    }
    #declare Turn=Turn+1;
  #end
/******************************/
/* CROWN - UPPER GIRDLE FACET */
/******************************/
  #declare Faces = 16;  
  #declare  Turn = 0 ;
  #while ( Turn < Faces )
    object { Cut
      rotate    -z * CrownUpperGirdleFacetAngle
      translate  x * ( Radius -.01 )
      translate  y * ( PavillonDepth + GirdleDepth )
      rotate     y * 360 / Faces / 2
      rotate     y * 360 / Faces * Turn       #if ( DebugColors ) pigment { 
rgb <1,0,1> } #end
    }
    #declare Turn=Turn+1;
  #end
/*******************/
/* GIRDLE          */
/*******************/
  #declare Faces=32;  
  #declare Turn=0;
  #while (Turn<Faces)
    object { Cut
      rotate    -z * GirdleAngle      
      translate  x * ( Radius - .01 )
      rotate     y * 360 / Faces * Turn       #if ( DebugColors ) pigment { 
rgb <1,1,0> } #end
      translate  y * PavillonDepth    // not needed, only used for visual 
when Debug is ON
    }
    #declare Turn=Turn+1;
  #end
/*********************************/
/* PAVILLON - LOWER GIRDLE FACET */
/*********************************/
  #declare Faces = 16;  
  #declare  Turn = 0;
  #while ( Turn < Faces )
    object { Cut
      rotate    -z * ( ( 90 - PavillonLowerGirdleFacetAngle ) + 90 )
      rotate     y * 360 / Faces * Turn
      rotate     y * 360 / Faces / 2          #if ( DebugColors ) pigment { 
rgb <0,1,.5> } #end
      translate -y * .0225
    }
    #declare Turn=Turn+1;
  #end
/*********************/
/* PAVILLON - FACET  */
/*********************/
  #declare Faces = 8;  
  #declare  Turn = 0;
  #while ( Turn < Faces )
    object { Cut
      rotate     z * ( ( 90 - PavillonFacetAngle ) + 90 )
      rotate     y * 360 / Faces * Turn       #if ( DebugColors ) pigment { 
rgb <1,1,1> } #end
    }
    #declare Turn=Turn+1;
  #end
/*******************/
/* CULET           */
/*******************/
  object { Cut
    rotate     z * 180
    translate  y * .02
  }
/*******************/
/* DEBUG           */
/*******************/
  #if ( CrossSection ) object { Cut rotate -x*90 pigment { rgb <1,1,1> } } 
#end
  
} 
/************************/
/* DIAMOND'S PROPERTIES */
/************************/
#declare Diamond = object {
  Stone
  pigment  { rgb        DiamondColor
             filter     FilterAmount
           }
  finish   { ambient    0.1
             diffuse    0.4
             specular   0.8
             roughness  0.003
             phong      1
             phong_size 300
             #if ( Reflections ) reflection { 0.2, 0.1  fresnel  metallic }  
#end
           }
  interior { #if ( Iors )                  ior        Ior                             
  
#end
             #if ( Photons & Dispersions ) dispersion Dispersion  
dispersion_samples 10  #end
                }
                 
  #if ( Photons ) photons { target 1 refraction on reflection on } #end
        
  bounded_by {
    box { < -Radius-.1,    OverallDepth+.1, -Radius-.1 >,
          <  Radius+.1,                -.1,  Radius+.1 >
        }
  }
  
}
/***********************/
/* THE COMPLETED SCENE */
/***********************/
camera {
  location   < 0, 2, -4 > 
  look_at    < 0, 0, 0 >
  direction  z
}
#if ( FullScene )
  
  light_source { < -5, 30, -10 >, rgb 1      
                 #if ( AreaLight ) area_light x*4, y*4, 2, 2  adaptive 1  
jitter #end
                 parallel
                 point_at <0,0,0>
               }
  box          { <-15,-1,-15>, <15,0,15>
                 pigment { rgb <.3,.4,.5> }
                 finish  { ambient .3 diffuse .4 }
                 #if ( Photons ) photons { target 1 refraction off 
reflection off } #end
               }
               
#else
  light_source { < 25, 50, -100 >, White } 
  
#end
object { Diamond  rotate     z * PavillonFacetAngle   // Make it lean on 
its side (crown facing -x)
                  translate -x * 1
       }
object { Diamond  rotate    -x * PavillonFacetAngle   // Make it lean on 
its side (crown facing -z)
       }       
object { Diamond  rotate     x * PavillonFacetAngle   // Make it lean on 
its side (crown facing +z)
                  translate  x * 1.2
       }       
//**********************************************************
-- 
(MIKA) Marc Champagne
marcch.AT.videotron.DOT.ca
Montreal, CANADA
Post a reply to this message
 |  |