Skip to content

Instantly share code, notes, and snippets.

@DavidBiesack
Last active March 19, 2024 22:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DavidBiesack/5a66a93bb712b0f6bc07b664f324546f to your computer and use it in GitHub Desktop.
Save DavidBiesack/5a66a93bb712b0f6bc07b664f324546f to your computer and use it in GitHub Desktop.
gebegb.pov
// Persistence Of Vision raytracer version 3.0 file.
// Copyright 1998 David J. Biesack
// GEBEGB - inspired by the cover of Douglas R. Hofstadter's book,
// Go:del Escher and Bach: an Eternal Golden Braid
#version 3.7;
#include "colors.inc"
#include "textures.inc"
#include "woods.inc"
#include "stones.inc"
#include "glass.inc"
#include "rad_def.inc"
global_settings {
max_trace_level 12
ambient_light color White
// radiosity { Rad_Settings(Radiosity_Final, off, off) }
// photons { spacing 0.02 max_trace_level 5 }
}
#declare Offset = 4;
// background walls, floor
plane { x, -4*Offset texture { Spun_Brass scale .5 rotate <70,40,10>} } // texture { T_Stone35 scale .8 } } // left wall
plane { -z, -4*Offset texture { Sandalwood scale 2} } // { T_Stone35 scale 1.8 } } // back wall
plane { y, -4*Offset texture { Brushed_Aluminum scale 16 } } // { T_Stone29 scale 4 } } // floor
// Define letters with CSF instead of fonts/text objects;
// I can't find a font that is really just right, and the chars
// in chars.inc just don't cut it [pun intended]
// define letters centered at <0,0,0> for easier rotation
// this one's trivial...
#declare letter_E = prism {
linear_sweep // or conic_sweep for tapering to a point
linear_spline // linear_spline | quadratic_spline | cubic_spline | bezier_spline
-6, // height 1
6, // height 2
13, // number of points
<4,4> <-4,4> // left edge
<-4,-4> <4,-4> // bottom edge
<3, -2.5> // bottom bevel
<-2.5, -2.5> <-2.5, -0.5> // lower left inside edge
<0, -0.5> <0,1> <-2.5, 1> // middle, with bevel
<-2.5,2.5> <3, 2.5> <4,4> // top right bevel
rotate -90*x
}
#declare letter_G_legs =
prism {
linear_sweep // or conic_sweep for tapering to a point
linear_spline // linear_spline | quadratic_spline | cubic_spline | bezier_spline
-6, // height 1
6, // height 2
7, // number of points
<.5, -.5> <.5, -2> <2, -2> <2, -4> <3.5, -4> <3.5, -.5> <.5, -.5>
rotate -90*x
}
#declare letter_G =
union {
difference {
cylinder {
-6*z, 6*z, 4
}
union {
cylinder {
-7*z, 7*z, 2.5
}
prism {
linear_sweep // or conic_sweep for tapering to a point
linear_spline // linear_spline | quadratic_spline | cubic_spline | bezier_spline
-7, // height 1
7, // height 2
3, // number of points
<1,0> <5, 5>
<4,-4>
rotate -90*x
}
} // end union
} // end difference
object { letter_G_legs }
} // end union
#declare letter_B =
difference {
union {
box { <1, 4, -5> <-4, -4, 5> }
cylinder { <1, 2, -5> <1, 2, 5> 2 }
cylinder { <1.5, -1.5, -5> <1.5, -1.5, 5> 2.5 }
}
union {
cylinder { <1, 2, -6> <1, 2, 6> 1 }
box { <1, 3, -6> <-2.25, 1, 6> }
cylinder { <1, -1.5, -6> <1, -1.5, 6> 1.5 }
box { <1, 0, -6> <-2.25, -3, 6> }
}
}
#declare Triplet_Texture = texture {pigment { Brown_Agate } scale .83}
// Top trip-let
intersection {
object { letter_E rotate -90*y} // left wall -90*y
object { letter_G } // back wall
object { letter_B rotate 90*x } // floor
texture { Triplet_Texture }
translate 3*Offset*y
}
// Bottom trip-let
intersection {
object { letter_G rotate -90*y } // left wall
object { letter_E } // back wall
object { letter_B rotate 90*x } // floor
texture { Triplet_Texture }
}
// top down light
light_source {
0*x // light's position (translated below)
color rgb <1,1,1> // light's color
spotlight // this kind of light source
cylinder // this variation
translate <0, 6*Offset, 0>
point_at <0, 0, 0> // direction of spotlight
radius Offset*1.5 // hotspot (inner, in degrees)
tightness 20 // tightness of falloff (1...100) lower is softer, higher is tighter
falloff 80 // intensity falloff radius (outer, in degrees)
}
// lower right
light_source {
0*x // light's position (translated below)
color rgb <1,1,1> // light's color
spotlight // this kind of light source
cylinder // this variation
translate <6*Offset, 0, 0>
point_at <0, 0, 0> // direction of spotlight
radius Offset*1.5 // hotspot (inner, in degrees)
tightness 20 // tightness of falloff (1...100) lower is softer, higher is tighter
falloff 80 // intensity falloff radius (outer, in degrees)
}
// upper right
light_source {
0*x // light's position (translated below)
color rgb <1,1,1> // light's color
spotlight // this kind of light source
cylinder // this variation
translate <6*Offset, 3*Offset, 0>
point_at <0, 3*Offset, 0> // direction of spotlight
radius Offset*1.5 // hotspot (inner, in degrees)
tightness 20 // tightness of falloff (1...100) lower is softer, higher is tighter
falloff 80 // intensity falloff radius (outer, in degrees)
}
// lower left
light_source {
0*x // light's position (translated below)
color rgb <1,1,1> // light's color
spotlight // this kind of light source
cylinder // this variation
translate <0, 0, -6*Offset>
point_at <0, 0, 0> // direction of spotlight
radius Offset*1.5 // hotspot (inner, in degrees)
tightness 20 // tightness of falloff (1...100) lower is softer, higher is tighter
falloff 80 // intensity falloff radius (outer, in degrees)
}
// upper left
light_source {
0*x // light's position (translated below)
color rgb <1,1,1> // light's color
spotlight // this kind of light source
cylinder // this variation
translate <0, 3*Offset, -6*Offset>
point_at <0, 3*Offset, 0> // direction of spotlight
radius Offset*1.5 // hotspot (inner, in degrees)
tightness 20 // tightness of falloff (1...100) lower is softer, higher is tighter
falloff 80 // intensity falloff radius (outer, in degrees)
}
sphere {
<0, 0, 0>, 1
hollow
texture {
pigment {
gradient y
color_map {
[ 0.5 color rgb <0.0, 0.0, 0.5> ]
[ 1.0 color rgb <1.0, 1.0, 1.0>*0.7 ]
}
}
finish {
ambient color White*0.7
diffuse 0.6
specular 0
}
scale <1, 2, 1>
translate <0, -1, 0>
}
scale <1, 1, 1>*1000
}
camera {
location <17, 25, -17>
up <0,1,0> right <1,0,0> // adjust for square aspect ratio
look_at <0, 6, 0>
}
// See options in gebegb.ini
// Local Variables:
// compile-command: "start e:\\povray\\bin\\pvengine e:\\povray\\djb\\gebegb.ini"
// End:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment