ragon
2012.01.02
|
|
0 0
439
|
Mivel nyomat sem latom semmifele cafolatnak, tovabbra is allitom, hogy az elektromagneses kolcsonhatas egyszeru Bragg-diffrakcio.
50 anyaghullambol allo hullamcsomag mozgasa teridoben:
#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.2;//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 vf1=c*c/v1; float vf2=c*c/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);
float amp=0.0; float skala=1000.0;//nagyitas=10 normal=1000 float n=50.0; for(int i=0;i<50;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); amp+=sin(tav*k -time);//a hullam nem mozog a teridoben, csak igy latvanyosabb! }
amp/=n;
if(amp<0.0) gl_FragColor=vec4(-amp,0,0,1); else gl_FragColor=vec4(0,amp,0,1); }
|
Előzmény: ragon (438)
|
|