#version unofficial 3.8; // povr #if (file_exists("version.inc")) #include "version.inc" #end #if (!Fork_povr) // This POV-Ray SDL code requires the povr fork. #error "This POV-Ray SDL code requires the povr fork." #end #declare Rad00_adc_bailout = 0.01; #declare Rad00_always_sample = off; #declare Rad00_brightness = 1; #declare Rad00_brilliance = off; #declare Rad00_count = 50; #declare Rad00_count2 = 500; #declare Rad00_error_bound = 0.1; #declare Rad00_gray_threshold = 0.1; #declare Rad00_low_error_factor = 0.5; #declare Rad00_max_sample = -99; #declare Rad00_media = off; #declare Rad00_maximum_reuse = 0.2; #declare Rad00_minimum_reuse = 0.015; #declare Rad00_nearest_count = 10; #declare Rad00_nearest_count2 = 8; #declare Rad00_normal = on; #declare Rad00_pretrace_start = 0.08; #declare Rad00_pretrace_end = 0.005; #declare Rad00_recursion_limit = 2; #declare Rad00_subsurface = off; global_settings { assumed_gamma 1 radiosity { adc_bailout Rad00_adc_bailout always_sample Rad00_always_sample brightness Rad00_brightness brilliance Rad00_brilliance count Rad00_count,Rad00_count2 error_bound Rad00_error_bound gray_threshold Rad00_gray_threshold low_error_factor Rad00_low_error_factor max_sample Rad00_max_sample media Rad00_media maximum_reuse Rad00_maximum_reuse minimum_reuse Rad00_minimum_reuse nearest_count Rad00_nearest_count,Rad00_nearest_count2 normal Rad00_normal pretrace_start Rad00_pretrace_start pretrace_end Rad00_pretrace_end recursion_limit Rad00_recursion_limit subsurface Rad00_subsurface } } #declare Grey50 = srgb <0.5,0.5,0.5>; background { color Grey50 } #declare Camera00 = camera { perspective location <5,4,-5.001> sky y angle 35 right x*(image_width/image_height) look_at <0,0,0> } #declare White = srgb <1,1,1>; #declare Light00 = light_source { <-50,250,-250>, White } #declare Red = srgb <1,0,0>; #declare CylinderX = cylinder { -1*x, 1*x, 0.01 color Red } #declare Green = srgb <0,1,0>; #declare CylinderY = cylinder { -1*y, 1*y, 0.01 color Green } #declare Blue = srgb <0,0,1>; #declare CylinderZ = cylinder { -1*z, 1*z, 0.01 color Blue } //--- #include "functions.inc" #declare R = 0.009; #declare ptA = <-0.0,-0.0,-2.0>; #declare ptB = <-0.0,-0.0,+2.0>; #declare Ax = ptA.x; #declare Ay = ptA.y; #declare Az = ptA.z; #declare Bx = ptB.x; #declare By = ptB.y; #declare Bz = ptB.z; // Function f_sphere, etc, defined in functions.inc #declare Fn00 = function (x,y,z,r,ax,ay,az,bx,by,bz) { f_sphere( f_labsweep(x,y,z,0,ax,ay,az,bx,by,bz), f_labsweep(x,y,z,1,ax,ay,az,bx,by,bz), f_labsweep(x,y,z,2,ax,ay,az,bx,by,bz)/2, r) } #declare Fn01 = function (x,y,z,r,ax,ay,az,bx,by,bz,_m) { f_min1to8pairs(8,0,_m, Fn00(x-0.05,y,z,r,ax,ay,az,bx,by,bz), Fn00(x+0.10,y,z,r,ax,ay,az,bx,by,bz), Fn00(x-0.15,y,z,r,ax,ay,az,bx,by,bz), Fn00(x+0.20,y,z,r,ax,ay,az,bx,by,bz), Fn00(x-0.25,y,z,r,ax,ay,az,bx,by,bz), Fn00(x+0.30,y,z,r,ax,ay,az,bx,by,bz), Fn00(x-0.35,y,z,r,ax,ay,az,bx,by,bz), Fn00(x+0.40,y,z,r,ax,ay,az,bx,by,bz), //--- Fn00(y-0.05,x,z,r,ax,ay,az,bx,by,bz), Fn00(y+0.10,x,z,r,ax,ay,az,bx,by,bz), Fn00(y-0.15,x,z,r,ax,ay,az,bx,by,bz), Fn00(y+0.20,x,z,r,ax,ay,az,bx,by,bz), Fn00(y-0.25,x,z,r,ax,ay,az,bx,by,bz), Fn00(y+0.30,x,z,r,ax,ay,az,bx,by,bz), Fn00(y-0.35,x,z,r,ax,ay,az,bx,by,bz), Fn00(y+0.40,x,z,r,ax,ay,az,bx,by,bz) ) } #declare Fn02 = function (x,y,z,r,ax,ay,az,bx,by,bz,_v,_m) { Fn01(f_dec2x_f32(_v,0),f_dec2x_f32(_v,1),z,r,ax,ay,az,bx,by,bz,_m) } #declare Fn03a = function (x,y,z) { Fn02(x,y,z,R,Ax,Ay,Az,Bx,By,Bz,f_rotate2d(x,y,z,2,180* z),0) } #declare Fn03b = function (x,y,z) { Fn02(x,y,z,R,Ax,Ay,Az,Bx,By,Bz,f_rotate2d(x,y,z,2,180*-z),0) } #declare Iso98 = isosurface { function { Fn03a(x,y,z) } contained_by { box { <-0.5,-0.5,-4>,<0.5,0.5,4> } } threshold 0 accuracy 0.0005 max_gradient 1.77 } #declare Iso99 = isosurface { function { Fn03b(x,y,z) } contained_by { box { <-0.5,-0.5,-4>,<0.5,0.5,4> } } threshold 0 accuracy 0.0005 max_gradient 1.77 } #declare Fn03ap = function (x,y,z) { Fn02(x,y,z,R,Ax,Ay,Az,Bx,By,Bz,f_rotate2d(x,y,z,2,180* z),10) } #declare Fn03bp = function (x,y,z) { Fn02(x,y,z,R,Ax,Ay,Az,Bx,By,Bz,f_rotate2d(x,y,z,2,180*-z),10) } #declare Black = srgb <0,0,0>; #declare BrightYellow1 = srgb <0.86275,0.61569,0.15294>; #declare EnglishBlue1 = srgb <0.04706,0.60392,0.62353>; #declare BrightYellow2 = srgb <0.88627,0.70196,0.19216>; #declare EnglishBlue2 = srgb <0.01961,0.68627,0.72157>; #declare BrightYellow3 = srgb <0.92549,0.82745,0.40784>; #declare EnglishBlue3 = srgb <0.07843,0.71765,0.78039>; #declare BrightYellow4 = srgb <0.94902,0.88627,0.58431>; #declare EnglishBlue4 = srgb <0.55686,0.81176,0.88235>; #declare ColorMap00 = color_map { blend_mode 2 blend_gamma 2.5 [ 0/10 Black ] [ 1/10 BrightYellow1 ] [ 2/10 EnglishBlue1 ] [ 3/10 BrightYellow2 ] [ 4/10 EnglishBlue2 ] [ 5/10 BrightYellow3 ] [ 6/10 EnglishBlue3 ] [ 7/10 BrightYellow4 ] [ 8/10 EnglishBlue4 ] [ 9/10 Black ] } #declare Pigment00a = pigment { function { Fn03ap(x,y,z) } color_map { ColorMap00 } } #declare Pigment00b = pigment { function { Fn03bp(x,y,z) } color_map { ColorMap00 } } #declare Normal00 = normal { granite 0.21 scale 0.167 } #declare Finish00 = finish { phong 0.33 phong_size 100 } #declare Texture00a = texture { pigment { Pigment00a } finish { Finish00 } normal { Normal00 } } #declare Texture00b = texture { pigment { Pigment00b } finish { Finish00 } normal { Normal00 } } #declare Obj00a = object { Iso98 texture { Texture00a } scale <1,1,2> } #declare Obj00b = object { Iso99 texture { Texture00b } scale <1,1,2> } #declare Union00 = union { object { Obj00a } object { Obj00b } } //--- scene --- camera { Camera00 } light_source { Light00 } object { CylinderX } object { CylinderY } object { CylinderZ } object { Union00 }