Gistrec

Траектория полета луны / версия 1

Jul 19th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.55 KB | None | 0 0
  1. //"Симулятор" полет луны вокруг Земли, версия 1
  2. //Траектория определяется 'наглядно', ибо я пока не все доделал.
  3. //1285 км в 1 пикселе (единице измерения)
  4. //значение integer (-2147483648..2147483647)
  5. uses graphABC;
  6. const W=800; H=620;
  7. var
  8.     x0,y0,time:integer;
  9.     {точки}x1,y1,x2,y2:real;
  10.     SUNspeedX,SUNspeedY,speedX,speedY,speed,F,a,s,i:real;    
  11.     label endS;
  12.     begin
  13.   SetWindowCaption('Хоть кто-то читает название окон');//Устанавливает заголовок окна
  14.   SetWindowSize(W,H);//Установка размеров окна;
  15.   SetWindowIsFixedSize(true);//Устанавливает, можно но ли изменять размеры окна вручную (растягивать)
  16.   CenterWindow;//Устанавливает окно по центру монитора.
  17. x0:=windowwidth div 2;{определяем центр экрана по Х}
  18. y0:=windowheight div 2;{определяем центр экрана по Y}
  19. //line(0,y0,windowwidth,y0);{чертим ось Х}
  20. //line(x0,0,x0,windowheight);{чертим ось Y}
  21.     setpenwidth(3);{ширина текущего пера}
  22.     circle(x0,y0,round(6400/200));
  23.     speed:=1000;//начальная скорость луны
  24.     x1:=0; y1:=300;
  25.     x2:=585; y2:=300;
  26. for time:=0 to 30000 do begin
  27. sleep(5);
  28. {*10^23}F:=66754.5{гравитац.п 10^-11}*73477{луна 10^22}*59726{земля 10^24}/(sqrt((x1*1285*1285*x1+y1*1285*1285*y1))*sqrt((x1*x1*1285*1285+y1*1285*1285*y1)));//сила, с которой притягиваются два косм тела
  29.   a:=F/7.3477;//ускорение луны 'к Земле'
  30.   //i:=time/100*time/100;
  31.     SUNspeedX:=x1/a;
  32.     SUNspeedY:=y1/a;
  33.      speedX:=(x1-x2)/speed;
  34.      speedY:=(y1-y2)/speed;
  35.     x1:=x1-speedX;y1:=y1-speedY;
  36.     x2:=x2-speedX-SUNspeedX;y2:=y2-speedY-SUNspeedY;
  37.   if abs(round(y1))>325 then goto endS;//стоп программы
  38.   if abs(round(x1))>400 then goto endS;//Если вышло за границы окна
  39.   setpixel(x0+round(i)+round(x1),y0{-round(time/100)}-round(y1),clRed);
  40.   setpixel(x0+round(i),y0{-round(time/100)},clBlue);
  41.   textout(1,1,'x='+round(x1)+'  ');
  42.   textout(50,1,' y='+round(y1)+'  ');
  43.   textout(1,15,'F='+round(F)+'  10^23');
  44.   textout(1,30,'R='+round(sqrt(x1*x1+y1*y1))*1285+' км');
  45.   textout(1,45,'a='+a);
  46.   textout(1,45,'Скорость='+sqrt(speedX*speedX+speedY*speedY)*1285);
  47.  end;
  48. endS:
  49. end.
Advertisement
Add Comment
Please, Sign In to add comment