Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.abitu.ru/en2002/closed/viewwork.html?ext=26
Дата изменения: Fri May 5 15:24:01 2006
Дата индексирования: Tue Oct 2 02:09:37 2012
Кодировка:
#include
#include
#include

const double l=10000000;
const float V0=5000;
const float angle=0.5;
const float dt=500;
const double G=6.67e-11;
const double M=5.98e24;


double E;
float p;
float F;
float b;

float b_angle;
float S;

float x1;
float y1;
float r;
float Vi;
int xC;

long mash=100000;
int radius=3;
int x0=200;
int y0;
double dy;
double dx;

int gdriver = VGA;
int gmode = VGAHI;
int *block;

int main(void)
{

initgraph(&gdriver, &gmode, "d:\\tmp\\");


S=0.5*l*V0*sin(angle); //sectorial velocity

b=l*sin(angle);

b_angle=atan(b*V0*V0/(G*M)); //asimptote angle
E=sqrt(1+(b*V0*V0/(G*M))*(b*V0*V0/(G*M)));
p=(4*S*S) / (G*M); //focal parameter
F=p/(1+E); //focus


y1= (-1*l*sin(b_angle+angle)/mash);
x1= (l*cos(b_angle+angle)/mash)+F/mash;

xC= x0+F/mash;
y0= getmaxy()/2;

circle(xC, y0, 10);
circle(x1+x0, y0+y1, radius);

getimage(x1+x0-radius, y0+y1-radius,x1+x0+radius, y0+y1+radius, block);


while(!kbhit())
{

r=sqrt(y1*y1+(x1-F)*(x1-F));

Vi=sqrt(V0*V0 + 2*(G*M)/r);

dx=(Vi*dt)/sqrt(1 + ((p-(1-E*E)*x1)*(p-(1-E*E)*x1)) / (y1*y1))/mash;
dy=(dx * (p-(1-E*E)*x1) / y1)/mash;

if(y1<0)
{
putimage((x1+x0)-dx-radius, (y0+y1)-dy-radius, block ,OR_PUT);
x1=x1-dx;
y1=y1-dy;
}

else
{
putimage((x1+x0)+dx-radius, (y0+y1)-dy-radius, block ,OR_PUT);
x1=x1+dx;
y1=y1+dy;
}


};

closegraph();
return 0;
}