HTML

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

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


Display *dpy;
Window w;
GC gc;
#define gyok sqrt



void pont(int x,int y,int szin)
{
XSetForeground(dpy,gc,szin);
XDrawPoint(dpy, w, gc, x,y);
}
void vonal(int x1,int y1,int x2,int y2,int szin)
{
XSetForeground(dpy,gc,szin);
XDrawLine(dpy, w, gc, x1,y1,x2,y2);
}
float sqr(float n) { return n*n;}


int main()
{
int i,j,x;
float sugar[2];

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; }




for(x=0;x<7000;x+=100)
{
int db=0;
float ampx=0,ampy=0,ido;
float forras[]={100,50};
float cel[]={700,100};

for(j=-600;j<601;j++)
{
float felulet[]={(x+j)/10.0,400.0};//felulet pontjai x +j kornyezo pontok osszessege
sugar[0]=felulet[0]-forras[0]; sugar[1]=felulet[1]-forras[1];
float tavolsag=gyok(sugar[0]*sugar[0] + sugar[1]*sugar[1]);//forrastol a feluletig
sugar[0]=cel[0]-felulet[0]; sugar[1]=cel[1]-felulet[1];//felulettol a celig
tavolsag+=gyok(sugar[0]*sugar[0] + sugar[1]*sugar[1]);

float fazis=tavolsag*M_PI/10.0;
ampx+=cos(fazis);//forgo vektor, nem komplex szam!
ampy+=sin(fazis);
if(j==0) ido=tavolsag;//sebesseg 1

db++;
}

float m=sqr((float)db);
float amp=(ampx*ampx + ampy*ampy);//amp negyzete, nincs gyok!
int y=(int)(500.0-amp*100.0/m);;
pont(x/10,y,0xff);
pont(x/10,400,0x00ff00);
pont(x/10,1000-(int)(ido/2.0),0x0088ff);

int szin=(int)(amp*255.0/m);
vonal(x/10,400, (int)forras[0],(int)forras[1],szin);
vonal(x/10,400, (int)cel[0],(int)cel[1],szin);
}

for(x=0;x<7000;x+=100)
{
int db=0;
float ampx=0,ampy=0,ido;
float forras[]={100,50};
float cel[]={700,600};

for(j=-600;j<601;j++)
{
float felulet[]={(x+j)/10.0,400.0};
sugar[0]=felulet[0]-forras[0]; sugar[1]=felulet[1]-forras[1];
float tavolsag=gyok(sugar[0]*sugar[0] + sugar[1]*sugar[1]);
sugar[0]=cel[0]-felulet[0]; sugar[1]=cel[1]-felulet[1];
float tavolsag2=gyok(sugar[0]*sugar[0] + sugar[1]*sugar[1]);

float fazis=tavolsag*M_PI/10.0+tavolsag2*M_PI/8.0;
ampx+=cos(fazis);
ampy+=sin(fazis);
if(j==0) ido=tavolsag+tavolsag2;
db++;
}

float m=sqr((float)db);
float amp=(ampx*ampx + ampy*ampy);
int y=(int)(500.0-amp*100.0/m);;
pont(x/10,y,0xff0000);
pont(x/10,400,0x00ff00);
pont(x/10,1000-(int)(ido/2.0),0xff8800);

int szin=(int)(amp*255.0/m)<<16;
vonal(2+x/10,400, (int)forras[0],(int)forras[1],szin);
vonal(2+x/10,400, (int)cel[0],(int)cel[1],szin);

}
pont(100,50,0xffffff);
pont(700,100,0xffffff);
pont(700,600,0xffffff);


XFlush(dpy);
getchar();

return 0;
}

 

Szólj hozzá!

A bejegyzés trackback címe:

https://nemmtomm.blog.hu/api/trackback/id/tr881834785

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