Fizika 2006
  • y3ls0
    #952
    Na akkor jöjjön mindenki kedvence, a fényóra



    /* cc ee.c /usr/lib/libX11.a /usr/lib/libXau.a /usr/lib/libXdmcp.a -lm */

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <X11/Xlib.h>


    Display *dpy;
    Window w;
    GC gc;
    #define NIL (0)





    void line(float x1,float t1,float x2,float t2,int col)
    {
    XSetForeground(dpy,gc,col);
    XDrawLine(dpy, w, gc, 250+(int)x1,500-(int)t1, 250+(int)x2,500-(int)t2 );
    }

    int main()
    {
    int i,j;

    dpy = XOpenDisplay(NIL);
    w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0,0, 1000, 600,0,0,0);
    XSelectInput(dpy, w, StructureNotifyMask);
    XMapWindow(dpy, w);

    gc = XCreateGC(dpy, w, 0, NIL);
    XSetForeground(dpy,gc,0x000);

    for(;;) { XEvent e;XNextEvent(dpy, &e);if (e.type == MapNotify) break; }



    for(i=0;i<600;i++)
    line(0-250,(float)i-100,1200-250,(float)i-100,0x442200);




    float tav,v2,x0,dt,s,b,x2,t2,x3,t3,x4,t4,x1,t1,v,c=1.0;
    tav=120.0;

    for(j=0;j<4;j++)
    {
    v=0.6;
    if(j>=2) v=-v;

    b=1.0/sqrt(1.0-v*v/(c*c));
    s=20.0;

    x1=0.0;if(j&1) x1=tav;
    t1=0.0;




    for(i=0;i<8;i++)
    {
    int c1=0xff0000,c2=0xffff00;
    v2=c;
    x0=0.0;
    if(j>=2) {x0=300.0;c2=0xff0000,c1=0xffff00;}



    dt=s/v2;//20
    t2=t1+dt;
    x2=x1+dt*c;
    line(x0+x1 ,t1,x0+x2 ,t2,c1);



    x3=(x1-v*t1)*b;
    t3=(t1-v*x1/(c*c))*b;

    x4=(x2-v*t2)*b;
    t4=(t2-v*x2/(c*c))*b;
    line(x0+x3 ,t3,x0+x4 ,t4,c2);

    t1=t2;
    x1=x2;



    dt=s/v2;
    t2=t1+dt;
    x2=x1-dt*c;
    line(x0+x1 ,t1,x0+x2 ,t2,c1);



    x3=(x1-v*t1)*b;
    t3=(t1-v*x1/(c*c))*b;

    x4=(x2-v*t2)*b;
    t4=(t2-v*x2/(c*c))*b;
    line(x0+x3 ,t3,x0+x4 ,t4,c2);

    t1=t2;
    x1=x2;
    }
    }


    x0=0.0;
    x1=0.0;
    t1=0.0;
    x2=tav;
    t2=tav/c;
    line(x0+x1 ,t1,x0+x2 ,t2,0x00ffff);

    x3=(x1-v*t1)*b;
    t3=(t1-v*x1/(c*c))*b;

    x0=300.0;
    x4=(x2-v*t2)*b;
    t4=(t2-v*x2/(c*c))*b;
    line(x0+x3 ,t3,x0+x4 ,t4,0x00ffff);


    x0=0.0;
    x1=tav;
    t1=tav/c;
    x2=x1-tav;
    t2=t1+tav/c;
    line(x0+x1 ,t1,x0+x2 ,t2,0x00ffff);

    x3=(x1-v*t1)*b;
    t3=(t1-v*x1/(c*c))*b;

    x0=300.0;
    x4=(x2-v*t2)*b;
    t4=(t2-v*x2/(c*c))*b;
    line(x0+x3 ,t3,x0+x4 ,t4,0x00ffff);





    XFlush(dpy);
    getchar();
    return 0;
    }