global_settings { max_trace_level 10 photons { count 20000 autostop 0 media 100 jitter 0 } } camera{ //location <0,25,30> //look_at <0,0,0> location <0,30,45> look_at <0,0,-20> //look_at <-26,6,0> //location <6,6,-0> //look_at <0,6,0> } light_source{<20,30,-40> rgb<1,1,1> media_interaction off photons{reflection off refraction off}} // laser light_source{ <-26,6,0>, colour rgb<00,100,00> cylinder radius 1 falloff 1.1 tightness 1 parallel point_at <-10,6,0> media_interaction on } #declare lasercase = difference{ box{<2,2,4> <-2,-2,-4> pigment{rgb<0.4,0.5,1>} } cylinder{<0,0,-2> <0,0,4.1> 1 pigment{rgb<0.2,0.2,0.2>} } } #declare lasercasesupport= box{<2,2,1> <-2,-2,-1> pigment{rgb<0.4,0.5,1>} } #declare opticsframe = difference{ box{<2,4,0.5> <-2,-4,-0.5>} cylinder{<0,2,0.6> <0,2,-0.6> 1.7} //box{<1.9,3.9,0.4> <-1.9,-0.1,-0.4>} } #declare mirror = union{ object{opticsframe} cylinder{<0,2,0.4> <0,2,-0.4> 1.6999 pigment{rgb<0,0,0>} finish{ ambient 0 diffuse 0 reflection 1.0 } photons{ target reflection on refraction off collect off } } } #declare beamsplitter = union{ object{opticsframe} cylinder{<0,2,0.4> <0,2,-0.4> 1.6999 pigment{rgbt<0,0,0,1>} finish{ ambient 0 diffuse 0 reflection 0.5 } interior{ior 1.5} photons{ target reflection on refraction on collect off } } } #declare spreadlens1 = union{ object{opticsframe} intersection{ cylinder{<0,2,1> <0,2,-1> 1.71 }// end cylinder */ quadric{<1, 1, 0>, <0, 0, 0>, <0, 0, -1>, 0 inverse scale <3,3,1.1> translate<0,2,0.2> } quadric{<1, 1, 0>, <0, 0, 0>, <0, 0, -1>, 0 inverse rotate<0,180,0> scale <3,3,1.1> translate<0,2,-0.2> } pigment{rgbt<1,1,1,1>} finish{ ambient 0 diffuse 0 } interior{ior 1.5} photons{ target reflection off refraction on collect off } } } #declare spreadlens2 = union{ object{opticsframe} difference{ cylinder{<0,2,1> <0,2,-1> 1.71 }// end cylinder sphere{<0,2,8.2> 8} sphere{<0,2,-8.2> 8} pigment{rgbt<1,1,1,1>} finish{ ambient 0 //diffuse 0 } interior{ior 1.5} photons{ target reflection off refraction on collect off } } } #declare testblock = box{<8,9,1> <-8,-2,-1> pigment{rgb<1,1,1>} } object{lasercase rotate<0,90,0> translate<-26,6,0>} object{lasercasesupport rotate<0,90,0> translate<-28.5,2,0>} object{lasercasesupport rotate<0,90,0> translate<-23.5,2,0>} object{beamsplitter rotate<0,45,0> translate<0,4,0> pigment{rgb<1,0,0>}} //object{mirror rotate<0,45,0> translate<0,4,0> pigment{rgb<1,0,0>}} object{mirror rotate<0,-45,0> translate<0,4,-10> pigment{rgb<1,0,0>}} object{mirror rotate<0,-45,0> translate<-30,4,-10> pigment{rgb<1,0,0>}} object{mirror rotate<0,45,0> translate<-30,4,-40> pigment{rgb<1,0,0>}} object{mirror rotate<0,-45,0> translate<30,4,-40> pigment{rgb<1,0,0>}} object{mirror rotate<0,45,0> translate<30,4,0> pigment{rgb<1,0,0>}} object{spreadlens1 rotate <0,90,0> translate <-20,4,-40> pigment{rgb<1,0,0>}} object{spreadlens2 rotate <0,90,0> translate <20,4,-40> pigment{rgb<1,0,0>}} object{testblock rotate<0,-45,0> translate<-6.5,2,-41>} object{testblock rotate<0,45,0> translate<6.5,2,-41>} box{<50,50,50> <-50,0.0001,-50> hollow pigment{checker rgb<0.1,0.1,0.1> rgb<0.9,0.9,0.9>} interior{ media{ method 3 scattering{2, 0.01} } } }