//*PMRawBegin // starfield generator #declare s = seed(17); #declare m = 100000; // stellar distance #declare pit2 = 6.283185307; #declare pid2 = 1.57079632; #declare n=0; #while (n < 5000) // count of stars #declare ha= rand(s) * pit2; #declare va= rand(s) * pid2; #declare hm= cos(va) * m; #declare mx = cos(ha) * hm; #declare my = sin(va) * m; #declare mz = sin(ha) * hm; #declare sr1 = 75; // smallest stellar radius #declare sr2 = 200; // largest stellar radius #declare sr = (sr2-sr1) * rand(s) + sr1; sphere { <0, 0, 0> sr // stellar radius translate pigment { color <1,1,1> } finish { ambient 1.0 // self-illuminating diffuse 0.0 } } #declare n=n+1; #end //*PMRawEnd // Note to myself: using 120,000 photons // at present to render the 6-beam raytrace // diagram. // // Eyepiece focal distance -9.5. union { //*PMName Telescope difference { //*PMName Dissector group union { union { //*PMName Optical scope components union { //*PMName Front Glass Assembly intersection { //*PMName Secondary Mirror Assembly cylinder { <-1, 0, 0>, <0, 0, 0>, 2 pigment { color rgb <0, 0, 0> } scale 1 rotate <0, 0, 0> translate <0, 0, 0> } sphere { <29, 0, 0>, 30 finish { reflection { rgb <1, 1, 1> } } scale 1 rotate <0, 0, 0> translate <0, 0, 0> } } cylinder { //*PMName Glass Plate <-0.2, 0, 0>, <0.2, 0, 0>, 6 pigment { color rgbt <0.23922, 0.54902, 0.81961, 1> } hollow false } translate <12, 16, 0> } difference { //*PMName Primary Mirror Assembly difference { //*PMName Parabolic Mirror // Create a parabolic mirror by taking // the CSG difference between // a cylinder and a quadric. The // quadric terms: // // 1 * x^2 // 1 * z^2 // -1 * y // // Meaning x^2 + z^2 - y = 0, // or y = x^2 + z^2 // // Adjust y for desired focal length (fl): // // y = r^2 / 4 fl // // r = mirror radius // // for this mirror, radius 6, // focal length 24: // // y = 6^2 / 4 * 24 = .375 // // cylinder { <0, 0, 0>, <0, 3, 0>, 1 } quadric { <1, 0, 1>, <0, 0, 0>, <0, -1, 0>, 0 translate y*1 } finish { reflection { rgb <1, 1, 1> } } scale <6, 0.34, 6> photons { target collect off } pigment { color rgbt <1, 1, 1, 1> } rotate z*(-90) } cylinder { //*PMName Eyepiece Opening <-2, 0, 0>, <1, 0, 0>, 0.81 hollow false } translate <-8, 16, 0> } union { //*PMName Eyepiece // Disable this eyepiece lens to get // a clear view of the light path. // // Latest focus number: -9.5 intersection { //*PMName Eyepiece Lens sphere { <-3.9192, 0, 0>, 4 } sphere { <3.9192, 0, 0>, 4 } interior { ior 1.5 } pigment { color rgbt <0.13725, 0.61176, 0.8, 1> } } translate <-9.4 - clock * .2, 16, 0> } } union { //*PMName Scope tube and mounting union { //*PMName Union of scope tube and eyepiece difference { //*PMName Eyepiece Parts cylinder { <-2, 0, 0>, <-10, 0, 0>, 1 hollow false } cylinder { //*PMName eyepiece opening <-1.9, 0, 0>, <-10.1, 0, 0>, 0.8 pigment { color rgb <0.05, 0.05, 0.05> } hollow false } hollow } difference { //*PMName Scope Tube Parts difference { //*PMName Tube Cylinder cylinder { //*PMName Outer Cylinder <-8.2, 0, 0>, <13, 0, 0>, 6.2 hollow } cylinder { //*PMName Inner cylinder <-7.8, 0, 0>, <13.1, 0, 0>, 6 pigment { color rgb <0.05, 0.05, 0.05> } hollow } hollow false } cylinder { //*PMName Eyepiece Opening <-10, 0, 0>, <-2, 0, 0>, 0.81 hollow } hollow false } rotate <0, 0, 0> translate y*16 } union { //*PMName Scope Mount union { //*PMName Side Support cylinder { //*PMName Mount <0, 0, 1>, <0, 0, -1>, 1.5 translate y*16 hollow false } box { //*PMName Vertical <-2.5, 0, -0.5>, <2.5, 16, 0.5> } cylinder { //*PMName Bearing <0, 0, 0.55>, <0, 0, -0.55>, 3.5 translate y*16 hollow false } translate z*7.2 hollow false } cylinder { //*PMName Ground Post <0, 0, 0>, <0, -36, 0>, 2 scale 1 rotate <0, 0, 0> translate <0, 0, 0> } union { //*PMName Side Support cylinder { //*PMName Mount <0, 0, 1>, <0, 0, -1>, 1.5 translate y*16 hollow false } box { //*PMName Vertical <-2.5, 0, -0.5>, <2.5, 16, 0.5> } cylinder { //*PMName Bearing <0, 0, 0.55>, <0, 0, -0.55>, 3.5 translate y*16 hollow false } translate z*(-7.2) hollow false } cylinder { //*PMName Revolving Base <0, 0.5, 0>, <0, -0.5, 0>, 8 } pigment { color rgb <0.0705882, 0.027451, 0.137255> } translate <0, 0, 0> rotate <0, 0, 0> finish { specular 0.1 reflection { rgb <0.109804, 0.109804, 0.109804> } } hollow false } rotate <0, 0, 0> } } // Enable "Dissecting Box" to show the scope's // insides, including the light paths. } pigment { color rgb <0.0745098, 0.0941176, 0.666667> } finish { } translate y*30 rotate y*(-90) hollow false } difference { //*PMName Aperture Plate box { //*PMName Plate <-0.01, -30, -30>, <0.01, 30, 30> scale 1 rotate <0, 0, 0> translate <0, 0, 0> hollow false } union { //*PMName Holes cylinder { <-0.1, 0, 0>, <0.1, 0, 0>, 0.05 translate y*5.5 hollow false } cylinder { <-0.1, 0, 0>, <0.1, 0, 0>, 0.05 translate y*4 hollow false } cylinder { <-0.1, 0, 0>, <0.1, 0, 0>, 0.05 translate y*2.5 hollow false } cylinder { <-0.1, 0, 0>, <0.1, 0, 0>, 0.05 translate y*(-2.5) hollow false } cylinder { <-0.1, 0, 0>, <0.1, 0, 0>, 0.05 translate y*(-4) hollow false } cylinder { <-0.1, 0, 0>, <0.1, 0, 0>, 0.05 translate y*(-5.5) hollow false } hollow false } translate <1000, 46, 0> pigment { color rgb <0, 1, 0.0156863> } hollow false } // To change the position or orientation // of the scope, go the the last items in // the list for "Telescope", find and use // the "translate" and "rotate" items there. // There are many other similar translate // and rotate functions deeper in the tree, // but they will just make your life complicated. global_settings { adc_bailout 0.0039216 ambient_light rgb <0.490196, 0.490196, 0.490196> assumed_gamma 1.5 max_trace_level 20 max_intersections 25 noise_generator 2 photons { count 0 jitter 0 autostop 1 } } light_source { //*PMName Photon Light <100000, 46, 0>, rgb <0, 5, 5> spotlight radius 3 falloff 3 point_at <0, 46, 1> media_interaction off media_attenuation off photons { refraction on reflection on } } plane { <0, 1, 0>, 0 pigment { agate agate_turb 0.5 turbulence <1, 0, 1> color_map { [ 0 color rgb <0, 0, 0> ] [ 0.5 color rgb <0.517647, 0.396078, 0.235294> ] } } scale 1 rotate <0, 0, 0> translate <0, 0, 0> hollow false } union { //*PMName Optical Target union { light_source { <-10, 10, -10>, rgb <3, 3, 3> spotlight radius 15 falloff 15 point_at <0, 0, 0> media_interaction off media_attenuation off } text { ttf "VeraSe.ttf" "Target" 0.05, <0, 0> translate <-1.65, -0.2, 0> pigment { color rgb <0.0470588, 0.443137, 0.0745098> } } box { <-0.1, -0.4, 0.2>, <3.4, 0.85, 0.05> translate <-1.65, -0.2, 0> pigment { color rgb <1, 1, 1> } hollow false } scale 60 } rotate <0, 0, 0> translate <0, 46, 50000> } sky_sphere { pigment { color rgb <0.0627451, 0, 0.470588> } } camera { //*PMName Eyepiece Cam perspective location <0, 46, -10> sky <0, 0, 1> direction <0, 0, 1> right <1.3333, 0, 0> up <0, 1, 0> look_at <0, 46, 1> angle 4 aperture 1.6 blur_samples 20 focal_point <0, 0, 100000> confidence 0.9 variance 0.008 } light_source { //*PMName Narrow camera Light <-12, 42, 0>, rgb <0, 0, 0> media_interaction off media_attenuation off } light_source { //*PMName Non-photon Light <-102.87, 94.621, -107.45>, rgb <2, 2, 2> spotlight radius 10 falloff 10 point_at <0, 46, 1> media_interaction off media_attenuation off } light_source { //*PMName Non-photon Light <117.97, 97.021, -113.22>, rgb <2, 2, 2> spotlight radius 10 falloff 10 point_at <0, 46, 1> media_interaction off media_attenuation off }