HTML

A számítás

2010.07.23. 08:20 | ind4x | Szólj hozzá!


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


#include <X11/Xlib.h>
#include <assert.h>
#include <unistd.h>


Display *dpy;
Window w;
GC gc;
int __gxx_personality_v0;



float s,v=0.6,c=1,dt,x[40],t[40];




void line(int x1,int y1,int x2,int y2,int szin)//vonal ki
{
    x1+=400;
    x2+=400;
    y1=600-y1;
    y2=600-y2;
   
    XSetForeground(dpy,gc,szin);
    XDrawLine(dpy, w, gc, x1,y1,x2,y2);
}



void drawtext(int x,int y,char *st)//szoveg ki
{
    x+=400;
    y=600-y;
   
    XDrawString(dpy,w,gc,x,y,st,strlen(st));
}
void marker(int a,int szin)//keresztet rak a pontra es kiirja a szamat
{
    char str[100];
    printf("%d : %f %f \n",a,x[a],t[a]);

    sprintf(str,"%d",a);
    drawtext((int)x[a]-10+a,(int)t[a]+10,str);   
   
    line((int)x[a],(int)t[a],(int)x[a]+10,(int)t[a],szin);       
    line((int)x[a],(int)t[a],(int)x[a]-10,(int)t[a],szin);       
    line((int)x[a],(int)t[a],(int)x[a],(int)t[a]+10,szin);       
    line((int)x[a],(int)t[a],(int)x[a],(int)t[a]-10,szin);       
}



void step(int a,int b,float vv,int szin)//lep egyet [b] az uj, [a]-bol indult
{
    x[b]=x[a]+vv*dt;
    t[b]=t[a]+dt;
    line((int)x[a],(int)t[a],(int)x[b],(int)t[b],szin);   
   
    marker(b,szin);    //keresztet rak a pontra es kiirja a szamat
}
int specrel()
{
    XSetForeground(dpy,gc,0x003000);
    for(int ii=0;ii<1000;ii+=20) XDrawLine(dpy, w, gc, ii,0,ii,800);
    for(int ii=0;ii<1000;ii+=20) XDrawLine(dpy, w, gc, 0,ii,1000,ii);

    x[0]=0;
    t[0]=0;
    s=50;

    {//hatso
        dt=(s/2)/(c+v);    step(0,1, -c,0xff00ff);//szinkronizalo jel hatra fel hajonyi

        dt=s/(c+v);        step(1,2, -c,0xff0000);//fenyora
        dt=s/(c-v);        step(2,3, c,0xff0000);

        dt=s/(c-v);        step(1,10,  c,0xffff00);//merendo jel
        dt=s/(c+v);        step(10,11, -c,0xffff00);
        dt=s/(c-v);        step(11,12,  c,0xffff00);
        dt=s/(c+v);        step(12,13, -c,0xffff00);

        dt=s/(c+v);        step(3,4, -c,0xff0000);//fenyora
        dt=s/(c-v);        step(4,5, c,0xff0000);
        dt=s/(c+v);        step(5,6, -c,0xff0000);

        dt=(x[5]-x[1])/v; step(1,5, v,0x00ff00);//kozepso csonak vege
        dt=(x[6]-x[2])/v; step(2,6, v,0x00ff00);//hatso csonak vege
    }
    {//elso
        dt=(s/2)/(c-v);        step(20,21, c , 0xff00ff);//szinkronizalo jel elore fel hajonyi

        dt=s/(c-v);        step(21,22, c , 0xff0000);//fenyora
        dt=s/(c+v);        step(22,23, -c , 0xff0000);
        dt=s/(c-v);        step(23,24, c , 0xff0000);//fenyora
        dt=s/(c+v);        step(24,25, -c , 0xff0000);
        dt=s/(c-v);        step(25,26, c , 0xff0000);//fenyora

        dt=(x[25]-x[21])/v; step(21,25, v,0x00ff00);//kozepso csonak eleje
        dt=(x[26]-x[22])/v; step(22,26, v,0x00ff00);//elso csonak eleje
    }
   
    marker(0,0xff00ff);//kezdo pont
   
    printf("t(23)-t(21)%f \n",(t[23]+t[21])/2);
   
   
    return 0;
}





int main()
{

    dpy  =  XOpenDisplay((0));
    w  =  XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0,0, 1000, 800, 0,0,0);
  
    XSelectInput(dpy, w, StructureNotifyMask);
    XMapWindow(dpy, w);
  
    gc  =  XCreateGC(dpy, w, 0, (0));
    XSetForeground(dpy,gc,0);
  
    for(;;) {    XEvent e;    XNextEvent(dpy, &e);    if (e.type  ==  MapNotify)break;    }
  
  
    specrel();
    XFlush(dpy);
    getchar();

    return 0;

}
 

 

A kép kilóg jobbra, ott vannak a számítási eredmények.

Jobb klikk, viewigame -el látható az egész, vagy , jobb oldali linkblogra klikkelve.
 https://m.blog.hu/st/store/image/specfinal.gif

 

Sajnos, van egy elírás a képen

    printf("t(23)-t(21)%f \n",(t[23]+t[21])/2);

Helyesen, mint látható a számítás nem külömbség, hanem a két pont közti érték.

    printf("(t(23)+t(21))/2 %f \n",(t[23]+t[21])/2);

 

A bejegyzés trackback címe:

https://store.blog.hu/api/trackback/id/tr822170210

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása