Itt van amirol az elobb irtam. Ket szemben halado hullam kozti osszes hullam{n=100 db} kialakit a teridoben egy hullamcsomagot, ami az adott KR-ben nem mozog. A hullamhossz ugy lehet megjeleniteni, hogy ranagyitunk skala=10.0-el, es letiltjuk az alabbi sort:
//amp.y+=cos(fazis);
A ket sebesseg {energia} nem csal v1=-c*0.4 es v2=c*0.4 lehet hanem pl v1=-c*0.3 v2=-c*0.5 is. Az energia kulonbseg a hullamcsomag szelesseget {es hullamhosszat} befolyasolja. Na es a vilagvonal doleset, ami a hullamcsomag sebessege, mivel teridoben van abrazolva minden.
{a szamitas nem komplex szamokkal tortent, csak forgo amplitudoval..}
{Az osszetevok megjelenitesenel az amp.y+=cos(fazis) sort mindig tiltani kell, mert ha nincs interferencia, a komplex hullamoknal az amplitudo minden fazisban 1!}
#ifdef GL_ES
precision highp float;
#endif
uniform vec2 resolution;
uniform float time;
uniform vec4 mouse;
#define pi 3.1415926
float radian=pi/180.0;
void main(void)
{
vec2 mouse2=mouse.xy/resolution.xy;
vec3 screen=vec3(gl_FragCoord.xy/resolution.xy,0.0);
float c=1.0,m=1.0,h=1.0;
float v1=-c*0.4;//0 -> 1
float v2= c*0.4;//v1 -> 1
float b1=1.0/sqrt(1.0-v1*v1/(c*c)); float l1=h/(m*b1*v1);
float b2=1.0/sqrt(1.0-v2*v2/(c*c)); float l2=h/(m*b2*v2);
float a1=atan(v1/c);
float a2=atan(v2/c);
vec3 p1=vec3(sin(a1),cos(a1),0.0);
vec3 p2=vec3(sin(a2),cos(a2),0.0);
l1*=sin(a1);
l2*=sin(a2);
vec2 amp=vec2(0.0,0.0);
float skala=100.0;//nagyitas
float n=100.0;
for(int i=0;i<100;i++)//n! hullamcsomag
{
float t=float(i)/n;
//t=0.0;//egyik osszetevo
//t=1.0;//masik
vec3 p3=p1+(p2-p1)*t;//linear interpolation
float hhossz=l1+(l2-l1)*t;
hhossz/=skala;
float k=pi*2.0/hhossz;
float tav=dot(screen,p3);
float fazis=tav*k ;
amp.x+=sin(fazis);
amp.y+=cos(fazis);
}
amp/=n;
float amp1=dot(amp,amp);
if(amp1<0.0) gl_FragColor=vec4(-amp1,0,0,1);
else gl_FragColor=vec4(0,amp1,0,1);
}