|
|
"Walid" <wha### [at] onlinefr> wrote in message
news:web.43e36ccd4080b391666c08b10@news.povray.org...
>> >> Is it possible to simulate electrons interference with povray?
>> >> If yes, I would appreciate the help of someone on this topic?
>
> OK, let's forget about the "waves" interference part. Is it possible
> to simulate the "particle" interference where particles are randomly
> generating patterns of interference on a screen.
>
> Thanks
> Walid
>
Hi Walid,
I might be missing the point, but it seems to me that if you just want to
create a pattern on a surface that replicates an interference pattern, then
I can see two ways to do that in POV-Ray.
1. Use a function to create a pigment - I suspect it would be possible to
work out a function that uses the difference between the distance to one
slit and the distance to the other, then takes the remainder after dividing
that difference by the 'wavelength', returning a bright value where the
remainder is zero or equal to the 'wavelength' and fading to dark where the
remainder is half the wavelength.
2. Just position objects at the points of impact on the screen - If you
wanted a scatter of bright dots representing individual locations, you could
generate a random series of positions on a surface, then use the same sort
of calculation to determine whether you are going to show that dot or not.
The following example uses the second approach, with a series of spheres
being generated on an imaginary screen. The difference between the lengths
of the two potential paths is used to define how likely a dot is to be made
on the screen.
Hope this helps,
Regards,
Chris B.
camera {location <0,500,500> look_at <0,200,0>}
light_source{< 0, 0,-400> rgb 3}
#local SlitSeparation = 7;
#local SlitWidth = 3.5;
#local Wavelength = 1;
box {< -500,-200,-500>
<-SlitSeparation/2-SlitWidth/2,200,-501>
pigment {color rgb <0,1,1>}
}
box {<-SlitSeparation/2+SlitWidth/2,-200,-500>
< SlitSeparation/2-SlitWidth/2,200,-501>
pigment {color rgb <0,1,1>}
}
box {< SlitSeparation/2+SlitWidth/2,-200,-500>
< 500,200,-501>
pigment {color rgb <0,1,1>}
}
cylinder {< 0, 0,-1251>,< 0, 0,-1450>,8
texture {pigment {color rgb <1,0,1>}
finish {ambient rgb <1,0,1>}}
}
cylinder {< 0, 0,-1250>,< 0, 0,-1251>,5
texture {pigment {color rgb <1,1,0>}
finish {ambient rgb 10*<1,1,0>}}
}
#local MySphere = sphere {0,1
texture {pigment {color rgb <1,1,0>}
finish {ambient rgb 3*<1,1,0>}}
}
#local I = 1;
#local MySeed = seed(1);
#while (I<20000)
#local XCoord = 600 * (rand(MySeed)-0.5);
#local YCoord = 400 * (rand(MySeed)-0.5);
#local Difference =
vlength(<XCoord,0,0>-<-SlitSeparation,0,-500>)-vlength(<XCoord,0,0>-<SlitSeparation,0,-500>);
#local FringeDisplacement =
abs(abs(mod(Difference,Wavelength)/Wavelength)*2-1);
#if (rand(MySeed)<FringeDisplacement)
object {MySphere translate <XCoord,YCoord,0>}
#local I = I + 1;
#end
#end
Post a reply to this message
|
|