#version 3.8; global_settings { assumed_gamma 1 } #declare Grey50 = srgb <0.5,0.5,0.5>; background { Grey50 } #declare Camera00 = camera { perspective location <3,3,-3.001>*0.65 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,150,-250>, White } #declare Red = srgb <1,0,0>; #declare CylinderX = cylinder { -1*x, 1*x, 0.01 pigment { Red } } #declare Green = srgb <0,1,0>; #declare CylinderY = cylinder { -1*y, 1*y, 0.01 pigment { Green } } #declare Blue = srgb <0,0,1>; #declare CylinderZ = cylinder { -1*z, 1*z, 0.01 pigment { Blue } } #include "functions.inc" #declare Fn00p = function (x,y,z) { f_sphere(x,y,z,0.5) } #declare Fn00n = function (x,y,z) { max(1e-5,min(0.5,-f_sphere(x,y,z,0.5))) } #declare Fn01n = function (x,y,z) { max(1e-2,min(0.2,-f_sphere(x,y,z,0.5))) } #declare Fn00p_Placed = function (x,y,z,X,Y,Z) { Fn00p(x-X,y-Y,z-Z) } #declare Fn00n_Placed = function (x,y,z,X,Y,Z) { Fn00n(x-X,y-Y,z-Z) } #declare Fn01n_Placed = function (x,y,z,X,Y,Z) { Fn01n(x-X,y-Y,z-Z) } #declare FnTotal = function (x,y,z) { // isosurface function #if (frame_number=1) // Upper left Fn00p_Placed(x,y,z,+0.0,0.0,+0.0)+ max( Fn00n_Placed(x,y,z,+0.1,0.0,+0.1), Fn00n_Placed(x,y,z,-0.1,0.0,-0.1)) #elseif (frame_number=2) // Upper right Fn00p_Placed(x,y,z,+0.0,0.0,+0.0)+ Fn00n_Placed(x,y,z,+0.1,0.0,+0.1)*0.0+ Fn00n_Placed(x,y,z,-0.1,0.0,-0.1)*1.0 #elseif (frame_number=3) // Lower left Fn00p_Placed(x,y,z,+0.0,0.0,+0.0)+ Fn00n_Placed(x,y,z,+0.1,0.0,+0.1)+ Fn00n_Placed(x,y,z,-0.1,0.0,-0.1) #elseif (frame_number=4) // Lower right Fn00p_Placed(x,y,z,+0.0,0.0,+0.0)+ Fn01n_Placed(x,y,z,+0.1,0.0,+0.1)+ Fn01n_Placed(x,y,z,-0.1,0.0,-0.1) #end } #declare Iso99 = isosurface { function { FnTotal(x,y,z) } contained_by { box { -1.0,1.0 } } threshold 0 accuracy 0.0005 max_gradient 1.45 pigment { Green } finish { brilliance 3 } } //--- scene --- camera { Camera00 } light_source { Light00 } object { CylinderX } object { CylinderY } object { CylinderZ } object { Iso99 rotate y*-22}